PDA

View Full Version : MySQL frage


lucky luke
9th February 2002, 15:11
Wie kann ich bei einer Datenbank mit den 3 feldern nickname, passwort und mail, die beiden letzteren felder ausgeben, wenn ich den nickname weiss ?

Critter
9th February 2002, 15:44
mysql chani nöd, aber sql ;)

select passwort, mail
from "weissdochnödwoher"
where nickname = "bla"
order by "wasduwotsch"

oder so ähnlich

Ry
9th February 2002, 15:45
tn = tabellenname

SELECT tn.passwort, tn.email WHERE tn.nickname = "fritzli"

edit: evtl. muss noch ein FROM rein, ist aber nicht immer zwingend...

btw. das sind doch grundlagen...würde mal ein tutorial lesen oder so...

fiNal
9th February 2002, 15:49
SELECT passwort, mail
FROM tablename
WHERE nickname='nickmame'

@gun: sql == mysql :]
oder fast

mit was proggst razi? php?

wenn ja, schauts so aus:

$variable = @mysql_query("SELECT passwort, mail FROM tablename WHERE nickname='$var_wo_nn_drin_ist'");
dann:
$variable = @mysql_fetch_array($variable);

dadurch wird $varbable ein Array mit Elementen
0 => inhalt von passwort
1 => inhalt von mail
passwort => inhalt von passwort
mail => inhalt von mail

davon ausgegangen, dass die query einen record mit nur einer row zurückgibt (da nickname warscheinlich ein unique-field ist). sonst musst mit while arbeiten
gl

Ry
9th February 2002, 15:51
Originally posted by fiNal
@gun: sql == mysql :]
oder fast

ja ich würd auch sagen oder fast...:)

fiNal
9th February 2002, 15:54
btw ry, braucht man als informatiker eigentlich SELECT * ? ich könnte mir vorstellen, dass das ziemlich verrufen ist (ich brauchs nicht).

lucky luke
9th February 2002, 17:10
ok, vielen dank für die hilfe. ich code mit PHP, und in meinem PHP buch steht wenig zu SQL:( ich versuchs jetzt mal :)

kann man etwas eigentlich auch nach zahlen ordnen, so das die grösste zahl oben ist und die kleinste unten ? wäre nämlich ziemlich praktisch für ein news system, gäste buch oder so....

fiNal
9th February 2002, 17:20
jop
mit 'ORDER BY [field_name] [ASC/DESC]'
asc steht natürlich für ascending (kleinste zahl zu erst, grösste zu letzt) und desc für descentding (genau das umgekehrte).
also z.b:
$tmp = @mysql_query("SELECT kA FROM table WHERE irgendwass ORDER BY id ASC");

PS: wird [ASC/DESC] weggelassen wird es gem. asc sortiert

lucky luke
9th February 2002, 17:35
ok vielen dank. wieso eigentlich das @ vor der query ?

lucky luke
9th February 2002, 17:57
ok, irgendwie geht mein script nicht. die url ist http://spass.stronghold.ch/aendern.php gebt dort als nick razigal ein. dann kommt diese schwule fehlermeldung. der quelltext ist:

<?php
if ( isset ( $nick ) )
{
//connect and select
$benutzer = "strongho_admin";
$passwort = "ASDASFASD";
$db = "strongho_members";
$link = mysql_connect( "localhost", $benutzer, $passwort );
mysql_select_db( $db, $link );

//Ausgabe der Daten in Tabelle
$ergebnis = mysql_query("SELECT passwort, mail, real_name, icq, admin FROM members WHERE nickname=$nick");
$datensatz = mysql_fetch_array( $ergebnis );
print "<table border=\"1\">";
print "<tr><td>Nick:</td><td>$nick</td></tr>";
print "<tr><td>Passwort:</td><td>$datensatz[passwort]</td></tr>";
print "<tr><td>Richtiger Name:</td><td>$datensatz[real_name]</td></tr>";
print "<tr><td>e-Mail:</td><td>$datensatz[mail]</td></tr>";
print "<tr><td>ICQ:</td><td>$datensatz[icq]</td></tr>";
print "<tr><td>Admin:</td><td>$datensatz[admin]</td></tr>";
print "</table>";
mysql_close( $link );
} else {

// Forumlar
print "<form action=$PHP_SELF method=GET>";
print "Nick: <input type=\"Text\" name=\"nick\" size=\"10\" maxlength=\"20\"><br>";
print "<input type=\"Submit\" value=\"abschicken\">";
}
?>

fiNal
9th February 2002, 18:57
was geht denn nicht? parse errors hats keine drin.

btw: ich würde anstatt print echo verwenden. echt geht auch übermehrere zeilen, also z.b.

echo"<table width=\"100%\">
<tr><td>blabla</td></tr>
</table>";

edit: vielleicht (glaub zwar nicht) liegts daran, dass du bei WHERE nick=$nick das $nick nicht in anführungszeichen hast... probier mal WHERE nick='$nick'
und häng mal hinter die query ein 'or die ("asdf");' an

lucky luke
9th February 2002, 18:59
es sollten daten in der tabelle stehen, geh jetzt noch mal schauen. ohne @ steht immer
Warning: Supplied argument is not a valid MySQL result resource in /home/strongho/public_html/spass/aendern.php on line 21 ! die daten die in der tabelle stehen sollten gibt es auch, und ich kann sie auch auslesen, eifach in diesem script nicht

fiNal
9th February 2002, 19:01
das @ unterdrückt fehlermeldungen btw. so ist, wenn die db mal wieder down ist, nicht der ganze screen mit error-messages überflutet

welche zeile ist bei dir 'line 21' ?

lucky luke
9th February 2002, 19:02
$datensatz = mysql_fetch_array( $ergebnis );
und $ergebnis ist ja
$ergebnis = mysql_query("SELECT passwort, mail, real_name, icq, admin FROM members WHERE nickname=$nick");

fiNal
9th February 2002, 19:04
d.h. das $ergebnis ein unglütiges mysql-result ist, also funktioniert deine query nicht

lucky luke
9th February 2002, 19:05
hmmm- müsste da ned irgendwie $link drein ?

fiNal
9th February 2002, 19:09


hast $nick mal in anführungszeichen gesetzt und bist sicher das $nick nen wert hat, der auch in der db vorkommt?

lucky luke
9th February 2002, 19:10
Originally posted by fiNal


etwas mit primary key oder index oder s0 ?

lucky luke
9th February 2002, 19:11
anführungszeichen ;) danke ! es geht ! jUHUHUUUUU !!

Ry
9th February 2002, 19:11
ich finde das php-mysql interface zum kotzen...

was macht fetch_array genau?

ka von dem zeugs...

da wär mir perl einiges lieber :D

btw. SELECT * ...naja...wenn man zu faul ist die ganze query auszuschreiben, dann macht mans...aber muss ja jeder selber wissen, was er seiner db zutraut...je nachdem hats plötzlich noch ganz andere attribute reingeschneit :)

fiNal
9th February 2002, 19:18
fetch_array formatiert den record in einen array.
aber frag mich jetzt nicht wie er das _genau_ macht...
oder definier du mal, wann genau was in der $_ variable steht :p

lucky luke
9th February 2002, 20:18
wie tut man mehrere daten auf einmal ändern mit einer update query ? also da heissts ja für eine änderung UPDATE members SET passwort='$passwort2' where nick='$nick' wie heissts dann wenn man auch noch das feld mail, icq etc. will ändern `?

Ry
10th February 2002, 03:08
mit kommas getrennt
password='$pw', impotenz='true', usw., WHERE blabla...

in der $_ variable steht (zumindest in perl) die parameter die einer funktion übergeben wurden...was das aber in php ist kann ich dir ned sagen...php kenn ich ned im detail...;)

midget
10th February 2002, 08:08
Originally posted by Ry
php kenn ich ned im detail...;)

warum glaub ich dir nicht?

Ry
10th February 2002, 19:53
ka

lucky luke
11th February 2002, 14:07
mein php/mysql news script rult :) aber etwas kann ich noch ned. wie geht das, das sich die post zb. nach mehr als 10 beiträgen auf 2 seiten verteilen ?

kiRby
11th February 2002, 15:48
Originally posted by midget


warum glaub ich dir nicht?

perlDBi ist sau änlich wie LITE und somit auch wie PHP.

Critter
11th February 2002, 17:05
Originally posted by razigal
mein php/mysql news script rult :) aber etwas kann ich noch ned. wie geht das, das sich die post zb. nach mehr als 10 beiträgen auf 2 seiten verteilen ?
also ich kenne php nicht, aber das ist ja egal. ich nehme an, du loopst irgendwo durch alle newsbeiträge. mach, dass dieser loop nur bis 10 geht (ich kenn php syntax nicht) und falls es mehr als 10 beiträge waren kannst du zuunters noch nen html-link printen, welcher auf das news archiv oder auf older news oder wie oder was auch immer linkt. bräuchtest dann aber wieder ne query. ok, vielleicht kannst du auch die andere query reusen, jenachdem wie flexibel die ist.

Ry
11th February 2002, 17:25
Originally posted by dRaiN


perlDBi ist sau änlich wie LITE und somit auch wie PHP.

was hat das mysql-DBI mit der allgemeinen php-syntax zu tun?

perl ist doch schon reichlich anders als php...rein schon nur der substitutionen wegen.

lucky luke
11th February 2002, 18:47
Originally posted by _TOP_GUN

also ich kenne php nicht, aber das ist ja egal. ich nehme an, du loopst irgendwo durch alle newsbeiträge. mach, dass dieser loop nur bis 10 geht (ich kenn php syntax nicht) und falls es mehr als 10 beiträge waren kannst du zuunters noch nen html-link printen, welcher auf das news archiv oder auf older news oder wie oder was auch immer linkt. bräuchtest dann aber wieder ne query. ok, vielleicht kannst du auch die andere query reusen, jenachdem wie flexibel die ist.

hmmm ich möchte eben das es einfach 10 pro seite anzeigt, also wenn es 35 beiträge hat das es 4 seiten macht