Problem bei mySQL Abfrage

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
berry3
Mitglied
Beiträge: 28
Registriert: 17.06.2007 12:47

Problem bei mySQL Abfrage

Beitrag 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ß
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag 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.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
berry3
Mitglied
Beiträge: 28
Registriert: 17.06.2007 12:47

Beitrag 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 :)
berry3
Mitglied
Beiträge: 28
Registriert: 17.06.2007 12:47

Beitrag 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.
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag 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.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Und ein dezenter Hinweis auf [php:mysql_real_escape_string]...
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „Coding & Technik“