Hilfe bezüglich PHP

  • Hi erstmal, ich bin gerade dabei eine Seite zu programmieren, auf der man sich für diverse Seminare anmelden kann. Dazu brauche ich auch eine .php Datei, welche mir die Foren Tabellarisch ausgibt... was leider bisher nicht funktioniert un irgendwie bin ich gerade zu blöde den Fehler zu finden...

    Hier erstmal der Code:

    ...und das hier ist die Fehlermeldung:

    Code
    [B]Warning[/B]:  mysql_fetch_row(): supplied argument is not a valid MySQL result resource in [B]/www/htdocs/w00b48bf/html/php/seminar.php[/B] on line [B]33[/B]

    Die Seite wird normal aufgebaut, nur statt der Tabelle selbst wird eben das hier angezeigt. Bitte dringend um hilfe.


    MFG d3s4nN

  • Auf Linie 33 is dein Problem, wie du feststellst, wenn du die Fehlermeldung liest.
    Sprich, hier ist das Problem:

    PHP
    while($row = mysql_fetch_row($result)) {...
  • Diese Zeile ist nicht das Problem!!!

    Ändere

    PHP
    $result= mysql_query($sql);


    in

    PHP
    $result= mysql_query($sql)
       or die ("MySQL-Fehler: " . mysql_error());


    dann wird die MySQL schon sagen, wo der Hase im Pfeffer liegt.

  • Der Effekt dieser Veränderung ist lediglich, dass ich die gleiche Fehlermeldung nochmal bekomme, lediglich ohne den restlichen Seitenaufbau.

    MFG d3s4nN

  • füg mal nach deiner select zuweisung ein

    PHP
    print $sql;

    ein.
    anschließend machst dein phpmyadmin auf und kopierst dort die select anweisung rein.
    dort solltest dann die genauere ursache sehen

  • Das kann ich mir nicht vorstellen. Entweder stirbt das Script mit einer anderen Fehlermeldung oder mysql_fetch_row funktioniert.

  • Ah, vergiss es, Syntax Fehler... Neue Fehlermeldung lautet wie folgt:

    Code
    [B]Parse error[/B]:  syntax error, unexpected T_LOGICAL_OR in [B]/www/htdocs/w00b48bf/html/php/seminar.php[/B] on line [B]32[/B]

    Leider hilft ir das immernoch nicht weiter. ~~

    Ansonsten SQL print lautet wie folgt:

    SQL
    SELECT VName, Raum, MaxSchueler, email
    FROM User, Veranstaltungen, Leiter
    WHERE User.email=Leiter.email
    AND Leiter.LID = Veranstaltungen.LID
    ORDER BY VName ASC

    2 Mal editiert, zuletzt von d3s4nN (8. Juni 2009 um 16:28)

  • Zitat

    Code:
    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /www/htdocs/w00b48bf/html/php/seminar.php on line 33

    Diese Fehlermeldung sagt dir, dass die an mysql_fetch_row übergebene Ergebnis-Ressource ungültig ist.
    Das ist meist auf eine fehlerhafte Abfrage zurückzuführen, worauf dich bandit auch schon hingewiesen hat.

    Zum Beispiel verwendest du in deiner Abfrage einmal als Tabellennamen "leiter", aber auch "Leiter", was so sicher nicht stimmt.
    Für die Zukunft solltest du dir ein paar Sachen angewöhnen, um solche Fehler zu vermeiden oder die Fehlersuche zu erleichtern:

    1. Verwende bei Joins IMMER diese Syntax: tabellenname.feld. Damit behältst du die Übersicht udn Helfer finden sich in deinem Code besser zurecht.

    2. Verwende den Codeschnipsel von bandit bei jeder Abfrage. Alternativ steigst du auf einenn Datanbankwrapper wie MDB2 oder PDO um.

    3. Hilfreich bei SELECT-Abfragen:

    PHP
    $sql = "SELECT dies, das FROM da";
    $result = mysql_query($sql) or die("Fehler: ".mysql_error());
    if(mysql_num_rows($result) == 0)
    {
      //keine Daten geholt
    }
    else
    {
    //while-schleife zur Ausgabe oder was auch immer
    }

    Grüße,
    jojo


  • Zitat

    Zum Beispiel verwendest du in deiner Abfrage einmal als Tabellennamen "leiter", aber auch "Leiter", was so sicher nicht stimmt.

    Ja, das ist mir beim durchlesen auch schon aufgefallen und ist auch korrigiert... siehe SQL Printout.


    Zitat

    1. Verwende bei Joins IMMER diese Syntax: tabellenname.feld. Damit behältst du die Übersicht udn Helfer finden sich in deinem Code besser zurecht.

    Vielleicht irre ich mich ja, aber das habe ich doch beachtet, oder ?


    MFG d3s4nN

  • edit: is ja erledigt dieses prob

    Zitat

    Diese Fehlermeldung sagt dir, dass die an mysql_fetch_row übergebene Ergebnis-Ressource ungültig ist.
    Das ist meist auf eine fehlerhafte Abfrage zurückzuführen, worauf dich bandit auch schon hingewiesen hat.

    jup, das war auch mein ziel. die sql-anweisung einfach mal in phpmyadmin ausführen.
    da solltest dann sehen was genau falsch is

  • Zitat


    Ja, das ist mir beim durchlesen auch schon aufgefallen und ist auch korrigiert... siehe SQL Printout.

    Schön, nur hast du den selben Fehler in die andere Richtung nun bei

    Code
    User.email=leiter.email
    Zitat


    Vielleicht irre ich mich ja, aber das habe ich doch beachtet, oder ?

    Du irrst dich ;)
    SELECT VName, Raum, MaxSchueler, email


  • Zitat

    2. Verwende den Codeschnipsel von bandit bei jeder Abfrage. Alternativ steigst du auf einenn Datanbankwrapper wie MDB2 oder PDO um.

    Du solltest daran denken, den Codeschnipsel wieder rauszunehmen, wenn du das Script dann veröffentlichst, siehe meinen Thread über Sicherheitslücken oder google nach XSS mysql_error

    Information will frei verfügbar sein.

    Don't eat unpeeled hedgehogs.