problem mit in_array

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Bernie, 18. Juli 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  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
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.