Das ist richtig, wenn Du mehrere Datensätze erwartest. Niemand hindert Dich daran, nur den ersten Datensatz aus dem Ergebnis (und es soll ja nur einen geben) zu lesen. In Kombination mit mysql_data_seek kannst Du sogar einen ganz bestimmten (z.B. den 5.) Datensatz lesen. Folgender Code müsste eigentlich genügen:
$query="SELECT * FROM User WHERE name = '".$name."' AND pw='".md5($pw)."' ";
$ergebnis2=mysql_query($query) OR die(mysql_error());
/*** Wenn gültige Abfrage und Ergebnis nicht leer (User & PW korrekt) ***/
if( $ergebnis2 && mysql_num_rows($ergebnis2) > 0 ) {
/*** Lese ersten Datensatz ***/
$userdata=mysql_fetch_array($ergebnis2,MYSQL_ASSOC);
session_start();
$_SESSION['name'] = $userdata['name'];
$_SESSION['pw'] = md5($pw);
$_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['LaLo'] = $userdata['LaLo'];
$query2="UPDATE User
SET Lalo=Now()
WHERE Name='".$_SESSION['name']."'";
mysql_query($query2) OR die(mysql_error());
echo '<script language="JavaScript" type="text/javascript">
<!--
setTimeout("location.href=\'highscoreverwaltung.htm\'",0000);
//-->
</script>';
} else {
echo '<div style="font-family:arial;">';
echo '<span style="color:red;font-family:arial;">Falsches Passwort!</span><br>';
echo '<a href="index.htm">Nochmal versuchen...</a>';
echo '</div>';
}
Ich fürchte nur, dass das auch nichts bringt, da ja offensichtlich mit dem Namen und Passwort gar nichts gefunden wird. Prüfe, ob Deine Variablen richtig gefüllt sind, die Verbindung zur Datenbank erfolgreich war, etc. Probier das Select-Statement mal in einem MySQL-Frontend aus. Vielleicht gibts Probleme mit der Groß-/Kleinschreibung.
Setze die Ausgabe mal in die while-Schleife. Da Du direkt beim Abbruchtest eine Zuweisung machst, steht nach Abbruch der Schleife natürlich false in $userdata!
Wozu brauchst Du da überhaupt eine while-Schleife? Ich gehe doch mal davon aus, dass eine Benutzername/Passwort-Kombination eindeutig sein sollte.Die while-Schleife brauche ich, damit ich die Daten aus der mysqldatenbank in einen Array bekomme...
Habe ich so gelernt.