einzigartige Zufalls-id

  • Hallo ;)

    Hab eine Frage ob das auch noch besser geht :)

    Ich möchte jedem User eine einzigartige ID zuweisen, dabei aber auf lange Zahlenkolonnen verzichten (z.B. ein 32-stelliger md5-hash)

    Hab mal folgendes gemacht:


    Erstmal die bereits vorhandenen IDs in ein Array laden:

    PHP
    $id_read = mysql_query("SELECT user_id FROM user_data");
    
    
        while($id_obj = mysql_fetch_object($id_read)){
            $idarr[] .= $id_obj->user_id;
        }

    Dann eine "Quasi-Endlosschleife" mit einem Zufallsgenerator, welche abgebrochen wird wenn die neu erzeugte ID nicht im Array vorhabden ist.#


    Da gibts doch sicher noch eine bessere Möglichkeit sollche IDs zu erschaffen?


    Gruß, Donkey

  • Naja, brauch ich für weitere Scripts - da brtauch ich halt was eindeutiges.
    Könnte ja sein dass User zufällig den gleichen Namen benutzen oder sowas :D

    Und das die ID ab und an auch per GET übergeben wird will ich da nichts Langes haben.

    EDIT:
    Im Moment hab ich noch keine User - hab erst gestern zu proggen angefangen :D

    Danke, bandit ;)

  • Hast du die User in einer Datenbank abgespeichert?
    Wenn ja, dann macht dir MySQL sowieso automatisch jedem eine ID, welche einfach auf dem Eintrag basiert.
    Das heisst der erste User hat 1, der zweite hat 2 und so weiter.
    Wenn jemand gelöscht wird, dann wird die ID nicht mehr verwendet, sondern einfach weitergezählt.
    Aber ansonsten ist uniqid() eine gute Alternative.

  • Aus der ID wird auch ne neue Tabelle für den User angelegt. also ID = Tabellenname.


    AUAAAAAAAA!!!!!!

    Und wenn du mal 1000 User hast, hast du dann 1000 Tabellen??? Nicht dein Ernst, oder?

  • AUAAAAAAAA!!!!!!

    Und wenn du mal 1000 User hast, hast du dann 1000 Tabellen??? Nicht dein Ernst, oder?

    OH MEIN GOTT!!!
    Dein armer MySQL Server tut mir jetzt schon leid.
    Das habe ich jetzt noch nie von jemandem gehört, dass er für jeden User eine neue Tabelle anlegt.

    Mach das in eine Tabelle rein.
    Was für Informationen musst du denn für jeden User speichern?
    Wenn du viele hast, dann mach einfach zwei Tabellen draus und verknüpfe sie mit JOIN.

  • So könnte es kommen.
    Könnte natürlich auch alles in eine quetschen.
    Die Frage is halt wie lang es dann dauert die auszulesen :?

    Hm... mal sehen vielleicht fällt mir ja noch was anderes ein.
    Umbauen geht ja immer ;)

    Mach das bloß nicht.
    Dann hättest du ja in jeder Tabelle nur eine Zeile pro User.

    100 Tabellen mit einer Zeile auszulesen, dauert doch länger, als eine Tabelle mit 100 Zeilen auszulesen.

    Mach das auf keinen Fall, das geht garnicht. Mysql ist doch für viele Einträge gemacht. Wieso nicht das nutzen?

    Und wieso mit ewigen Scripten eine uniqid erzeugen, wenn mysql die Funktion auto-increment hat?

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!