Formularfeld überfrüfen

icefire

Erfahrenes Mitglied
Hallo!
Ich versuche ein Formularfeld zu überprüfen mit if{}else{}! Nur komischerweise kommt immer eine Fehlermeldung auch wenn der betreffende Nick nicht in der Datenbank steht!

PHP:
$userdata = mysql_query("SELECT ident_nick, ident_mail FROM inf_mem_ident");	
   echo mysql_error();  
 
$ergebnis = mysql_query($userdata);   

if($ergebnis != $_POST[ident_nick]){
  $addmem = 1;  
  echo"<table style=\"width: 500px\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\">
 	    <tr>
 		 <td bgcolor=\"".$bg1."\"><font color=\"#ff0000\">Dieser Nick ist schon vergegeben.</font></td>
 	    </tr>		
       </table><br>"; 	
  }
  else {
  $addmem = 0;
  }

Wer weiss Rat? :(
 
würde es so machen :)

PHP:
$result_team  = mysql_query("SELECT ident_nick, ident_mail FROM inf_mem_ident WHERE ident_nick='$_POST[ident_nick]'");

if($team_name_vorhanden=mysql_num_rows($result_team)==0)
{
    //nick nicht vorhanden
}
else
{
   //nick in der db vorhanden ....
}

du fragst direkt in der db ob der nick vorhanden ist ... wenn wird eine 1 zurückgegeben und wenn nicht :) dann eben eine 0

gruß kon
 
Guten Morgen,

das liegt nicht an der If-Anweisung, sondern an der Zeile unmittelbar davor:
PHP:
$ergebnis = mysql_query($userdata);
Das sollte wohl eher
PHP:
$ergebnis = mysql_fetch_array($userdata);
heissen.

Wenn Du allerdings nur überprüfen möchtest, ob der übergebene Nickname schon vorhanden ist, würde ich wiefolgt vorgehen:
PHP:
$sql = "SELECT count(*) as ANZAHL
        FROM inf_mem_ident
        where ident_nick = '".mysql_escape_string($_POST['ident_nick'])."'";

$userdata = mysql_query($sql) or die(mysql_error());

$ergebnis = mysql_fetch_array($userdata);

if($ergebnis['ANZAHL'] != 0) {
  // Nick ist schon vorhanden
} else {
  // Nick ist noch nicht vorhanden
}

Auchtung: Mein Beispiel achtet auf Groß- und Kleinschreibung. Ist der zu überprüfende Nickname "TestName" und in der Datenbank ist der Nickname "TESTNAME" vorhanden, dann ermittelt das Script, dass es den übergebenen Nickname noch nicht kennt.

Möchtest Du das nicht, musst Du folgende SQL-Anweisung verwenden:
PHP:
$sql = "SELECT count(*) as ANZAHL
        FROM inf_mem_ident
        where UCASE(ident_nick) = '".strtoupper(mysql_escape_string($_POST['ident_nick']))."'";


// Edit: Viele Wege - Eine Lösung :)


mfg, snuu
 
Zuletzt bearbeitet:
Das hier geht in keinem Fall....
PHP:
$userdata = mysql_query("SELECT ident_nick, ident_mail FROM inf_mem_ident");     
   echo mysql_error();   

$ergebnis = mysql_query($userdata);

Ich würde das so machen:

PHP:
$query = 'SELECT ident_nick FROM inf_mem_ident WHERE ident_nick LIKE '.$_POST[ident_nick];

$result = mysql_query($query);
if(mysql_num_rows($result)>0)
{
    //name vorhanden
}else{
    //name nicht vorhanden
}
 
Gut, es kommt keine Fehlermeldung mehr! Aber der überprüft nun garnicht mehr die Nicks in der Datenbank...!? Ich habe die Möglichkeiten die hier gepostet haben alle ausprobiert und entsprechend abgeändert.

PHP:
$sql = "SELECT ident_nick, ident_mail FROM inf_mem_ident WHERE ident_nick LIKE '.$_POST[ident_nick]' AND'.$_POST[ident_nick]'"; 
$result = mysql_query($sql)or die(mysql_error());  
echo"<br><center>";
if (mysql_num_rows($result)!=$_REQUEST[ident_nick]){
  $addmem = 1;  
  echo"<table style=\"width: 500px\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\">
 	    <tr>
 		 <td bgcolor=\"".$bg1."\"><font color=\"#ff0000\">Dieser Nick ist schon vergegeben.</font></td>
 	    </tr>		
       </table><br>"; 	
  }
  else {
  $addmem = 0;
  }

Hab ich da wohl etwas vergessen? :-)
 
Machs so:

PHP:
$sql = "SELECT ident_nick, ident_mail FROM inf_mem_ident WHERE ident_nick LIKE '.$_POST[ident_nick].'"; 
$result = mysql_query($sql)or die(mysql_error());   
echo"<br><center>"; 
if (mysql_num_rows($result) > 0){ 
  $addmem = 1;   
  echo"<table style=\"width: 500px\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\"> 
        <tr> 
         <td bgcolor=\"".$bg1."\"><font color=\"#ff0000\">Dieser Nick ist schon vergegeben.</font></td> 
        </tr>         
       </table><br>";      
  } 
  else { 
  $addmem = 0; 
  }

Ungetestet, sollte aber gehen...

mfg mAu
 
Zurück