# zufällige ID mit PHP erzeugen



## NetBull (24. April 2004)

Hi NG,

ich versuche eine zufällige ID innerhalb einer mySQL Datenbank zu erzeugen.

Problem: Eine Datenbanktabelle soll mit einer zufälligen 64stelligen ID versehen werden, wobei natürlich jede ID einzigartig sein muss. 

Nachdem ichunter mySQL keine Ergebnisse mit einerm definierten Format erzeugen konnte, habe ich ein PHP Tool geschrieben. Aber der Zufallsgenerator erzeugt schon nach etwa 100 ID's immer wieder ID's, die bereits vergeben wurden.

Wer kann mir sagen, wie ich entweder;
...unter mySQL eine automatische ID erzeuge, die aus 64 Zifffern oder Groß und Kleinbuchstaben besteht, bzw. ob es überhaupt eine Chance gibt

oder welchen Fehler ich im folgenden Skript habe

```
<?php
//******************************************************************************************
function NeueZufallsID($stellen)
{	//*** ermittelt einen Zufallsstring von gewünschter Länge ($stellen) 
 	//*** ... und gibt diese als String an das Aufrufende Script zurück
	$shoproot = "http://localhost";
	include ("$shoproot/OnlineShop/shop.cfg");			//*** Einlesen der Einstellungen	
	$zufallsstring = "";
	for ($i = 0; $i < $stellen; $i++)
	{//*** Läuft solange, bis die Anzahl der gewünschten Zeichen gesetzt sind		
		$x = rand (0, 2); //*** Auswahl ob groß- oder Kleinschreibung, bzw Ziffer
		switch($x)
		{			
      case 0:
        $Zeichen = rand (48, 57); // Ziffern von 0 bis 9 als ASCII Werte
        $zufallsstring = $zufallsstring.chr($Zeichen); // anhängen des Zeichens
      break;
      case 1:
        $Zeichen = rand (65, 90); // Zeichen von A bis Z als ASCII Werte
        $zufallsstring = $zufallsstring.chr($Zeichen); // anhängen des Zeichens
      break;
      case 2:
        $Zeichen = rand (97, 122); // Zeichen von A bis Z als ASCII Werte
        $zufallsstring = $zufallsstring.chr($Zeichen); // anhängen des Zeichens
      break;
    }
	}
	return $zufallsstring;
}//*****************************************************************************************
?>
```

[Johannes Röttger]
Ich hab das mal schön gemacht.
[/Johannes Röttger]


----------



## StefanR (24. April 2004)

Siehst du den PHP Button im Formular nicht.....?


----------



## nautiLus` (24. April 2004)

In PHP gibts ja auch eine Funktion für eine einzigartige ID:

[phpf]uniqid[/phpf]

Die kannst ja dann länger, kürzer oder sonst was noch alles machen.

Ciao,

Nauti


----------



## NetBull (25. April 2004)

Erstmal Danke für die Antwort und gleich noch eine Frage:

Wenn die ID's in kurzen Zeitabständen vielfach erzeugt werden, kann es dann nicht auch zu doppelten ID's kommmen, wenn diese aufgrund der Mikrotime erzeugt werden. 

Denn was ich selber programmiert habe ist nicht s anderes, wenn man mal davon absieht, das ich das Rad neu erfunden habe, weil ich in meinen Referenzen nicht auf diese Funktion gestoßen bin....

Salü,
NetBu||


----------

