#1 18. Juli 2006 Hi, ich hab mal wieder ne Frage zu PHP habe folgenden Quellcode: Code: //Abfrage, ob USER-NAME schon vorhanden, da er der Primärschlüssel ist... $abfrage = mysql_query("SELECT uname FROM user_data"); $ergebnis = in_array($uname, $abfrage); if ($ergebnis == true) { echo "Username bereits vorhanden"; } else { echo "Username noch nicht vergeben"; } und wenn ich ihn ausführe, kommt die Fehlermeldung Warning: in_array() [function.in-array]: Wrong datatype for second argument in J:\Xampp\xampp\htdocs\final\check.php on line 60 zeile 59 ist in dem fall diese $ergebnis = in_array($uname, $abfrage); Ich hab die Funktion in_array so verstanden, dass man als erstes den Begriff eingeben muss, den man sucht, dann ein Komma und dann das array, in dem er drin steht (oder auch nicht). Also $uname ist der Begriff, der gesucht werden soll und zwar in $abfrage (da wurden vorher alle user-namen aus der Datenbank gespeichert...) Auf PHP.net steht auch nichts, was mir weiter hilft MfG Bernie
#2 18. Juli 2006 Also, da jetz nachzugucken bin ich zu faul zu fällt mir grad ned ein^^ hier mal so wie ich es oft einfach mache: PHP: $sql = mysql_query ( "SELECT uname FROM user_data WHERE uname = ' $uname '" );if( mysql_num_rows ( $sql ) != 0 ){echo "Username existiert bereits!" ;}else {echo "Username noch nicht vergeben" ; }
#3 18. Juli 2006 Cool, hätte ich auch von alleine drauf kommen können Aber wäre super, wenn jemand vielleicht auch noch ne Lösung für das in_array Problem hätte, weil das interessiert mich schon, warum es nicht geht. MfG Bernie
#4 18. Juli 2006 du musst die benutzernamen erst alle in einer array speichern Zitat: "in_array -- Prüft, ob ein Wert in einem Array existiert" ps: du hattest bei dem $ergbinis == true das 3. = vergessen..^^ weil bei true und false benutzt man ja eig. 3 gleichheitszeiten (ode rnicht? mahc ich jedenfalls^^)
#5 18. Juli 2006 Ne muss man nicht. Wenn die Funktion den Wert TRUE oder FALSE zurückliefert, kann man das ENTWEDER mit == ODER mit === überprüfen, wobei === nur überprüft, ob der Boolean Wert (oder so) TRUE .. WÄRE .. , quasi den Typ davon überprüft, wobei == checkt ob der Inhalt der Variable "TRUE" ist.
#6 18. Juli 2006 1. Deine SQL-Abfrage ist unvorteilhaft. Es werden nämlich alle User ausgelesen. Du solltest vielleicht eher mehr über Datenbanken, Aufbau und Abfragen lernen. 2. $abfrage ist kein Array. Siehe Code. Code: //Abfrage, ob USER-NAME schon vorhanden, da er der Primärschlüssel ist... $abfrage = mysql_query("SELECT uname FROM user_data"); $row = mysql_fetch_array($abfrage); $ergebnis = in_array($uname, $row); ... sollte gehen. Noch besser: Code: // Voraussetzung: uname wurde per POST-Formular uebermittelt $abfrage = mysql_query("SELECT uname FROM user_data WHERE uname='". $_POST['user'] ."'"); if(mysql_num_rows($abfrage).... Rest hat schon jemand vor mir geschrieben.
#7 18. Juli 2006 Klar, dass alle User ausgelesen werden weiß ich, wollt ich ja auch so, weil ich nicht drauf gekommen bin, dass man ja schon gleich mit WHERE eine Bedingung eingeben kann... habs jetzt schon so gemacht Code: <?php $sql = mysql_query("SELECT uname FROM user_data WHERE uname = '$uname'"); if(mysql_num_rows($sql) != 0) { echo "Username existiert bereits!"; } else { echo "Username noch nicht vergeben"; } ?> Danke euch allen für die Hilfe. MfG Bernie