Guenny0815 Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 Hi, ich bin ein Anfänger in Sachen php + mysql und versuch mir grad mit Hilfe eines Buches die Sache selbst beizubringen. Allerdings scheiter ich gerade an der ersten Datenbankabfrage. Folgender Code: <? $host= "localhost"; $user= "root"; $pass= "leer"; $database= "test_db"; $dz = mysql_connect($host, $user, $pass); mysql_select_db($database, $dz); ?> <html> <head></head> <body> <? $sql = mysql_query("select * from test_db"); while ($ds = mysql_fetch_object($sql)) { $id = $ds -> ID; $name = $ds -> NAME; $vorname = $ds -> VORNAME; echo $id, $vorname, $name, "<br>"; } mysql_close($dz); ?> </body> </html>[/PHP] Ergibt Folgende Meldung: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\abfrage.php on line 7 Was sagt mir das? Bzw. was habe ich falsch gemacht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
trebstyle Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 da ich annehme, dass deine tabelle nicht test_db heißt (das ist die datenbank), muss es heißen: $sql = mysql_query("select * from deine_tabelle"); du kannst nur daten aus einer tabelle abfragen... (daß eine datenbank tabellen hat ist dir ja bekannt oder?) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guenny0815 Geschrieben 12. Dezember 2007 Autor Teilen Geschrieben 12. Dezember 2007 Danke :upps Im Buch steht an dieser Stelle test_tabelle Langsam verlier ich den Durchblick. Aber ich weiß, auf euch kann man sich verlassen. Nochmal Danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
trebstyle Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 bitte ;-) falls noch fragen kommen sind: ich versuche sie gerne zu beantworten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guenny0815 Geschrieben 12. Dezember 2007 Autor Teilen Geschrieben 12. Dezember 2007 Wo schreibe ich die HTML TAGS für die <table></table> hin um die Ausgabe in eine Tabelle zu packen. Ich hab jetzt rumprobiert aber es kommt nie eine Tabelle raus. :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thomas0 Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 Am besten ist, denke ich: Du erstellst eine HTML Tabelle so wie du sie haben willst und packst an den entsprechenden Stellen die Ausgaben aus der SQL Tabelle rein?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guenny0815 Geschrieben 12. Dezember 2007 Autor Teilen Geschrieben 12. Dezember 2007 Die Daten kommen ja aus der Schleife. Siehe oben. Ich kann doch die echo Anweisung nicht auserhalb der Schleife schreiben. Oder? Wie lege ich fest das der für jeden Datensatz ne neue Zeile anfängt? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thomas0 Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 Du kannst ja die Tabelle "anfangen" Dann die Schleife einbauen <tr><td>Ausgabe....</td></tr> Schleife zu Ende... Tabelle zu Ende.... So hast du eine Tabelle und fügst bei jedem Durchlauf der Schleife eine neue Zeile in die Tabelle hinein... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
trebstyle Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 eine tabelle in html kennst du ja, nehm ich mal an... <table> <tr> <td>Zeile 1 - Spalte 1</td> <td>Zeile 1 - Spalte 2</td> <tr> <tr> <td>Zeile 2 - Spalte 1</td> <td>Zeile 2 - Spalte 2</td> <tr> <table> das einzige, was du hier brauchst, ist eine schleife, die dir deine ganzen daten in zeile/spalten packt. wie du sicherlich weißt, kannst du auch mit zb. echo "<b>fetter text</b>"; [/PHP] html-code schreiben. so musst du mit allen html-tags umgehen, die du mit php-hilfe ausgeben möchtest. bei einer tabelle muss dann somit "<table> </table>" gesetzt sein, du benötigst es nur ein einziges mal. "<tr></tr>" als zeile (mit beliebig vielen spalten <td></td>) muss mehrmals generiert werden. das grobe muster: [PHP] echo "<table>"; #SCHLEIFE { echo "<tr>"; echo "<td>bisschen text</td>"; // hier müssen die variablen eingesetzt werden!! echo "<td>noch mehr text</td>"; // hier müssen die variablen eingesetzt werden!! echo "<tr>"; } echo "</table>"; für die #SCHLEIFE fügst du folgendes ein: while ($ds = mysql_fetch_object($sql)) << dies liefert dir die datenzeilen! die schleife generiert zeile für zeile in deiner tabelle. falls die schleife beendet ist, wird der end-tag der tabelle gesetzt. korrekt und etwas vereinfacht echo "<table>"; while ($ds = mysql_fetch_object($sql)) { echo "<tr><td>$ds->NAME;</td>"; echo "<td>$ds->VORNAME;</td><tr>"; } echo "</table>"; [/PHP] soweit alles klar? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thomas0 Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 Danke trebstyle, genau so meinte ich es auch! :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kein-tee Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\abfrage.php on line 7 Habt ihr euch eigentlich Zeile 7 mal angeschaut? mysql_select_db($database, $dz); Es scheint, dass der login nicht funktioniert hat. Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 Habt ihr euch eigentlich Zeile 7 mal angeschaut? Es scheint, dass der login nicht funktioniert hat. das wurde in posting #2 bereits angemerkt und in #3 bereits behoben s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kein-tee Geschrieben 12. Dezember 2007 Teilen Geschrieben 12. Dezember 2007 das wurde in posting #2 bereits angemerkt und in #3 bereits behoben Dies wurde nicht in Posting #2 und keinem weiteren angemerkt. Angemerkt wurde richtig, dass die entsprechende Tabelle falsch gesetzt war. Und dies war nicht in Zeile 7 .... Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
trebstyle Geschrieben 13. Dezember 2007 Teilen Geschrieben 13. Dezember 2007 wer sagt, dass die zeile 7 hier im quelltextauszug die echte zeile 7 ist? wichtig ist hier eher Warning: mysql_fetch_object():, denn dieses kommt nur einmal im quelltextauszug vor. und unbegründet kommt diese warnung nicht; auch wenn hier in zeile 7 was andres steht. lesen -> denken -> schreiben Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guenny0815 Geschrieben 13. Dezember 2007 Autor Teilen Geschrieben 13. Dezember 2007 Wie lang sollten eigentlich Datenbank abfragen dauern? Ich lerne mir die Sachen an um sie mal produktiv einzusetzen. Bin derzeit auch schon an meinem ersten Fall dran und muss für die Inventur ne Liste erstellen. Da habe ich 4 Tabellen. Tabelle 1 und 2 ca. 50000 einträge, Tabelle 2 ca. 25000 einträge und Tabelle 3 nur 12 Einträge. Aus diesen Tabellen muss ich eine Liste erstellen. Wenn ich diese Anfrage anschiebe steigt die CPU belastung meines Notebookes auf 50% und es passiert gar nichts. Nach ein paar Minuten bricht die Sache ab. Hier mal die Abfrage. Vielleicht kann man die auch noch etwas optimieren: select LG3_d.TEILENR, t01_d.TEILEBEZ1,t01_d.TEILEBEZ2,T02_D.LPLATZ, LG3_D.SOLLINVBEST, mengschl.mengenbez from t01_d, lg3_d, t02_d,mengschl where t01_D.TEILENR = lg3_d.TEILENR and t01_d.mengenschl = mengschl.mengenschl [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gurkenpapst Geschrieben 13. Dezember 2007 Teilen Geschrieben 13. Dezember 2007 Hi, 1. Relationenalgebra und SQL: Kartesisches Produkt - Wikibooks Du stellst in deiner Abfrage t02_d z.B. nicht in relation zu den anderen Tabellen. Daher wird hier ein Kreuzprodukt erzeugt. 2. Hast du deine Abfrage einmal direkt über die MySQL Konsole getestet? Es könnte hier z.B. sein das aufgrund der enormen Anzahl an Zeilen das PHP Skript länger als den verfügbaren Timeout benötigt, und der Browser ziemlich viel arbeit aufwenden muss um die abertausenden Tabellenzeilen in HTML tu rendern. Um die Abfrage zu optimieren müsste man zumindest eine genauere Tabellenbeschreibung bekommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guenny0815 Geschrieben 13. Dezember 2007 Autor Teilen Geschrieben 13. Dezember 2007 Das mit der t02_d ist mir auch aufgefallen. Nach genauer Prüfung der einzelnen Tabellen konnte ich die benötigten Daten auch aus der LG3_D ziehen. D.h. eine Tabelle weniger. Die komplette Liste dauert nun nur noch wenige Sekunden. :cool: Danke für eure Hilfe bis hier hin. Werd mich zu dem Thema sicher nochmal melden. Bin grad bissl am schwitzen. 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.