• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

$row und mysql_fetch_assoc... ääh, wie bitte. das will iwie nich!! pls helpt

Status
Für weitere Antworten geschlossen.

Joda1994

Neues Mitglied
PHP:
$username = mysql_query("SELECT `name` FROM `users`") or die(mysql_error());
while ($row = mysql_fetch_assoc($username))
echo $row["name"];

warum geht das nich?? der gibt da nix aus
 
Hi ;)

Wie wär n' gut aufgebauter Code?
Naja, hat weniger damit zu tun, meinte nur wegen Übersicht. Ich bin nicht so für so Abkürzungen, denn while schreibt man mit der geschweiften Klammer.

Schreib mal oben hin:
PHP:
error_reporting(E_ALL);
Das bringt dir alle Errors raus.




LG ;)
 
PHP:
error_reporting(E_ALL);	
	$name = mysql_query("SELECT `name` FROM `users` WHERE `name`='" . $_POST["username"] . "'") or die(mysql_error());
	while ($row = mysql_fetch_assoc($name))
	echo $row["name"];
so gehts. hab ich iwie was an dem code geändert, außer dem error reporting. achja, kanns mir sagen, wie mach nen bestimmten wert aus einer zeile ausliest, wenn da mehrere drin sind??
achja er reportet: Notice: Undefined index: name in C:\Programme\XAMPP\htdocs\listgame\functions2.php on line 71
PHP:
function login()
{
	error_reporting(E_ALL);
	$name = mysql_query("SELECT `name` FROM `users` WHERE `name`='" . $_POST["username"] . "'") or die(mysql_error());
	while ($row = mysql_fetch_assoc($name))
	echo $row["name"];
	$password = mysql_query("SELECT `password` FROM `users` WHERE `name`='" . $_POST["username"] . "'") or die(mysql_error());
	while ($row = mysql_fetch_assoc($password))
	
	if ($_POST["username"] = $row["name"] AND $_POST["password"] = $row["password"])
	{
		mysql_query("UPDATE `users` SET `login`` ='1' WHERE `name`='" . $_POST["username"] . "'") or die(mysql_error());	
	}
	else
	{
		echo "Log-in fehlgeschlagen. Falcher Username oder falchses Passwort.";
	}
}
Zeile 62 bis 79
 
is iwie komisch. mal gehts, mal nich. xD
jez bekomm ich die fehldermeldung Unknown column 'eric' in 'where clause'

aber es wird ja auch nie die spalte eric benutzt. die gibt es halt gar nicht. wodran liegt das??? am browser?
 
du hast bei dem update query nach dem
"... SET `login`` ..." 2x `
dadurch verschiebt sich des alles ^^ nimm des 2te ` raus dann sollts klappen ^^
 
soweit so gut. sieht jez so aus:
PHP:
	error_reporting(E_ALL);
	$postname = $_POST["username"];
	$postpassword = $_POST["password"];
	$name = mysql_query("SELECT name FROM users WHERE name = '" . $postname . "'") or die(mysql_error());
	while ($row = mysql_fetch_assoc($name))
	$password = mysql_query("SELECT password FROM users WHERE name = '" . $postname . "'") or die(mysql_error());
	while ($row = mysql_fetch_assoc($password))
	echo "a" . $postpassword . "a" . $row["password"] . "a" . $postname . "a" . $row["name"];
	if ($postpassword == "$row[password]" AND $postname == "$row[name]")
	{
		mysql_query("UPDATE users SET login ='1' WHERE name = '" . $postname . "'") or die(mysql_error());
		echo "Du hast dich erfolgreich eingeloggt.";	
	}
	else
	{
		echo "Log-in fehlgeschlagen. Falcher Username oder falchses Passwort.";
	}
wenn ich da dann als name eric eingebe und als passwort test, dann kommt: Notice: Undefined index: name in C:\Programme\XAMPP\htdocs\listgame\functions2.php on line 64
atestatestaericaLog-in fehlgeschlagen. Falcher Username oder falchses Passwort.
aba die daten sind richtig wie man ja in dem a...a...a...a... sehen kann. da steht jez zwar nich ein zweites ma eric, warum auch imma. aba das klappte auch nich, als ich nur das passwort geprüft hatte. was ist denn jez noch falsch???
 
also ganz grob mal ein paar tipps

wenn du variablen vergleichst oder auch nur ausgeben willst dann nimmst du keine anführungszeichen also ist volgendes falsch

PHP:
if("irgendwas" == "$array['index']")

an sich solltest du variablen bei der ausgabe NIE zwischen anführungszeichen setzen, das erschwert zu erst mal das verstehen des codes an sich für frende und ist auch langsamer da der parser dann erst nach den variablen suchen muss

zweitens wenn du aus einem mysql query etwas ausliehst und du weißt das du nur ein ergebniss bekommst dann schreibst du deine abfrage nciht in eine while schleife also ist folgendes beispiel auch falsch

PHP:
$resource = mysql_query("SELECT `name` FROM `user` WHERE `userID` = 1");
while($row = mysql_fetch_assoc($resource))
$name = $row['name'];

dies ist auch dahingegend falsch das du es dir abgewöhnen solltest schleifen ohne klammern zu schreiben das stört nicht nur den lesefluss, man kann sich auch nie sicher sein was PHP nun wirklich beachtet und was nicht.

==============

Also ums genau zu sahen ist das mit den klammern und den variablen nicht ganz wahr du kannst es meistens so machen aber dann wirst du immer ein sehr einsamer coder sein ;)

Arrays können auch zwischen anführungszeichen stehen dann müssen sie aber in solche klammern gesetzt werden {} also währe volgendes richtig

PHP:
$hallo_welt[] = "Hallo Welt!";
echo "{$hallo_welt[0]}";

sieht aber scheiße aus und ist langsam ;)

als nächstes empfehle ich dir PHP: mysql_real_escape_string - Manual zu verwenden da du ansonsten probleme mit hackern bekommen wirst.

MFG Miah
 
ich wäre dir ganz verbunden, wenn du mir sagen würdest auf welche stellen sich das bezieht. xD... nur mein prob is halt das mit den ifs.
die meinen dass wenn z.b. bei
PHP:
$wert1="test";
$wert2="test";
if($wert1 == $wert2)
{
echo "true";
}
else
{
echo "false";
}
die ausgabe "false" sein muss. also so würde das wahrscheinlihc gehen, nur mit dem vergleich des wertes der eingabe und der tabelle geht das nich. why?????????
 
da beide werte gleich sind und mit == verglichen werden kommt da true raus... false fürde rauskommen wenn sie mit != verglichen werden würden.

und dein script ist an volgender stelle fehlerhaft

PHP:
if ($postpassword == "$row[password]" AND $postname == "$row[name]")

verbesserungsvorschläge können in meinem vorherigen post nachgelesen werden ;)
 
aso, ich dachte das wären nur tipps füür die schreibweise...
PHP:
if ($postpassword == $row["password"] AND $postname == $row["name"])
so besser???
 
so ich hab den code jez nochma umgeändert und bin zu dem schluss gekommen, dass $_POST['name'] nicht ausgelesen wird oda so. hier is ersma der code

PHP:
<?
function login()
	{
	error_reporting(E_ALL);
	
	$query = "SELECT `name`, `password` FROM users";
	$result = mysql_query($query);
	$row = mysql_fetch_assoc($result);
		
		if ($row["password"] == $_POST["password"] AND $row["name"] == $_POST["name"])
			{
			mysql_query("UPDATE users SET login ='1'") or die(mysql_error());
			echo "Du hast dich erfolgreich eingeloggt.";
			}
				else
					{ 
					echo "Log-in fehlgeschlagen. Falcher Username oder falchses Passwort.";
					}
	}
?>

damit gibt er folgendes aus: Notice: Undefined index: name in C:\Programme\XAMPP\htdocs\listgame\functions2.php on line 62Log-in fehlgeschlagen. Falcher Username oder falchses Passwort.Notice: Undefined index: name in C:\Programme\XAMPP\htdocs\listgame\functions2.php on line 71.beides ma is $_POST[&quot;name&quot;] nich definiert. warum???
hiiiilfe.... ich kann nich mehr ordentlich posten. der ganze code is voll &bnsp und so^^ udn ich kann nich mehr über den php-code knopf solche codes einfügen

bin ich nur so doof oda tue ich so???? das feld hieß username und nich name. boah ey ich glaubs nich.

Mod-Comment: Ich hab' das jetzt einigermaßen leserlich geschrieben. Bedenke bitte, dass wir keine PHP-Parser sind, die Code in einer einzigen Zeile interpretieren können, sondern nur normale Menschen (XraYSoLo)
 
Zuletzt bearbeitet von einem Moderator:
es wäre ganz nett, wenn du in deinen Code mal neue Zeilen machen würdest! Außerdem: Warum steht da &qout; statt "
 
- datenbankverbindung gechecked?
- heißen die felder der SQL-tabelle wirklich so?

ich würde das nicht als eigenständige funktion machen, da sonst die inhalte gekapselt bleiben, wenn du sie nicht spezifizierst.

Nils aka XraYSoLo
 
@XrayYsolo: Is nur der übersichts halber. Wenn ich damit fehler bekommen, komm ich gerne noch ma auf dein vorschlag zurück.
@Gimli: warum neue Zeilen?? is das nich so ok? und ich hatte doch geschrieben, dass die &... beim posten dareingekommen sind.
 
guck dir lieber mal dein Formular an!

Damit ein POST gesendet wird muss die form die method="post" haben und das input feld muss den namen "name" haben also

<input name="name" type="text" />
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben