eindeutige ID

polar

Mitglied
Hallo,

das Problem ist zwar ein allgemeines, aber ich versuche es in PHP umzusetzen - also... ich benötige eine absolute eindeutige ID, die nicht mehr als fünf Stellen haben sollte, am besten nur vier :)

Nun könnte man ja mit Hilfe der Zeichen [A-Z], [a-z] und [0-9], bei einer vierstelligen Ziffer, 62^4 zufällige Zahlen erstellen. Nun kann es aber passieren, das irgendwann eine Ziffer generiert wird, die schon vorhanden ist. Gibt es da evtl. eine mögliche Lösung, das zu umgehen?

Ich habe mir gedacht vielleicht könnte ich die Anzahl vorhandener Einträge mit in's Spiel bringen, also irgendwie mit einbeziehen. Wenn ich diese aber nur plump addiere, wird die ID zu groß =)

evtl. könnte man auch auf Basis der Anzahl vorhandener Einträge, anfangs sehr kleine ID's und später größere erstellen.

Die einzige Idee die mir sonst noch einfällt wäre, die bereits eingetragenen ID's mit der generierten vergleichen, falls diese schon vorhanden ist, wird eine andere generiert.
 
Wieso sollten es denn so wenige Stellen sein?

Was versuchst du zu realisieren? Vielleicht lässt es sich auch anders lösen.

greetz
daddz
 
das Problem ist zwar ein allgemeines, aber ich versuche es in PHP umzusetzen - also... ich benötige eine absolute eindeutige ID, die nicht mehr als fünf Stellen haben sollte, am besten nur vier
schau dir mal die Theorie von GUID an http://de.wikipedia.org/wiki/Guid
und die Realisierung mit uniqid() in php http://de2.php.net/manual/de/function.uniqid.php .
Wieso soll deine id nur vier Stellen haben?

Nun kann es aber passieren, das irgendwann eine Ziffer generiert wird, die schon vorhanden ist. Gibt es da evtl. eine mögliche Lösung, das zu umgehen?

Nummer erstellen
Überprüfen ob es die Nummer schon gibt zB in Datenbank
wenn ja Spiel von vorn wenn nein Nummer zur Verwendung freigeben
 
Ich habe grad nochmal in meinen Repositories geschaut und das hier gefunden.

PHP:
function createID( $size )
{
	$result = '';
	do {
		srand( (double) microtime() * 1000000 );
		for( $i=0; $i<$size; $i++ ) {
			$num = rand(48,120);
			while( ($num >= 58 && $num <= 64) || ($num >= 91 && $num <= 96) ) {
				$num = rand(48,120);
				$result .= chr($num);
			}
			$rowCount = mysql_num_rows( mysql_query("SELECT `wert` FROM table WHERE `wert` = '$result'") ); // double check the DB
	} while( $rowCount <= 0 );
	return $result;
}
 
Wieso sollten es denn so wenige Stellen sein?
Nun, die ID wird an eine URL angehängt und diese soll, so kurz wie nur irgendmöglich sein =)

Aber erstmal danke für eure Antworten. Ich wühl mich mal durch die Links usw.
 
  • Gefällt mir
Reaktionen: jan
Zurück