# mysql - php auslesen - tabellen?



## Maiky (25. September 2002)

Hallo zusammen.

Ich habe mir einige Tutorials hier zum Thema mySQL - php angesehen und auch selber ausprobiert. Danach habe ich auch in dem Forum keinen passenden Eintrag bezüglich Auslesung in Tabellen gefunden. In komplexen Scripten kommt das zum Teil raus, ist aber noch Stufen zu hoch für mich. Daher hier mal die Frage, wie ich die Ergebnisse der Datenbankabfrage in eine Tabelle bekomme.

Stand der Dinge:

Datenbank: 

1)mueller/thomas/aachen
2)schmitz/heribert/köln

Auslesen:

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * from $tabelle ";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

 while ($ausgabe = mysql_fetch_array ($result))
 {


 print ("$ausgabe[nname] &nbsp; $ausgabe[vname]&nbsp; $ausgabe[ort]<br><hr><br>");
 }

Durch dieses Auslesen erhalte ich die beiden Datensätze mit Leerzeichen getrennt und durch br und hr durch eine linie getrennt untereinander. Also richtig schön einfach, wie in versch. Tutorials hier erklärt.

Aber was muss ich nu machen, wenn ich die einzelnen Datenfelder in eine Tabelle haben möchte. Schliesslich ist die Ausgabe in einer Tabelle wesentlich ansehnlicher, weil alles schön untereinander steht, egal, ob der einer Herrmann und der andere Tim heisst.

Bin auf Eure Antworten gespannt und sag schon mal Danke.

Gruss Maiky


----------



## dave_ (25. September 2002)

die while schleife bleibt natürlich die selbe, du musst vor deiner while schleife die tabelle mit <table> 'eröffnen'.

die ausgabe wäre dann

```
<tr>
 <td>$ausgabe[nname]</td>
 <td>$ausgabe[vname]</td>
 <td>$ausgabe[ort]</td>
</tr>
```

so wird bei jeder neuen zeile in deiner datenbank-tabelle auch eine neue zeile in deiner html tabelle erzeug.


nach der while schleife musst du die tabelle mit </table> wieder schliessen.


----------



## Maiky (25. September 2002)

ausprobiert:

$dbanfrage = "SELECT * from $tabelle ";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

<table>

 while ($ausgabe = mysql_fetch_array ($result))
 {
 print
<tr>
 <td>$ausgabe[nname]</td>
 <td>$ausgabe[vname]</td>
 <td>$ausgabe[ort]</td>
</tr>
 }

</table>

Fehlermeldung: 
Parse error: parse error, unexpected '<' in d:\wampp13cs\htdocs\maik\liste3.php on line 42

das ist die Zeile, wo ich die Tabelle mit <table> eröffne.

Hab ich was falsch verstanden?


----------



## Maiky (25. September 2002)

echo "<table>";

 while ($ausgabe = mysql_fetch_array ($result))
 {
 print("<tr><td width=200>$ausgabe[nname]</td><td>$ausgabe[vname]</td><td>$ausgabe[ort]</td></tr>");
 }

echo "</table>";

jetzt gehts. Danke Dir!!!


----------



## dave_ (25. September 2002)

gern geschehen 

die anführungszeichen brauchst du schon immer bei print bzw echo.


----------



## Maiky (25. September 2002)

*generelle frage*

Hab da mal im Anschluss noch ne generelle Frage. Am Besten wieder mit einem Beispiel klargemacht:

1 müller thomas köln
2 schmitz günni aachen

Ich lasse nname, vname aus der Datenbank auslesen. Diese erscheinen in einer Tabelle (das geht ja jetzt  ). Der Nachname ist gleichzeitig ein Link. Dieser Link is dynamisch der entsprechenden id zugeordnet. Dh Müller hat einen Hyperlink hintersich, der zu 1.php führt. Weil 1 die id von Müller is. Klar oder? 
print("<tr><td><a href=$ausgabe[id].php>$ausgabe[nname]...usw

Jetzt möchte ich gerne, das in 1.php per auslesung alle Daten kommen evtl mit Foto usw. 

Jetzt kommt die Frage: Ist es überhaupt möglich, dass bei einem neuen Datensatz, zB der 4te, gleichzeitig eine 4.php erstellt wird, die dann genauso aussieht wie die 1.php nur mit den Inhalten, die den 4ten Datensatz auslesen?
Anders ausgedrückt: Ich erstelle eine 1.php, die den Datensatz 1 ausliest. Eine 2.php, die den Datensatz 2 ausliest usw bis zB 100.
Dann lade ich alle 100 php-Dateien hoch auf den Server. Müsste gehen. Nur, lege ich den 101ten Datensatz an, liest der alles aus in der Tabelle, aber es fehlt ja die 101.php , die ich verlinkt habe. File not found würde es dann heissen.

Würde mich freuen, wenn Ihr dazu Eure Kommentare schreiben würdet. 
Vielleicht is das auch alles zu kompliziert.

Gruss Maiky


----------



## loki2002 (25. September 2002)

NEIN um Gottes willen, mach ja keine 100 PHP Dateien .. da genuegt 1 Datei ... in der Du die Datenbank abfrage hast etc ... das Design bleibt doch immer gleich, oder hab ich das falsch verstanden?..

und an stelle von <a href=$ausgabe[id].php>$ausgabe[nname]...* machst Du dann einfach 

<a href=display.php?show=$id... ....

und in der datei 'display.php' 


```
$query = mysql_query("SELECT * from tabelle WHERE id ='$_GET[id]'");
$result = mysql_fetch_array($query) {
deine ausgabe etc hier..

}
```

und fertig.


----------



## Maiky (25. September 2002)

Was Du mir damit sagen willst verstehe ich sogar. ;-)

Also eine display.php die dann den Zusatz in der url oben enthällt, welche [id] er nehmen soll. Und nur diesen soll er anzeigen.

Aber ich bekomme folgende Fehlermeldung:

Notice: Undefined variable: ausgabe in d:\wampp13cs\htdocs\maik\display.php on line 16



line 16 in der display:

$dbanfrage = "SELECT * from table1 WHERE id ='$_GET[id]'  ";

???


----------



## loki2002 (25. September 2002)

ahso.. ja das liegt daran das ich es schon mit $_GET[] geschrieben hatte... versuchs mal so.

"SELECT * FROM table1 WHERE id ='$id'"


----------



## Maiky (25. September 2002)

nope

selber Fehler :-(


wenn ich die Variable raus nehme, und zB '2' eingebe, bekomm ich auch den 2ten Datensatz. Also die Funktion stimmt. Nur "noch" die Varialbe aus der url nehmen.

Bitte nächster Versuch ;-)


----------



## Sebastianus (26. September 2002)

Also undefined heißt sinngemäßt nicht definiert, als undefieniert! Lässt du die Varibale $id denn auch durch die URL übergeben oder rufst du das Script einfach so auf?!? Dann ist natürlich die Variable nicht gesetzt und es kommt dieser Fehler!

Ansonsten, auch ganz wichtig! Wenn du einen String, was eine Get-Variable meistens ist, in eine Abfrage einbinden möchtest gib immer ein " ... id = '".$id."' ..." Stringsmüssen nämlich immer in ' stehen!!! Das wird wahrscheinlich auch der Fehler sein!


----------



## Maiky (26. September 2002)

Ich habe die Variable jetzt schon zig mal anders geschrieben.
Die Seite display rufe ich immer von der Seite liste auf. Sonst kann er ja keine Zuordnung machen. 

Ich poste mal hier die beiden Sachen, da ich mir denke, dass er die Variable id nicht von der Übersichtsseite her übernimmt.

liste.php <- alle Daten werden angezeigt 

?php

$host = "localhost";
$user = "root";
$password = "";
$dbname = "tuto1";
$tabelle ="table2";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * from table2   ";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);


 while ($ausgabe = mysql_fetch_array ($result))
 {
 print("<a href=display.php?show=$ausgabe[id]>$ausgabe[nname]</a> &nbsp; $ausgabe[vname]<br>");
 }

mysql_close ($dbverbindung);
?>

display.php  <- nur der angeklickte Eintrag wird mit allen Einträgen ausgegeben

<?php

$host = "localhost";
$user = "root";
$password = "";
$dbname = "tuto1";
$tabelle ="table2";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * FROM table2 WHERE id ='"$ausgabe[id]"' ");

$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);



 while ($ausgabe = mysql_fetch_array ($result))
 {
 print("$ausgabe[nname]&nbsp; $ausgabe[vname]&nbsp; $ausgabe[ort]&nbsp; $ausgabe[land]");
 }

mysql_close ($dbverbindung);
?>

Wenn ich in der Liste einen Namen anklicke, zB den 2ten Eintrag, dann öffnet er mir auch korrekt: display.php?show=2

Nur in der display.php kommt die Fehlermeldung, als wenn er die Variable id nicht kennt bzw sie nicht gesetzt ist.

Vielleicht könnt Ihr das jetzt nachvollziehen.

Gruss Maiky


----------



## loki2002 (26. September 2002)

nee, das hier geht natuerlich nicht


```
$dbanfrage = "SELECT * FROM table2 WHERE id ='"$ausgabe[id]"' ");
```

$ausgabe[id] wird nicht uebergeben sondern die variable -> $show (welche die id beeinhaltet)


```
$dbanfrage = "SELECT * FROM table2 WHERE id ='$show'");
```

falls Du PHP 4.2.x installiert hast musst due anstelle von $show -> $_GET[show] einfuegen.


----------



## Maiky (26. September 2002)

Es tut mir leid, dass ich immer noch keine Erfolgsmeldung verkünden kann. Könnt Ihr nochmal helfen?

Parse error: parse error, unexpected ')' in 16

16: 
$dbanfrage = "SELECT * FROM table2 WHERE id ='$_GET[show]'");

php version: 4.2.3

Ich hab auch versucht: "'$_GET[show]'"  ---  "$_GET[show]"

keine chance. 
--------------------------------------------------------------------
print("<a href=display.php?show=$ausgabe[id]>$ausgabe[nname]</a>   $ausgabe[vname]<br>"); 
Da kann der Fehler doch nicht liegen, oder? Er gibt mir ja immer die richtige url aus. Aber irgendwie kann die display.php mit dem id gedöns nix anfangen.
--------------------------------------------------------------------

Gruss Maiky


----------



## loki2002 (26. September 2002)

sorry das war mein fehler ... aber fuer die zukunft, solltest Du selber auch mal etwas loesen koennen.. -> der fehler stand ja schon in der fehlermeldung ->1:1  

$dbanfrage = "SELECT * FROM table2 WHERE id ='$_GET[show]'";


----------



## Maiky (26. September 2002)

Endlich funzt es. Vielen vielen Dank !!!

Aber Du hast natürlich recht, ich hab vor lauter Fehlermeldungen und Experimenten gar nicht gesehen, dass die Fehlermeldung sich geändert hat. Das hätte ich natürlich sehen müssen.

Gelobe Besserung ;-)

Danke nochmal an alle!


----------



## Eiszwerg (3. Oktober 2002)

So, Ihr macht das hier so toll und ich konnte bisher auch gut folgen... nur habe ich jetzt folgende Fehelrmeldung:::

_Warning: Supplied argument is not a valid MySQL result resource in /usr/local/httpd/htdocs/kunden/cbn560/html/GanzerCW.php on line 21_ 

Die Fehlermeldung betrifft folgendes Skript:::

15 $dbverbindung = mysql_connect ($host, $user, $password);
16
17 $dbanfrage = "SELECT * from table1 WHERE id ='$show' "; 
18
19 $result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);
20
21 while ($Ausgabe = mysql_fetch_array ($result))
22 {
23 print ("$Ausgabe[Clanwar_ID] $Ausgabe[Datum] $Ausgabe[Gegner] $Ausgabe[Ergebnis] $Ausgabe[Bericht]<br><hr><br>");
24 }


Bitte helf mir... wenn ich die Einträge in der Übersicht anzeigen lasse, funzt die Zeile wunderbar... nur nicht in der Detail-Anzeige hier!

PS: Formatierung der Ausgabe ist *****  ... aber es geht hier ums Prinzip der Anzeige überhaupt...

Danke Für HILFEEEE


----------



## Eiszwerg (3. Oktober 2002)

Hat sich erledigt... wer blind abtippt ist selber schuld  

Hatte WHERE id anstelle von WHERE Clanwar_ID genommen... das war der Fehler...

Trotzdem Danke Fürs Reinschauen!


----------

