Seite 1 von 1

Problem bei mySQL Abfrage

Verfasst: 04.02.2008 17:11
von berry3
Hallo,

hab ein kleinen Problem.
Habe mal mehr aus Spaß ein paar kleine Zeilen geschrieben, die den namen prüfen. Die Probleme begannen, als ich nacchfragen wollte, ob der Name schon existiert.

Code: Alles auswählen

$namequery = mysql_query("SELECT name FROM users"); 
if(strlen($_POST['name'])==0)
  {
  echo "<b><font color=red>Bitte geben Sie Ihren Namen ein.<br></font></b>";
  }
  elseif ($namequery == $name)
  {
  echo "<b><font color=red>Ihr Name ist bereits vorhanden. Sollten Sie noch nicht registriert sein, schreiben Sie bitte ein E-Mail an die Administration *****.<br></font></b>";
  }
  else
  {
  echo "<b><font color=green>Ihr Name ist g&uuml;ltig.<br></font></b>";
  }
Hab verschiedenes im web gefunden und in mein Script eingefügt, aber wohl etwas flasch.

Code: Alles auswählen

elseif($namequery == $name)
Ich hatte auch schon mit empty und mit:

Code: Alles auswählen

elseif($namequery == true)
Hat alles nicht funktioniert, denn egal ob der Name schon vorhanden ist oder nicht, es wird immer das selbe angezeigt.

Vielleicht könnt ihr mir etwas weiterhelfen und die gröbsten Fehler nennen:)

Gruß

Verfasst: 04.02.2008 17:49
von oxpus
Fangen wir mal oben an:
$namequery beinhaltet hier nicht das Ergebnis der Abfrage, sondern lediglich eine Verbindung zur Datenbank, über die die Daten ausgelesen werden können.
Wenn Du nun den Namen haben willst, musst Du die erste Zeile so ersetzen:

Code: Alles auswählen

$query = mysql_query("SELECT name FROM users");
$namequery = mysql_fetch_array($query, MYSQL_ASSOC);
mysql_freeresult($query);
Dann steht Dir in $namequery['name'] der Name aus der Datenbank zur Verfügung.
Um allerdings nur den gerade erfassten Namen zu erhalten und zu prüfen, ob der bereits in der Datenbank ist, wäre dieses geschickter:

Code: Alles auswählen

$query = mysql_query("SELECT name FROM users WHERE name LIKE ('%".$_POST['name']."%')");
$namequery = mysql_num_rows($query);
mysql_freeresult($query);
Dann wäre $namequery TRUE, wenn mindestens ein Eintrag in der Datenbank gefunden wäre und damit der Username bereits existiert.

Verfasst: 04.02.2008 20:36
von berry3
Mhmm...deine Zeilen scheint er nichtsehr zu mögen...

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\********* on line 5

Warning: mysql_freeresult(): supplied argument is not a valid MySQL result resource in C:\******** on line 6

EDIT:
funzt jetzt, hatte vergessen eine Datenbank anzuwählen.
Danke :)

Verfasst: 21.04.2008 17:34
von berry3
Ich benutze dieses Thema einfach nochmal...

Dieses mal geht es allerdings nicht ums abfragen, sondern ums einfügen.
Ich hab schon verschiedene Kombinationen ausprobiert, jedoch kommt immer eine Fehlermeldung.

Code: Alles auswählen

if(isset($fehler))
  {
$eintrag = "INSERT INTO users (name, email, pass) VALUES ('$_POST['name'], $_POST['email'], $_POST['pass']')";
$eintragen = mysql_query($eintrag);
  }
Fehlermeldung:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in *** on line 59
59 ist die, wo $eintrag beginnt.
Ich habe schon verschiedene Kombinationen versucht, bezogen auf Anführungsstriche dort und da, auch ohne Anführungsstriche usw.
Naja, der Fehler ist bestimm simpel.
Es soll, solange voher kein Fehler ausgegeben wurde, die Daten eingefügt werden.

Verfasst: 21.04.2008 19:37
von Gumfuzi
probier mal:

Code: Alles auswählen

if(isset($fehler))
  {
$eintrag = "INSERT INTO users (name, email, pass) VALUES ('" . $_POST['name'] . "', '" . $_POST['email'] . "', '" . $_POST['pass'] . "')";
$eintragen = mysql_query($eintrag);
  }
ist sicher nicht die sauberste Lösung, aber sollte funktionieren.

Verfasst: 21.04.2008 20:48
von S2B
Und ein dezenter Hinweis auf [php:mysql_real_escape_string]...