Nächsten AutoIncrement Wert herausfinden?

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

  • Nächsten AutoIncrement Wert herausfinden?

    Hallo Zusammen!

    Ich würde gerne wissen wie ich mit php den nächsten AutoIncrement Wert in einer mySQL tabelle herausfinden kann. Habe das ganze bisher so gehandhabt:

    PHP-Code:
    #Nächsten AUTO-INCREMENT Wert herausfinden.
    $id=mysql_query("SHOW TABLE STATUS LIKE 'artikel'");
    $zeile0=mysql_fetch_array($id); 
    Leider läuft das ganze nur bei den neusten php Versionen. Ältere Versionen machen das nicht. Das Problem ist, das ich nicht immer die höchste ID in der tabelle "artikel" als ausgangspunkt für den nächsten AutoIncrement Wert nehmen kann. Wenn ich einen Artikel mit der ID 20 drinnen habe könnte man annehmen der nächste Wert wäre 21. Was aber wenn ein Artikel mit der ID 21 bereits existiert hat, gelöscht wurde, und mySQL beim nächsten Artikel nicht 21 sondern 22 nimmt?

    Weiß jemand eine Lösung,
    wäre sehr dankbar.

    Gruss Christian

  • #2
    PHP-Code:
    print_r($zeile0); 
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      danke, diesen befehl kannte ich bisher noch nicht. ich werde es gleich mal ausprobieren was es mir ausgibt.

      gruss christian

      Kommentar


      • #4
        Re: Nächsten AutoIncrement Wert herausfinden?

        Original geschrieben von christianpfeil

        Ich würde gerne wissen wie ich mit php den nächsten AutoIncrement Wert in einer mySQL tabelle herausfinden kann.
        wofür soll das gut sein?

        Kommentar


        • #5
          wozu braucht man die nächste autoincrement id ?


          An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

          Kommentar


          • #6
            Auto Increment ist eh fürn *sry* Ar***!
            Hab nen script, damit ich in dieser hinsicht nicht auf mysql angwiesen bin...

            B2T: Aber wofür man das braucht interessiert mich auch

            Kommentar


            • #7
              Original geschrieben von jannik
              Auto Increment ist eh fürn *sry* Ar***!
              Hab nen script, damit ich in dieser hinsicht nicht auf mysql angwiesen bin...
              Na ... der Grund für diese Aussage würde mich allerdings mal interessieren ... !

              ... lässt wohl eher auf unwissen schliessen ... !
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                wie jetzt goth ... sag bloß du wusstest nicht dass eindeutige ids in datenbanken totaler schwachsinn sind .... und sowas mit deiner erfahrung *g*

                btw: Ich will [ironie] tags hier im forum ....

                mfG

                EDIT:
                Damits net wie Spam aussieht, hier des Rätsels Lösung (oder jedenfalls eine Möglichkeit):
                http://www.hk8.org/old_web/linux/sql/ch06_05.htm

                Zuletzt geändert von DanielD; 22.08.2004, 11:34.
                CMS-X Medien- und Modelagentur

                Kommentar


                • #9
                  Original geschrieben von goth
                  Na ... der Grund für diese Aussage würde mich allerdings mal interessieren ... !

                  ... lässt wohl eher auf unwissen schliessen ... !
                  nun, goth, das sehe ich anders und gebe jannik recht.

                  Wie vergebt ihr denn die nächste Artikelnummer, Kundennr, RG-Nummer etc.?

                  etwa per auto_increment? wohl kaum.

                  Jedenfalls überlasse ich (zumindes by mySql) die Business-Logik nicht der Datenbank.

                  Ich benutze auch so eine Funktion wie vermutlich jannik:
                  ich habe eine Tabelle nummern:
                  2 Spalten:
                  bereich | nummer
                  artikelnr | 1500
                  debitor | 70001
                  ...
                  vor einem Artikel-Insert kommt: $artnr=fxgetnext("artikelnr");
                  (erhöht nummer für 'artikelnr' um 1 und returned den Wert);

                  So habe ich *vor* einem Insert die neue Nummer und kann diese in relationalen Tabellen
                  zu Artikel benutzen. Und so wird es bei Christian sein,
                  er braucht diese ID, weil er sie in anderen Tabellen referenziert.
                  (übrigens ist hier die Lösung :SELECT LAST_INSERT_ID() from tabelle; )

                  Ich benutze auto_increment, wenn überhaupt, nur für temp-Tabellen,
                  weil es auch nicht sehr portabel auf andere RDBMS ist.

                  außerdem vergeben einige mySql-Version einen ai-wert mehrfach, nachdem
                  der höchste gelöscht wurde; und das ist im günstigsten Fall schlecht.

                  Dies soll kein Streß- oder Philosophie-Post sein;
                  wenn jemand qualitative,sachliche Argumente gegen meine Version
                  vorbringt, bin ich gerne bereit, meine Arbeit umzustellen.

                  nice day
                  Quickborner

                  Kommentar


                  • #10
                    Original geschrieben von jannik
                    Auto Increment ist eh fürn *sry* Ar***!
                    Hab nen script, damit ich in dieser hinsicht nicht auf mysql angwiesen bin...

                    B2T: Aber wofür man das braucht interessiert mich auch
                    wenn du keine Ahnung hast wovon du sprichst, dann spreche lieber nicht, denn wenn du schon soviel Ahnung hast, was soll denn dann der Thread hier: http://www.php-resource.de/forum/sho...threadid=43501

                    BTW: ** verschiebe zu SQL **

                    Kommentar


                    • #11
                      Original geschrieben von Quickborner

                      Ich benutze auch so eine Funktion wie vermutlich jannik:
                      ich habe eine Tabelle nummern:
                      2 Spalten:
                      bereich | nummer
                      artikelnr | 1500
                      debitor | 70001
                      ...
                      vor einem Artikel-Insert kommt: $artnr=fxgetnext("artikelnr");
                      (erhöht nummer für 'artikelnr' um 1 und returned den Wert);
                      So habe ich *vor* einem Insert die neue Nummer und kann diese in relationalen Tabellen
                      zu Artikel benutzen.
                      Du speicherst sozusagen vor dem Insert der restlichen Daten schon die neue Nummer. Was passiert, wenn der User sich anders überlegt und auf Abbrechen klickt, währenddessen ein anderer User, der später dazu kam, seine Eingabe voll durchzieht.

                      Kommentar


                      • #12
                        Original geschrieben von Quickborner
                        nun, goth, das sehe ich anders und gebe jannik recht.

                        Wie vergebt ihr denn die nächste Artikelnummer, Kundennr, RG-Nummer etc.?

                        etwa per auto_increment? wohl kaum.

                        Jedenfalls überlasse ich (zumindes by mySql) die Business-Logik nicht der Datenbank.

                        Verlangt ja auch keiner. Aber Kundennummern, Artikelnummern und so weiter können sich ändern. Der Sinn einer AutoIncrement-ID ist die eindeutige Identifizierung eines bestimmten Datensatzes innerhalb der Datenbank, das hat mit der Business-Logik nichts zu tun. Oder was machst Du mit Kundennummern, die ein bestimmtes Format haben oder alphanumerische Zeichen enthalten? Wird daraus dann eine Varchar-ID?

                        Wenn jemand wirklich fundierte Argumente gegen AIs hat, bitte vortreten.

                        Kommentar


                        • #13
                          Sekündchen mal, pekka:

                          wir müssen sauber differenzieren zwischen Artikelnummern etc., die nur den Programmierer
                          und die Datenbank etwas angehen (artikelnr) und im Frontend sichtbaren 'Artikelnummern',
                          zB artikelcode (Varchar(x), Format: $prefix.sprintf("%06d",$artikelnr).$postfix o.ä.).

                          Aber Kundennummern, Artikelnummern und so weiter können sich ändern
                          wenn jemand die Anforderung hat, daß sich interne Artikelnr ändern müssen, hat er ein
                          (lösbares, aber) erhebliches konzeptionelles Problem.

                          jemand, der die Anforderung hat, daß sich sichtbare Artikelcodes ändern sollen, hat seine
                          wahre Berufung noch nicht gefunden; denn diese sind auf 10000 Rechnungen gedruckt
                          und in 42.000.000 Papier-Katalogen unter den Produktfotos abgebildet.
                          [es sei denn, es gibt zB juristische Gründe hierfür]

                          keine Frage, auto_increment ist bequem; aber mal ehrlich: wie !ups, muß weg.

                          Kommentar


                          • #14
                            Warum denn das..? Nehmen wir beispielsweise ein Upload-Script. Die Dateinamen sollen wie folgt aussehen: <autoinrementwert>.<filetyp>
                            Wenn der komplette Dateiname jetzt in eine Spalte geschrieben werden soll, muss vorher der nächste AutoInreament gefunden werden.

                            Kommentar


                            • #15
                              nein. erst eintragen in die DB , dann den vergebenen wert auslesen. die datei umbennen und ein update mit dem korrekten dateinamen machen. so ist das normal.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X