Zum Inhalt springen

[PHP]Alle Daten einer Tabelle anzeigen


Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen


<?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]

Link zu diesem Kommentar
Auf anderen Seiten teilen


<?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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

<?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.

Link zu diesem Kommentar
Auf anderen Seiten teilen


...
$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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

$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);

?>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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);

?>

Link zu diesem Kommentar
Auf anderen Seiten teilen

<?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;

???

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...