MySQL Felder einzeln und nicht als ganze Reihe auslesen

Hallo

Also es gibt 2 Werte/Strings, die aus der Loginmaske an die index.php geschickt werden sollten. Dort wird überprüft ob der User in der Datenbank vorhanden ist und ob auch das Passwort stimmt.

Ich hänge nochmals das Login-Template an. Bin schnell auf der Post
MfG dUDA
 

Anhänge

Du solltest den usernamen auch aus $_POST nehmen
PHP:
$result = mysql_query("SELECT Passwort FROM Spieler WHERE Name = '{$_POST['username']}'");
Achja, mit meinem Tutorial würdest du diesen Fheler auch finden...
PHP MySQL Debug Queries
 
Hallo

Habs geändert wie Du gesagt hast und der Code sieht jetzt so aus:

PHP:
else if(isset($_POST['username'])) // Wenn Variable Username (im Speicher) existiert, führe Loginabfrage aus
{
	$verbindung = mysql_connect("localhost","samp1111","000000") or die ("Keine Verbindung zum Server möglich");
	mysql_select_db("samp1111") or die ("Keine Verbindung zur Datenbank möglich");	
//	$result = mysql_query("SELECT Passwort FROM Spieler WHERE Name = 'username'") or die(mysql_error());
	$result = mysql_query("SELECT Passwort FROM Spieler WHERE Name = '{$_POST['username']}'");	
	if (!$result) 
	{
		echo 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
		exit;
	}
    $passwort = mysql_result($result, 0, 'Passwort'); //jetzt Zeile 22
    if($passwort == md5($_POST['password']))  	
	{
		$_SESSION['username'] = $_POST['username'];
	}
	else // Sendet Misserfolgs-Meldung aus 
	{
		echo startcontent();
		echo title("Loginversuch");
		echo '<p align=center><b>Benutzername oder Passwort falsch</b></p><meta http-equiv="refresh" content="3; URL=">';
		echo endcontent();
		include 'templates/navlogin.tpl'; 
		include 'templates/footer.tpl';
		die; 
	}	
}

Ich kenne mich eben nochnicht gut aus mit solchen Sachen, wäre darum um eine etwas für mich mehr verständliche Aussage sehr froh, denn ich will das Problem ja bewältigen.

B2T
Der Error kommt immernoch. Müsste bei dem 0 in mysql_result nicht die Zeile rein kommen oder verstehe ich da was falsch ?

dUDA
 
Jupp, der Zeilenindex muss bei mysql_result() rein. Aber da kommt erst etwas, wenn wir mysql_num_rows() mit dem Resultat 1 oder mehr haben.

Alle Befehle die ich hier poste und du noch nichts kennst, solltest du auf php.net nachschlagen und lesen was sie amchen sollten.

Es ist nicht schwer hier zu debuggen. Mein verlinktes Tutorial erklärt es Schritt für Schritt. Arbeite das mal durch und poste die Resultate wieder hier.
 
Hallo

@Befehle die ich nicht kenne
Was meinst Du, was mache ich vor dem Schlafen und sonst wenn ich es nicht verstehe. Ich hasse Unwissenheit ;)

Zum Debuggen denke ich, ich weiss ja woran es liegt - die Zeilennummer fehlt, nur muss ich jetzt schauen, wie ich an die komme. Kann ich nicht mithilfe des querys an die ZeilenID kommen ?
Wäre da um deine Hilfe recht froh

MfG dUDA

PS: Hab es vorhin mal mit ner 1 anstatt einer 0 versucht, same Error, einfach die Row ändert sich dementsprechend.

//Edit
Wäre es nicht möglich, mit dem Namen die Felder zu checken und das irgendwie zu benutzen ?
 
Du brauchst die Zeilennummer nicht. Dein SQL sollte ja genau 1 Zeile zurückgeben. Nämlich die mit dem ausgewählten User.
mysql_result() greift auf den Zeilen-Index zu. Indexe beginnen immer mit 0. Also, Erste Ziele hat Index 0, Zweite Zeile hat Index 1 etc.
Darum musst du zuerst hinkriegen dass dein SQL eine Zeile zurückgibt. Ansonsten kommst du nei und nimmer zum Passwort, ganz egal was du da versuchst.

Debuggen hat nix mit vermuten und es könnte sein zu tun, sondern damit zu sehen was wirklich ist. Alle Tipps die ich dir jetzt geben könnte um das Problem zu lösen sind 1 zu 1 in dem debug-Tutorial drin. Sorry, ich habe echt keine Lust das Ding jetzt zu zerstückeln und Schritt für Schritt, Händchen haltend, mit dir durchzugehen. Frag was du dort nicht verstehst, aber probier es aus.
Vorher mache ich keine weiteren Mutmassungen und 'es lönnte so sein'-Spielchen mehr durch.

Also los, SQL ausgeben lassen und mit der DB prüfen. Es ist nicht schwer.
 
Hallo

Mir ist jetzt garnichts mehr klar, mal drüber schlafen. Gehe ich aber richtig in der Annahme, dass ich einen Code schreiben muss, der herrausfinden muss, in welcher Zeile der Username mit dem Datenbank-Usernamen übereinstimmt und dort dann den Index zurückgebe ?

Werds morgen anschauen, naja, danke für das bisher Geholfene

MfG dUDALUS
 
Nein, musst du nicht. Du musst Schritt für Schritt vereinzelte Zeilen in deinem Code anpassen/ergänzen um dherauszufinden was nicht funktioniert. Steht aber alles im Tutorial drin.
 
Zurück