Moeki Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 Und zwar habe ich eine Tabelle bestehend aus 2 Feldern, diese möchte ich anzeigen lassen. $query="SELECT * FROM tbl_allianz"; Leider kann ich als Leihe nur auf eine Vorlage beruhend auf einer Abfrage unter einer bestimmten Bedingung zurückgreifen. <?php $link=mysql_pconnect("localhost","",""); mysql_select_db(tbl_allianz,$link); $query="SELECT * FROM tbl_allianz"; $result=mysql_query($query,$link); $anz=mysql_affected_rows($link); $row=mysql_fetch_array($result); echo "Nummer:$row[id_allianz]<br>"; echo "Name:$row[dt_aname]<br><br>"; mysql_close($link); ?> Klar dass das nicht funktioniert, weil ich mir ja alle Einträge anzeigen lassen will und keine Bedingungen stelle. Die Fehlermeldung lautet: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in J:\xampp\htdocs\gof\index.php on line 8 Was also auf folgende Befehlszeige zurückführen lässt: $row=mysql_fetch_array($result); Kann mir bitte jemand diesbezüglich auf die Sprünge helfen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 <?php $link=mysql_pconnect("localhost","",""); mysql_select_db(tbl_allianz,$link); // hier liegt der Fehler! // mysql_select_db($datenbankname, $link); $query="SELECT * FROM tbl_allianz"; $result=mysql_query($query,$link); $anz=mysql_affected_rows($link); $row=mysql_fetch_array($result); echo "Nummer:$row[id_allianz]<br>"; echo "Name:$row[dt_aname]<br><br>"; mysql_close($link); ?> [/PHP] Was zu deinem Fehler führt: Du gibt bei der Funktion mysql_select_db keinen Datenbanknamen an. Da, wo bei dir tbl_allianz (deine Tabelle) steht, muss der Name der Datenbank hin, in der deine Tabelle enthalten ist. Die Funktion mysql_query() versucht dann deine Abfrage auszuführen. Dabei tritt ein Fehler auf, weil du keine Datenbank gewählt hast. Daher wird $result mit "false" belegt. Mit "false" kann die Funktion mysql_fetch_array nichts anfangen und gibt dir darum diese Fehlermeldung aus. Beseitigung: Gib in der Funktion mysql_select_db den Namen der Datenbank an. [edit] ach ja, sollte eigentlich verschoben werden. [/edit] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 <?php // hier nur mysql_connect anstatt pconnect $link=mysql_connect("localhost","",""); mysql_select_db('meinDBName'); /* hier fehlten die '' und den link identifier brauchst du nur, wenn du mehr als eine DB ansprechen möchtest! Ausserdem brauchst du den DB namen, nicht den TBL namen */ $query="SELECT * FROM tbl_allianz"; // hier ebenfalls den link nur angeben, wenn du in deinem script mehr als eine DB verwendest $result=mysql_query($query); $anz=mysql_affected_rows($result); $row=mysql_fetch_array($result); echo "Nummer:$row[id_allianz]<br>"; echo "Name:$row[dt_aname]<br><br>"; mysql_close($link); ?> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 22. Juli 2004 Autor Teilen Geschrieben 22. Juli 2004 <?php $link=mysql_connect("localhost","",""); mysql_select_db('gof'); $query="SELECT * FROM tbl_allianz"; $result=mysql_query($query); $row=mysql_fetch_array($result); echo "Nummer:$row[id_allianz]<br>"; echo "Name:$row[dt_aname]<br><br>"; mysql_close($link); ?> Dankeschön. Jetzt gibt er den ersten Eintrag in der Liste aus, also muss ich nur noch ne Schleife einbauen, so dass er alle Rows auflistet. Richtig? Was wäre denn hierfür die beste Lösung? Schleifen kann ich nur für Turbo Pascal. :eek: Im Moment sind es 30 Reihen, sollen aber mehr werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 ... $result = mysql_query($query); while (($row = mysql_fetch_array($result)) { echo "Nummer: ".$row["id_allianz"]."<br>"; echo "Name: ".$row["dt_aname"]."<br>"; } mysql_close($link);[/PHP] In der while-Schleife lasse ich mir jeweils die nächste Zeile in die Variable $row schreiben. Wenn keine Zeile mehr übrig ist, liefert mysql_fetch_array() FALSE zurück und die Bedingung ist somit nicht mehr wahr. Es ist übrigens kein Fehler, daß ich zwei Klammern genommen habe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 22. Juli 2004 Autor Teilen Geschrieben 22. Juli 2004 Parse error: parse error, unexpected '{' in J:\xampp\htdocs\gof\index.php on line 23 Eine Klammer war zu viel. $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "Nummer: ".$row["id_allianz"]."<br>"; echo "Name: ".$row["dt_aname"]."<br>"; } mysql_close($link); Dankeschön. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 22. Juli 2004 Autor Teilen Geschrieben 22. Juli 2004 Eine Frage hätte ich noch. <?php $link=mysql_connect("localhost","",""); mysql_select_db('gof'); $query="SELECT * FROM tbl_spieler"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<tr><td>".$row["id_spieler"]."</td>"; echo "<td>".$row["dt_sname"]."</td>"; echo "<td>".$row["fi_allianz"]."</td>"; echo "<td>".$row["fi_rasse"]."</td></tr>"; } mysql_close($link); ?> Sieht dann im Endeffekt so aus. Nummer des Spielers 3 Name des Spielers Poek Allianz 2 Rasse 1 fi_allianz bezieht sich auf den Primärschlüssel id_allianz der tbl_allianz. fi_rasse bezieht sich auf den Primärschlüssel id_rasse der tbl_rasse. So wie ich es im Moment habe wird aber nur die entsprechende Nummer angezeigt. Ich möchte mir aber den jeweiligen Namen, also dt_aname und dt_rname anzeigen lassen. Quasi so: Nummer des Spielers 3 Name des Spielers Poek Allianz [hive] Rasse Thrale Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 SELECT * FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 22. Juli 2004 Autor Teilen Geschrieben 22. Juli 2004 $query="SELECT * FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz"; kann ich da die zweite beziehung auch noch mit ins query einfügen? LEFT JOIN tbl_rasse ON tbl_spieler.fi_rasse = tbl_rasse.id_rasse Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 SELECT * FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz LEFT JOIN tbl_rasse tbl_spieler.fi_rasse = tbl_rasse.id_rasse siehe dazu: http://dev.mysql.com/doc/mysql/de/JOIN.html Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 22. Juli 2004 Autor Teilen Geschrieben 22. Juli 2004 $query="SELECT * FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz LEFT JOIN tbl_rasse tbl_spieler.fi_rasse = tbl_rasse.id_rasse"; Da kommt dann aber ein Fehler. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in J:\xampp\htdocs\gof\index.php on line 49 <?php $link=mysql_connect("localhost","",""); mysql_select_db('gof'); $query="SELECT * FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz LEFT JOIN tbl_rasse tbl_spieler.fi_rasse = tbl_rasse.id_rasse"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<tr><td>".$row["id_spieler"]."</td>"; echo "<td>".$row["dt_sname"]."</td>"; echo "<td>".$row["dt_aname"]."</td>"; echo "<td>".$row["dt_rname"]."</td></tr>"; } mysql_close($link); ?> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 22. Juli 2004 Teilen Geschrieben 22. Juli 2004 "SELECT * FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz LEFT JOIN tbl_rasse ON tbl_spieler.fi_rasse = tbl_rasse.id_rasse" Was vergessen. :WD Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 23. Juli 2004 Autor Teilen Geschrieben 23. Juli 2004 Vorerst die letzte Frage :beagolisc <?php $link=mysql_connect("localhost","",""); mysql_select_db('gof'); $query="SELECT * FROM tbl_allianz"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<tr><td>".$row["id_allianz"]."</td>"; echo "<td>".$row["dt_aname"]."</td>"; echo "<td>X</td></tr>"; } mysql_close($link); ?> tbl_allianz id_anummer dt_aname tbl_spieler id_snummer dt_sname fi_allianz fi_rasse Anstatt des roten X möchte ich mir die Anzahl der Member der jeweiligen Allianz anzeigen lassen. Quasi wie viele Member in jeder Allianz sind. Irgendwas mit count aber die Syntax bzw. die Beziehungsberücksichtigung kann ich net. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 SELECT tbl_allianz.id_anummer, tbl_allianz.id_aname, COUNT(tbl_spieler.fi_allianz) AS a_anzahl FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_anummer GROUP BY tbl_allianz.id_aname Hoffe, daß ich nichts doppelt reingehauen oder vergessen habe. :-/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 23. Juli 2004 Autor Teilen Geschrieben 23. Juli 2004 und wie gebe ich dann a_anzahl in der echo anweisung wieder? tbl_allianz id_allianz dt_aname tbl_spieler id_spieler dt_sname fi_allianz fi_rasse <?php $link=mysql_connect("localhost","",""); mysql_select_db('gof'); $query="SELECT tbl_allianz.id_allianz, tbl_allianz.dt_aname, COUNT(tbl_spieler.fi_allianz) AS a_anzahl FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<tr><td>".$row["id_allianz"]."</td>"; echo "<td>".$row["dt_aname"]."</td>"; echo "<td>".$row["a_anzahl"]."/td></tr>"; } mysql_close($link); ?> Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in J:\apachefriends\xampp\htdocs\Gof\Index.php on line 33 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 und wie gebe ich dann a_anzahl in der echo anweisung wieder? echo "<td>".$row["a_anzahl"]."</td>"; ja genau so Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 23. Juli 2004 Autor Teilen Geschrieben 23. Juli 2004 geht leider nicht. guck mal bitte in den thread über deiner antwort :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 geht leider nicht. guck mal bitte in den thread über deiner antwort :-) muss aber so gehen hast du schon ma den select in einem SQL-Editor oder im PHPMyAdmin ausgeführt um zu sehen wie das resultset aussieht?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 23. Juli 2004 Autor Teilen Geschrieben 23. Juli 2004 jupp geht. auf das mit phpmyadmin hätte ich auch kommen können. jetzt werden aber keine allianzen mehr angezeigt, die noch keiner member haben (ich habe noch keine member eingetragen, die zu den jeweiligen allianzen gehören). also ist a_anzahl=0. kann ich mir das trotzdem anzeigen lassen? <?php $link=mysql_connect("localhost","",""); mysql_select_db('gof'); $query="SELECT tbl_allianz.id_allianz, tbl_allianz.dt_aname, COUNT( tbl_spieler.fi_allianz ) AS a_anzahl FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz GROUP BY tbl_allianz.dt_aname"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<tr><td>".$row["id_allianz"]."</td>"; echo "<td>".$row["dt_aname"]."</td>"; echo "<td>".$row["a_anzahl"]."</td></tr>"; } mysql_close($link); ?> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 du könntest auch den sql aufteilen. erst den der alles anzeigt, und dann nochma nen seperaten mit dem count() Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 30. Juli 2004 Autor Teilen Geschrieben 30. Juli 2004 <?php $link=mysql_connect("localhost","",""); mysql_select_db('gof'); $query="SELECT * FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz LEFT JOIN tbl_rasse ON tbl_spieler.fi_rasse = tbl_rasse.id_rasse ORDER BY dt_aname"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<tr><td>".$row["id_spieler"]."</td>"; echo "<td>".$row["dt_sname"]."</td>"; echo "<td>".$row["dt_aname"]."</td>"; echo "<td>".$row["dt_rname"]."</td></tr>"; } mysql_close($link); ?> Hier wird die Ausgabe nach dem Name der Allianz dt_aname sortiert. Kann ich eine zweite Sortieranweisung, die danach ausgeführt wird, einfügen? SELECT * FROM tbl_spieler LEFT JOIN tbl_allianz ON tbl_spieler.fi_allianz = tbl_allianz.id_allianz LEFT JOIN tbl_rasse ON tbl_spieler.fi_rasse = tbl_rasse.id_rasse ORDER BY dt_aname ORDER BY dt_sname; ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 30. Juli 2004 Teilen Geschrieben 30. Juli 2004 ORDER BY dt_aname, dt_sname; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 22. August 2004 Autor Teilen Geschrieben 22. August 2004 tbl_allianz id_allianz dt_aname tbl_spieler id_spieler dt_sname fi_allianz fi_rasse tbl_planet id_planet dt_pname fi_spieler tbl_rasse id_rasse dt_rname _______________ Folgende Abfrage zeigt mir alle Planeten mit den dazugehörigen Spielernamen! <?php $link=mysql_connect("localhost","",""); mysql_select_db('gof'); $query="SELECT * FROM tbl_planet LEFT JOIN tbl_spieler ON tbl_planet.fi_spieler = tbl_spieler.id_spieler ORDER BY dt_sname, dt_pname"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<tr><td>".$row["id_planet"]."</td>"; echo "<td>".$row["dt_pname"]."</td>"; echo "<td>".$row["dt_sname"]."</td></tr>"; } mysql_close($link); ?> Wie baut man hier nun mit ein, dass die Allianz des Spielers hier ebenfalls angezeigt wird und in der Reihenfolge Allianz, Spielername, Planetenname geordnet wird? Ich habe versucht, einen Fremdschlüssel in die Tabelle tbl_planet einzubauen, welcher sich dann auf fi_allianz der tbl_spieler bezieht, aber das geht technisch nicht. Danke für eure Hilfe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 22. August 2004 Teilen Geschrieben 22. August 2004 Hallo, versuch doch mal folgendes. SELECT * FROM tbl_allianz, tbl_planet LEFT JOIN tbl_spieler ON tbl_planet.fi_spieler = tbl_spieler.id_spieler WHERE tbl_allianz.id_allianz= tbl_spieler.fi_allianz ORDER BY Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 22. August 2004 Autor Teilen Geschrieben 22. August 2004 Funktioniert, Danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.