PHP&MySql: Doppelte Pins in der MySql-Datenbank

PowerCheat

Erfahrenes Mitglied
Hallo,
ich möchte ein Pin System erstellen bloss, leider finde ich keine passende Lösung für mein Problem.

Ich möchte bei jeder regestrierung eine pin erstellen:
Code:
<?php 
  $allow = "2345678910"; 
  srand((double)microtime()*1000000); 
  $stop = 1; 
  while($stop) { 
    $password = ""; 
    for($i=0; $i<18; $i++) { 
      $password .= $allow[rand()%strlen($allow)]; 
    } 
    if( eregi("[0-9]", $password)) { 
      $stop = 0; 
    } 
  } 
  echo $password; 
?>
Da ich aber keine eventuellen 2 gleiche Pins vergeben will benötige ich jetzt noch ein Script was überprüfen soll, ob der Pin schon in der Datenbank ist!
wenn nicht soll dieser eingetragen werden!

würde mich freuen wenn ihr mir helfen könnt.

Mit freundlichem Gruß

Josef Fröhle
 
wie wärs damit:
PHP:
$pin=123456; //Dein PIN
$sql=mysql_query("SELECT * FROM tabelle WHERE pin='".$pin."'");
if(mysql_num_rows($sql)>0) {
    echo "PIN bereits vorhanden!";
} else {
    $insert=mysql_query("INSERT INTO tabelle (pin) VALUES ('".$pin."')");
}

Der Tabellenname und die Bezeichnungen deiner Spalten müssen natürlich noch angepasst werden!
 
Zuletzt bearbeitet:
Danke, das hat mir geholfen!
---------
EDIT:

Jetzt brauche noch hilfe beim loop, ich möchte solange einen pin neu generieren lassen, bis ein neuer Pin nicht in der Datenbank ist! wie mache ich das?
habe von loops keine ahnung!

Sorry für so dumme Fragen aber einer muss Sie ja stellen! :)
 
Zuletzt bearbeitet:
Was brint das? Ich möchte ja gerne das wenn die Nutzer sich einmal zutritt zum Admin-Center verschaft hat, die Pin wieder löschen!
geht das denn dann auch ganz normal mit dem Pin?
Der Pin wird versendet bevor er in die Datenbank kommt.

aber danke!
~~~~~~~~~~
edit @ 18:01:
Tja, ich kann nicht mal die Datenbank mit UNIQUE erstellen...
schade...
 
Zuletzt bearbeitet:
Jetzt brauche noch hilfe beim loop, ich möchte solange einen pin neu generieren lassen, bis ein neuer Pin nicht in der Datenbank ist! wie mache ich das?
PHP:
<?php // UNTESTED!

  do {
    $pin = create_pin();
    $sql = mysql_query("SELECT * FROM tabelle WHERE pin='".$pin."'");
    if(mysql_num_rows($sql)>0) {
      $pinOK = FALSE;
    } else {
      $insert=mysql_query("INSERT INTO tabelle (pin) VALUES ('".$pin."')");
      $pinOK = TRUE;
    }
  } while (!$pinOK);
  

  // Dein Original-Pin-Generierungs-Code in eine Funktion gepackt
  function create_pin() {
    $allow = "2345678910";
    srand((double)microtime()*1000000);
    $stop = 1;
    while($stop) {
      $password = "";
      for($i=0; $i<18; $i++) {
        $password .= $allow[rand()%strlen($allow)];
      }
      if( eregi("[0-9]", $password)) {
        $stop = 0;
      }
    }
    return $password;
  }
  
?>
habe von loops keine ahnung!
http://de2.php.net/manual/de/control-structures.while.php
http://de2.php.net/manual/de/control-structures.do.while.php
http://de2.php.net/manual/de/control-structures.for.php
Der Pin wird versendet bevor er in die Datenbank kommt.
Mach's lieber andersrum!
Tja, ich kann nicht mal die Datenbank mit UNIQUE erstellen
Das wäre auch blöd. Feldern (das sind die Spalten in den Tabellen :-) ) wird die Eigenschaft UNIQUE zugewiesen, damit doppelten Datensätze ausgeschlossen werden.

~ snuu ~
 
Sorry aber ihrgentwie habe ich jetzt einen Fehler in dierser Zeile:

Code:
 if(mysql_num_rows($sql)>0) {

woran kann das jetzt noch liegen?
 
Denke mal nicht, dass er in der zeile liegt...

Dort wird der mysql_query verarbeitet, d.h. der Query hat mit Sicherheit irgendeinen Fehler...

Poste mal die Zeile $sql=...
 
Das klingt nach einem typischen
" *Das mal schnell aus dem forum 1:1 übernehm* "
problem...

den tabellennamen und die feldnamen musst du natürlich anpassen ;-)
 
Zurück