[SQL allgemein] Datenbank ID für Dateibenennung ermitteln

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

  • [SQL allgemein] Datenbank ID für Dateibenennung ermitteln

    Hallo!

    Habe eine kleine frage.. da ich mir selbst unschlüssig bin, wie ich es am schönsten löse, hoffe ich das ihr mir vielleicht den richtigen weg zeigen könnt.

    ich habe ein php formular, das in eine db tabelle gespeichert werden soll (die tabelle heißt archiv)

    dem formular kann man einen namen geben um es später leichter wieder zu finden:

    [PHP]echo"<input type=text name=dateiname value=dateiname>";[PHP]

    jetzt möchte ich das anstatt dateiname, immer automatisch die nächste ID aus der Datenbank da steht. Die letzte vergebene ID ist 205, also soll beim nächsten Formular statt dateiname 206 da stehen usw...

    habt ihr eine idee, wie ich das am schönsten löse?

    vielen dank für eure antworten!

  • #2
    Na dann selecte dir doch die letzte ID aus der Datenbank
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Die letzte vergebene ID ist 205, also soll beim nächsten Formular statt dateiname 206 da stehen usw...
      Würde ich jetzt nicht so machen. Denn was wenn ein User das Form holt und die ID 206 kriegen würde und er das Form nicht sofort abschickt ? Ein anderer User wird in der Zwischenzeit wohl ebenfalls die ID 206 kriegen und dann schicken es beide ab.
      Ausserdem könnte man via dem Namen dann eigene ID's an dein Script übergeben und ob das dann gut geht
      Kreiere lieber einen eindeutigen Identifier für das Form (irgendeinen Zufallsstring am besten mit md5() gehashed) und trage den bereits bei der Ausgabe des Forms in die DB ein und belege die Werte mit NULL. Stelle sicher, dass die Spalte mit dem Identifier als UNIQUE definiert ist, um Konflikte zu vermeiden. Den Identifier kannst du dann easy als hidden field in's Form einbauen und daran den zu ändernden Datensatz erkennen.

      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


      • #4
        ja habs...

        war nur grad leicht am schlauch gestanden...

        SELECT MAX(arid + 1) FROM archiv

        oft denkt man einfach zu kompliziert....

        Kommentar


        • #5
          so bekommst du aber die letzte und nicht die nächste id.

          Kommentar


          • #6
            Original geschrieben von penizillin
            so bekommst du aber die letzte und nicht die nächste id.
            Seit wann ?
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar


            • #7
              er hat sich falsch ausgedrückt. er meint
              so bekommst du aber die letzte+1 und nicht die nächste id.
              problem ist aber das gleiche, und das haben wir auch schon 100 mal durchgekaut...

              Kommentar


              • #8
                tut mir leid, habe nicht aufmerksam gelesen. hhcm hat natürlich recht.
                Die letzte vergebene ID ist 205, also soll beim nächsten Formular statt dateiname 206 da stehen usw...
                tobis einwand ist berechtigt. außerdem würde auto_increment das anliegen erleichtern.

                Kommentar


                • #9
                  Letzte + 1 ist für mich die nächste.

                  Abgesehen davon das der Threadersteller nicht auf die einwände von jahlives eingegangen ist.
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    Letzte + 1 ist für mich die nächste.
                    Ja, aber nur so lange, wie es keinen neueren Eintrag gibt.

                    Hab den Thread nicht ganz mitverfolgt, aber ich sehe auch keinen Grund, warum man hier halbe Lösungen verkaufen sollte, nur weil der TO halbherzig oder blauäugig programmiert. Schließlich werden Threads auch noch von anderen User gelesen.

                    Ein teufelskreis...

                    Kommentar


                    • #11
                      Er wollte die nächste ID in einem Formulardfeld haben (aus welchen nicht genannten gründen auch immer)

                      Ich kann nur hoffen das die Zahl zur Weiterverarbeitung des Formulars und nicht als auto_increment Verschandlung genutzt wird :P

                      Also:

                      Für alle anderen User, vergesst ID+1 nehmt auto_increment

                      gruss Chris

                      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                      Kommentar


                      • #12
                        also hier nochmal genauere erläuterungen:

                        ich habe eine tabelle archiv, wie oben erklärt.

                        diese tabelle hat eine id ("arid") die auch auto_increment ist, sowie ein feld "dateiname".

                        arid steht im augenblick auf 205.

                        wenn ich jetzt ein neues formular erstelle würde dieses ja die nummer 206 im feld id bekommen. da ich jetzt diese id zusätzlich im feld "dateiname" da stehen will brauch ich den zähler, der mir die nächste id anzeigt.

                        das ganze soll dazu dienen um das formular im dateinamen eindeutiger zu machen und zusätzlich zum namen ergänzen soll z.b. "206_formular_12"

                        ich schreibe die zahl ja nicht in das "id" feld sondern in das feld "dateiname", keine sorge mein arid feld ist autoincrement.
                        möchte nur die autoincrement zahl neben an in dateiname auch stehen haben.

                        geh ich jetzt in der annahme das mein select eine gute lösung dazu ist oder nicht?

                        hoffe ich konnte mich verständlich ausdrücken..

                        (und ps: bin nicht er, sondern sie )
                        Zuletzt geändert von yessirs; 14.08.2007, 10:14.

                        Kommentar


                        • #13
                          wenn ich jetzt ein neues formular erstelle würde dieses ja die nummer 206 im feld id
                          Ein Formular bekommt schon mal gar keine ID

                          ...da stehen will brauch ich den zähler, der mir die nächste id anzeigt.
                          das ganze soll dazu dienen um das formular im dateinamen eindeutiger zu machen und zusätzlich zum namen ergänzen soll z.b. "206_formular_12"....
                          Ein Formular im Dateinamen eindeutig?

                          Wenn du eine Tabelle hast die eine eindeutige ID hat, wozu dann noch eine ID im Dateinamen ?
                          gruss Chris

                          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                          Kommentar


                          • #14
                            weil der user das so will...

                            Kommentar


                            • #15
                              Was fürn Dateiname überhaupt?

                              Es ist eine bessere Idee, sich um die ID nicht zu kümmern sondern autoincrement das machen zu lassen. Die beiden Punkte (wenn jemand das Formular länger auflässt und wenn der letzte User ev. gelöscht wurde) machen es sonst inkonsistent. Lass einfach den neuen User anlegen, dann guckst du mit mysql_insert_id() welche ID er bekommen hat, und dann nennst du Dateien danach um.
                              ich glaube

                              Kommentar

                              Lädt...
                              X