Malte Kiefer: Soll prüfen ob Usernmae vergeben ist

Hi dieser Script soll prüfen, ob der Username schon vergeben ist, aber ich bekomme eine fehlermeldung zurück, weiß aber nicht warum...

$Eintrag = mysql_num_rows($result);
$sql = 'SELECT * from ghostsoldier WHERE register="'.$username.'"';
    $result = mysql_query($sql);
    if($Eintrag>0)
    {
    echo "Username vergeben";
    }

  1. Hallo und guten Morgen,

    hmm ich weiß gerade nicht was für eine Meldung du bekommst aber ich bei meinen Seiten mache das wie folgt:

    else //Überprüfen ob Username in DB schon existiert
    {
      $name_neu = strtolower($_POST['name']);
      $sql = "SELECT
         name
        FROM
         daten
        ";
      $result = mysql_query($sql);

    while($_data = mysql_fetch_assoc($result))
      {
       if($_data['name'] == $name_neu)
       {
        $error[] = "Der angegebene Benutzername existiert bereits, bitte wähle einen anderen.";
        break;
       }
      }
    }

    Versuch es einfach mal damit du musst es natürlich noch an deine Tabellen und so anpassen.

    MFG jaylibii

    1. Hi,

      habe die Daten angepasst, bekomem aber immer noch eine Fehler ausgabe, woran liegt das???

      <?php function check_email($email) {
        //author: Christian Kruse, CK1@wwwtech.de
        //Quelle: http://selfaktuell.teamone.de/tippstricks/programmiertechnik/email/index.html
        // RegEx begin
        $nonascii      = "\x80-\xff"; # Non-ASCII-Chars are not allowed

      $nqtext        = "[^\\$nonascii\015\012"]";
        $qchar         = "\\[^$nonascii]";

      $protocol      = '(?:mailto:)';

      $normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
        $quotedstring  = ""(?:$nqtext|$qchar)+"";
        $user_part     = "(?:$normuser|$quotedstring)";

      $dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\.';
        $dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*';
        $dom_tldpart   = '[a-zA-Z]{2,5}';
        $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";

      $regex         = "$protocol?$user_part@$domain_part";
        // RegEx end

      return preg_match("/^$regex$/",$email);
      }
      ?>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
             "http://www.w3.org/TR/html4/strict.dtd">
      <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
      <title>Ghost Sodlier</title>
      <link rel="stylesheet" type="text/css" href="css.css">
      </head>
      <body>
      <?php
      if ($_POST["schritt"] == "zwei") {
        $fehler = array();
        $username = $_POST["username"];
        $offizier = $_POST["offizier"];
        $password = $_POST["password"];
        $passwordw = $_POST["passwordw"];
        $email = $_POST["email"];

      //Test ob die Passwort Widhl. mit dem Passwort uebereinstimmt

      if($passwordw != $password) $fehler[]= "Die Passwort Widhl. muss mit dem Passwort übereinstimmen.";

      //Testen der EMailAdresse

      if(!check_email($email)) $fehler[] = "Bitte eine richtige E-Mail Adresse eingeben.";

      //Ueberprüen des Passworts auf zulaesige Zeichen

      if (!preg_match("/[1]*$/", $password)) $fehler[]= "Das Passwort darf nur aus Buchstaben, Zahlen und _ - bestehen!";

      //Testet den Usernamen auf zulaesige Zeichen
        if (!preg_match("/[2]*$/", $username)) $fehler[]= "Der Benutzernamen darf nur aus Buchstaben, Zahlen und _ - bestehen!";

      //Testet den Namen des Offiziers auf zulaesige Zeichen
        if (!preg_match("/[3]*$/", $offizier)) $fehler[]= "Der Officiername darf nur aus Buchstaben, Zahlen und _ - bestehen!";

      if (count($fehler) == 0) {

      $dbName = "ghostsoldier";
        $dbHost = "localhost";
        $dbUser = "root";
        $dbPW = "";

      if (!(($dblink = mysql_connect($dbHost,$dbUser,$dbPW)) && (mysql_select_db($dbName,$dblink)))) die(mysql_error());

      else //Überprüfen ob Username in DB schon existiert
      {
        $name_neu = strtolower($_POST['username']);
        $sql = "SELECT
          username
          FROM
           ghostsoldier
          ";
        $result = mysql_query($sql);

      while($_data = mysql_fetch_assoc($result))
        {
         if($_data['username'] == $username)
         {
          $error[] = "Der angegebene Benutzername existiert bereits, bitte wähle einen anderen.";
          break;
         }
        }
      }
         {
      mysql_query("INSERT INTO register VALUES('','$username','$offizier','$password','$email','');") or die(mysql_error());

      echo "<html>";
         echo "<head>";
         echo "<link rel="stylesheet" type="text/css" href="css.css">";
         echo "<title>Ghost Soldier</title>";
         echo "<meta http-equiv="refresh" content="5; URL=index.php">";
         echo "<link rel="stylesheet" type="text/css" href="css.css">";
         echo "</head>";
         echo "<body>";
         echo "<h3>Sie haben sich erfolgreich registriert, aktivieren Sie ihren Account über den Link in ihrer EMail</h3><br><br>";
         echo "<h3>Sie werden sofort weitergeleitet</h3><br><br>";
         echo "<h3>Wenn Sie nicht weitergeleitet werden klicken sie <a href="index.php">hier</a></h3>";
         echo "</body>";
         echo "</html>";

      exit();
         }
      }

      echo "Fehler bei Folgenden Punkten:<ul>";
      for ($i = 0; $i < count($fehler); $i++) echo "<li>".$fehler[$i];{

      }
      echo "</ul>";
      }
      ?>

      <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <br>
      <h1><img src="images/bg.gif"></h1>

      <ul id="Navigation">
        <li><a href="index.php">Startseite</a></li>
        <li><a href="login.php">Login</a></li>
        <li><a href="register.php">Anmelden</a></li>
        <li><a href="hashdsad">News</a></li>
        <li><a href="hashdsad">Forum</a></li>
        <li><a href="hashdsad">Downloads</a></li>
        <li><a href="werben.php">Werbung</a></li>
        <li><a href="impressum.php">Impressum</a></li>
        </ul>

      <div id="Info">
        <p align="center"><a href="http://www.lima-city.de/?ref=26692" class="fff"><img src="http://www.lima-city.de/images/banner/lima-city_120x240_1.gif" border="0"  class="fff"></a></p>
      </div>

      <div id="Inhalt">
        <h2 style="text-align:center">Registrieren</h2>
        <p align="center">Hier können sie sich nun registrieren.</p>
        <p><center>
        <table border="0">
        <tr><td>Username</td><td><input type="text" name="username" class="login"></td>
        </tr>
        <tr><td>Name Ihres Offiziers</td><td><input type="text" name="offizier" class="login"></td>
        </tr>
        <tr><td>Passwort</td><td><input type="password" name="password" class="login"></td>
        </tr>
        <tr><td>PW Wdh.</td><td><input type="password" name="passwordw" class="login"></td>
        </tr>
        </tr>
        <tr><td>E-Mail</td><td><input type="text" name="email" class="login"></td>
        </tr>
        <tr><td><p align="center"><input type="submit" value="Anmelden" class="login"></p></td>
           <input type="hidden" name="schritt" value="zwei" class="login">
        </tr>
        </table></center></p>
      </div>

      <p id="Fusszeile">Melde dich kostenlos an bei Ghost-Soldier

      <?php echo "User Online: ".$row['Anzahl']."<br />";?></p>
      </form>
      </body>
      </html>


      1. a-zA-Z0-9 ↩︎

      2. a-zA-Z0-9 ↩︎

      3. a-zA-Z0-9 ↩︎

    2. Hallo,

      $sql = "[code lang=sql]SELECT name FROM daten";
        while($_data = mysql_fetch_assoc($result))[/code]

      warum machst du etwas mit php, was mysql viel besser kann? - so musst du _alle_ Benutzernamen durch die Schnittstelle mysql-php bringen was je nach Anzahl der Datensätze sehr (im Bezug auf die Performance) teuer sein kann.

      Grüße aus Nürnberg
      Tobias

  2. Für mich sieht das durcheinander aus. Und warum >0?? So sollte es gehen:

    $sql = 'SELECT * from ghostsoldier WHERE register="'.$username.'"';
    $result = mysql_query($sql);
    $Eintrag = mysql_num_rows($result);
      if($Eintrag != 0)
      {
       echo "Username vergeben";
       }

    Hi dieser Script soll prüfen, ob der Username schon vergeben ist, aber ich bekomme eine fehlermeldung zurück, weiß aber nicht warum...

    $Eintrag = mysql_num_rows($result);
    $sql = 'SELECT * from ghostsoldier WHERE register="'.$username.'"';
        $result = mysql_query($sql);
        if($Eintrag>0)
        {
        echo "Username vergeben";
        }

    1. Hi,

      Für mich sieht das durcheinander aus. Und warum >0??

      weil es nur eine positive anzahl an zeilen geben kann? Oder hab ich was verpasst?

      MfG

      1. Danke, ich habe es flasch gelesen. Klar geht das auch. Es heißt ja größer null. Wie komm ich auf kleier null? Is noch zu früh!

        Hi,

        Für mich sieht das durcheinander aus. Und warum >0??

        weil es nur eine positive anzahl an zeilen geben kann? Oder hab ich was verpasst?

        MfG

        1. Ja heb es so gemacht wie ihr es geschrieben habt, so kamm es zurück:

          Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\apachefriends\xampp\htdocs\ghostsoldier\register.php on line 73

          und das steht in zeile 73:

          $eintrag = mysql_num_rows($result);

          Malte Kiefer

          1. Hallo Malte,

            erstmal hast du von dem, was ich dir gestern geschrieben hatte, rein gar nichts umgesetzt.
            Aber zum Problem - kann es sein, dass deine Variable $eintrag einmal groß und einmal klein vorkommen?
            In deinem Skript ein paar Posts überhalb heißt es noch $Eintrag = [...] und jetzt schreibst du, die betreffende Zeile sieht so aus $eintrag = [...]?

            Schönen Gruß aus München

            die knappschaft

            --

            sh:(  fo:|  ch:?  rl:°  br:$,<,>  n4:&  ie:|  mo:|  va:)  de:]  zu:)  fl:|  ss:|  ls:[,#
  3. Hi,

    $Eintrag = mysql_num_rows($result);
    $sql = 'SELECT * from ghostsoldier WHERE register="'.$username.'"';
        $result = mysql_query($sql);
        if($Eintrag>0)
        {
        echo "Username vergeben";
        }

    Also in der reihenfolge geht das nicht. du musst das etwas umstellen:

    $sql = 'SELECT * from ghostsoldier WHERE register="'.$username.'"';
    $result = mysql_query($sql);
    $Eintrag = mysql_num_rows($result);
    if($Eintrag>0)
    {
    echo "Username vergeben";
    }
    else
    {
    //hinzufügen des benutzers
    }

    MfG