SamanthaMaster: Wo liegt der Fehler? PHP/Sessions/MySql

Hy!
Ich stehe irgendwie auf der Leitung... Zuerst hat alles funktioniert, dann habe ich die Sessions eingefügt... Und plötzlich war da ein Fehler obwohl ich in dieser Zeile gar nichts geändert habe...

<?php session_start();?>  
<html>  
<head>  
<title>Datenregister</title>  
</head>  
  
<body  style="background-image:url(bilder/top.jpg); background-repeat:repeat-x; font-size:150%; background-color:orange;">  
<img src="bilder/logo.gif" width="97" height="93" align="top" alt="hintergrund">  
<br>  
<br>  
<h1 align="center">SMOG</h2>  
<form name="anmelden" method="post" action=<?php echo $_SERVER['PHP_SELF'];?> ><table align="center">  
<tr>  
    <th>Benutzername:</th>  
    <th>Passwort:</th>  
</tr>  
<tr>  
    <td><input name="benutzername" type="text" size="30" maxlength="30" value="Gast"></td>  
    <td><input name="passwort" type="password" size="30" maxlength="40"></td>  
</tr>  
<tr>  
    <td colspan="2" align="center"><input name="bleiben" type="checkbox"> Angemeldet bleiben</td>  
</tr>  
<tr>  
    <td colspan="2" align="center"><input name="login" type="submit" value="Anmelden"></td>  
</tr>  
<tr>  
    <td colspan="2" align="center"><a href="?">Passwort vergessen?</a></td>  
</tr>  
</table>  
<?php  
	//error_reporting(E_ALL);  
	  
	$result = mysql_query("SELECT * FROM user");  
	while ($row = mysql_fetch_assoc($result))  // Zeile 35  
{  
	  
	if ($_POST["benutzername"] == $row["benutzername"] && $_POST["passwort"] == $row["passwort"] && $row["status"] == "personal" && isset($_POST["login"]))  
	{  
		echo "<meta http-equiv=\"refresh\" content=\"0; URL=http://inflamp.technikum-wien.at/~WS09_smog/PHP/Kurse/kursliste.php\">";  
		$_SESSION['id'] = $row["patientID"];  
      		$_SESSION['user'] = $row["benutzername"];		  
	}  
	else  
	if ($_POST["benutzername"] == $row["benutzername"] && $_POST["passwort"] == $row["passwort"] && $row["status"] == "patient" && isset($_POST["login"]))  
	{  
		echo "<meta http-equiv=\"refresh\" content=\"0; URL=benutzer.php\">";  
		$_SESSION['id'] = $row["personalID"];  
      		$_SESSION['user'] = $row["benutzerame"];  
		  
	}  
	else  
	if ($_POST["benutzername"] == "Gast" && isset($_POST["login"]))  
	{  
		echo "<meta http-equiv=\"refresh\" content=\"0; URL=info.php\">";  
  
	}  
 	else  
 	{  
		echo "<meta http-equiv=\"refresh\" content=\"0; URL=falsch.php\">";  
	}  
}  
	  
?>  
</form>  
  
</body>  
</html>  

Das ist der Fehler:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in index.php on line 35

LG Samantha

  1. Du hast recht: diese Zeile ...

      
    <?php session_start();?>  
    ...  
    	$result = mysql_query("SELECT * FROM user");  
    	while ($row = mysql_fetch_assoc($result))  // Zeile 35 Fehler:  
    
    

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in index.php on line 35

    stehen stehen in keinem Zusammenhang!!! Das wirst du auch sehen, wenn
    du die Zeile mal so <?php // session_start();?> auskommentierst. Du
    hast meines erchtens ein reines Datenbankproblem. Wo loggst du dich
    in die DB ein???????

    Prof. Sakkkkarre

    1. Die Datenbank Anbindung habe ich versehentlich beim herumprobieren gelöscht... jetzt funktionierts wieder... mehr oder weniger...

      wenn ich versuche auf die Seite benutzer.php zu zugreifen, also den richtigen Benutzername und Passwort eingeben, kommt gleich die falsch.php Seite

      Dabei wird so ein Fehler angezeigt ... Konnte ich gerade noch kopieren..
      [IMG]http://s2.directupload.net/images/100130/3sc37e6c.jpg@alt=Fehler]

      Danke, manchmal kann ich ganz schön blind sein..

      1. Die Datenbank Anbindung habe ich versehentlich beim herumprobieren gelöscht... jetzt funktionierts wieder... mehr oder weniger...

        Dein Teilerfolg freut mich!

        wenn ich versuche auf die Seite benutzer.php zu zugreifen, also den richtigen Benutzername und Passwort eingeben, kommt gleich die falsch.php Seite

        Ein paar grundsätzliche Tipps für Formulare:

        • gibt in der Testversion immer
            <?php echo "<pre>"; print_r $_POST; echo "</pre>"; ?>
          aus. Natürlich muss das in der Produktionsversion raus. Und falls
          due GET machst muss $_GET ausgegeben werden.

        • Nimm "griffige Variablennamen" in deinem Formaular. Es passiert
          schneller als du denkst, dass man 5 Formulare in einer HTML Ausgabe
          hat und sich Variablen beissen.

        • zeige mit <form action= > imme auf die Datei, die das Formalar
          ausgibt. Das hat, nach meiner Erfahrung nur Vorteile. Beispiele:
            - wenn ein User eine flasche Passwort abesetz hat (musst du
            ja ohnehin irgenwo prüfen), dann gibst du die selbe Seite nochmal
            aus uns setzt im <input> Tag gleich die richtigen Werte. Etwa so:
                 <input .... <?php echo §_POST{user_name]; ?>">
            - für weiter Beispiele geht mir die Puste aus - ich muss noch
            einkaufen gehn .... (mein Buttler hat diese Wochenende frei)

        Tschau.

      2. Hi!

        Dabei wird so ein Fehler angezeigt ... Konnte ich gerade noch kopieren..
        [IMG]http://s2.directupload.net/images/100130/3sc37e6c.jpg@alt=Fehler]

        Lass beide genannten Direktiven in der PHP-Konfiguration deaktivieren.

        Danke, manchmal kann ich ganz schön blind sein..

        Dein Script arbeitet immer noch blind. Es vertraut darauf, dass die DBMS-Funktionen stets fehlerfrei arbeiten. Tun sie das nicht, gibt es den bereits bekannten Folgefehler. Du wertest die Rückgabewerte der Funktionen nicht aus, prüfst sie nicht auf false, was der "Fehler ist aufgetreten"-Indikator ist.

        Lo!