eindeutigen Key generieren..

$horty$

Mitglied
Hallo zusammem,

ich habe folgendes Problem:

ich möchte einen Key generieren der eindeutiges Merkmal eines Datensatzes ist, dieser darf aber nur einmalvorkommen, also speicher ich alle keys in einer Tabelle.

Wo mir bis jetzt die Logik fehlt is beim generieren des Schlüssels. Ich muss vorher sicherstellen dass er nicht schonmal inder Tabelle vorhanden ist und wenn er vorhanden ist möchte ich einen neuen generieren, bis einer generiert wird, der nicht in derTabelle vorhanden ist.

Code zum generieren:
Code:
$zeichen = "WERTZUPLKJHGFDSAYXCVBNM";

    srand ((double)microtime()*1000000);

    for($index = 0; $index < 3; $index++)

    {
        $key .= substr($zeichen,(rand()%(strlen ($zeichen))), 1);
    }
    for($index = 0; $index < 7; $index++)

    {
        $key1 .= substr($zeichen,(rand()%(strlen ($zeichen))), 1);
    }

    $vkey = $key;
    $vkey .= "-";
    $vkey .= $key1;

Die Frage ist wie geh ich am besten vor?

MfG
Patrick

Vielen Dank im Vorraus
 
Prüfe einfach, ob es bereits einen Datensatz mit genanntem Kriteruim gibt. Ist das der Fall, generiere eine neue ID.
 
Naja, was wohl?

PHP:
do{
 $query = mysql_query("SELECT ... WHERE `key` = '".$genKey."'");
 if(mysql_num_rows($query) > 0){
$success = false;
// neuen key generieren
} else{
$success = true;
}
   
} while($success === false);

//... key in die db etc...
 
Sorry aber ich bin halt en anfänger...
kenn nicht alle möglichkeiten die es gibt..

Aber danke für den Vorschlag scheint zu funktionieren.
 
Oder noch schöner mit Rekursion:

PHP:
function generiere_key(){

    //Hier den Key generieren
    $key = ...

    //Prüfen ob der Key schon existiert
    if(mysql_num_rows(mysql_query("SELECT key FROM table WHERE key='".$key."'")) > 0)
        return generiere_key();

    return $key;
}
 
Zurück