freie ID´s finden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • freie ID´s finden

    hallo,

    ich habe mir ein Script gebastelt bei dem sich User registriren können, sie können sich auch selber wieder löschen.
    Nur mein Problem:
    Es fängt zb mit der id 1 an und fährt dann mit der 5 fort, so wollte ich nun das die User sich registrieren die id2 bekommen und nicht die id 6 weil es die nächste in der reihenfolge wäre.

    Habt ihr eine Idee wie das geht?
    ich habe mir so gedacht das man eine scheife macht und schaut zu welcher id der benutzername fehlt. Allerdings weiss ich nicht wie ich das umsetzen soll.

    Mfg Snaq

  • #2
    Wenn das id Feld als autoincrement definiert ist, wird das nicht gehen. Weil dann die DB es nicht zulässt, dass du eine bereits verwendete id nochmals verwendest.
    Ansonsten schreibst du dir ne Fkt die alle id's aus der DB liest und diese in einer Schleife durchläuft. Dann solltest du feststellen können, welche id fehlt.
    Aber wie gesagt geht nur wenn das Feld nicht autoincrement ist.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      In meinen Augen führst du den Begriff einer eindeutigen zuordnung damit ad absurdum.
      Wenn es einen Benutzer nicht mehr länger gibt, dann sollte sein Key auch nciht mehr zu irgendeinem anderen benutzer verweisen sondern schlicht und einfach nicht mehr existieren...

      Kommentar


      • #4
        Ich schließe mich meinem Vorredner an. Die "Luft" zwischen den Keys auszunutzen ist m.E. völlig unnötig und führt nur zu Problemen. Wozu?

        Kommentar


        • #5
          hallo,

          naja so absurd ist das net, weil ich gebe nämlich die user in einer Liste aus bis zur id 40 und wenn da mal 3 und mal 4 fehlen dann sieht die liste ja sehr unschön aus und deshalb wollte ich halt die lücken füllen.

          Kommentar


          • #6
            ein nicht nachvollziehbares verlangen, irgendwelche ids ästhetisch zu gestalten.

            wenn du die liste durchnummeriert haben willst, so tue es manuell, bei der ausgabe der tabelle. und zwar in unabhängigkeit von den tatsächlichen ids.
            Zuletzt geändert von penizillin; 14.04.2006, 17:26.

            Kommentar


            • #7
              Original geschrieben von penizillin
              ein nicht navollziehbares verlangen, irgendwelche ids ästhetisch zu gestalten.
              wenn du die liste durchnummeriert haben willst, so tue es manuell, bei der ausgabe der tabelle. und zwar in unabhängigkeit von den tatsächlichen ids.
              kann ich das auch nur bestätigen Snaq, ID sollen fest bleiben, bau dir einen counter wenn.
              In Flames - Pinbal Map
              Becoming the Archetype - No Fall Too Far
              Pantera

              Kommentar


              • #8
                joa ich habe einfach ne ariable mitzählen lassen.
                Thx @ all
                ist zwar net so der tolle progger stil aber funzen tut es =)

                PHP-Code:
                <?php
                $id
                =1;
                $anzahl=0;
                echo 
                "<table border='1' width='400'>";
                echo 
                "<tr>";
                while(
                $id<41)

                         {
                             
                $username = @mysql_fetch_array(mysql_query("SELECT user FROM users WHERE id='$id'"));
                             if (
                $username['user']=="")
                                 {
                                     
                $id++;
                                 }
                             else
                                 {
                                     
                $anzahl++;
                                     echo 
                "<td width='20%' height='20' align='left'><a href='admin.php?id=".$id."'>".$username['user']."</td>";
                                     if (
                $anzahl==5)  { echo "</tr><tr>";}
                                     if (
                $anzahl==10) { echo "</tr><tr>";}
                                     if (
                $anzahl==15) { echo "</tr><tr>";}
                                     if (
                $anzahl==20) { echo "</tr><tr>";}
                                     if (
                $anzahl==25) { echo "</tr><tr>";}
                                     if (
                $anzahl==30) { echo "</tr><tr>";}
                                     if (
                $anzahl==35) { echo "</tr><tr>";}
                                     
                $id++;
                                }
                        }
                echo 
                "</tr>";
                echo 
                "</table>";
                ?>

                Kommentar


                • #9
                  brich bitte deinen code um.

                  wozu zählst du eigentlich die id manuell hoch? sowohl das als auch die begrenzung von 41 machen das skript unflexibel.

                  1. nimm die id, die aus der db kommt - dann ist sie auf jeden fall richtig.

                  2. schau dir diese seiten mal an - dort lernst du soviele ausgaben zu machen, wie du datensätze aus der db ausgelesen hast.

                  Kommentar


                  • #10
                    das mit der anzahl der datensätze verstehe ich aber nicht das was du mit der id aus der db meinst, ich schaue doch für jede id nach ob es den user gibt oder nicht und mache dann etwas.
                    Was soll ich daran anders machen?

                    Kommentar


                    • #11
                      das ist unfug.

                      schau dir die seiten an, die ich dir empfohlen habe - dort wird sehr gut erklärt, wie man eine tabelle aus der db ausliest und ausgibt.

                      Kommentar


                      • #12
                        ja okay danke, ich habe es umgebaut und es funzt perfekt und ist flexibel.

                        BIG THX


                        PHP-Code:
                        $anzahl=0;
                        $result mysql_query("SELECT user,id FROM users") OR die(mysql_error());
                        echo 
                        "<table border='0' width='600' bgcolor='#4C4743'>";
                        echo 
                        "<tr>";
                        while(
                        $row mysql_fetch_assoc($result))
                            {
                                if (
                        $row['user']!="")
                                         {
                                             
                        $anzahl++;
                                             echo 
                        "<td width='20%' height='20' align='left'><a href='admin.php?id=".$row['id']."'>".$row['user']."</td>";
                                             if (
                        $anzahl==5)  { echo "</tr><tr>";}
                                             if (
                        $anzahl==10) { echo "</tr><tr>";}
                                             if (
                        $anzahl==15) { echo "</tr><tr>";}
                                             if (
                        $anzahl==20) { echo "</tr><tr>";}
                                             if (
                        $anzahl==25) { echo "</tr><tr>";}
                                             if (
                        $anzahl==30) { echo "</tr><tr>";}
                                             if (
                        $anzahl==35) { echo "</tr><tr>";}
                                             
                        $id++;
                                        }
                                }
                        echo 
                        "</tr>";
                        echo 
                        "</table>";
                        ?> 

                        Kommentar


                        • #13
                          na, bis zur perfektion sinds noch ein paar schritte...

                          was ist, wenn die anzahl der datensätze 40 überschreitet? richtig, der zeilenumbruch wird versagen.

                          => überprüfe $anzahl nicht auf die gleichheit mit n zahlen, sondern verallgemeinere die abfrage:
                          Code:
                          wenn ( $anzahl größer 0 UND $anzahl restlos durch 5 teilbar ) 
                             gib den zeilenumbruch aus
                          und $id kannst du jetzt ganz rausnehmen.

                          übrigens, was mach die abfrage
                          PHP-Code:
                          if ($row['user']!=""
                          ?

                          Kommentar


                          • #14
                            Original geschrieben von penizillin
                            na, bis zur perfektion sinds noch ein paar schritte...

                            was ist, wenn die anzahl der datensätze 40 überschreitet? richtig, der zeilenumbruch wird versagen.

                            => überprüfe $anzahl nicht auf die gleichheit mit n zahlen, sondern verallgemeinere die abfrage:
                            Code:
                            wenn ( $anzahl größer 0 UND $anzahl restlos durch 5 teilbar ) 
                               gib den zeilenumbruch aus
                            und $id kannst du jetzt ganz rausnehmen.

                            übrigens, was mach die abfrage
                            PHP-Code:
                            if ($row['user']!=""
                            ?
                            du gibst ihm ja tolle tips ....

                            was penizillin meint:
                            a. "restlos durch 5 teilbar" = *hust*
                            b. "wenn die anzahl der datensätze 40 überschreitet" = *hust* (limit...)


                            ich finde es zwar ganz nett, dass du ihn auf seine fehler aufmerksam machst, aber wenn du schon siehst, dass er sich etwas schwer tut, könntest du ihm zumindest weiterführende literatur geben....

                            woher soll jemand wissen, dass die berechnung eines restes "modulo" heißt?

                            @snag: rtfm
                            tu den scrollbalken weg!!!!!!!!!!111
                            [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

                            Kommentar


                            • #15
                              (b) habe ich zwar nicht gemeint, aber es ist natürlich trotzdem eine sinnvolle lektüre.

                              Kommentar

                              Lädt...
                              X