Wert vom vorletzten Datensatz auslesen?

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

  • Wert vom vorletzten Datensatz auslesen?

    hi leuts,

    ich trage einen neuen DS in meine Tab ein.
    danach will ich einen Wert aus einem bestimmten Feld auslesen. Allerdings nicht von dem soeben eingetragenen DS, sondern von dem DS davor.
    wie mach ich das?

    folgende abfrage funktioniert nicht weil sie sich auf den letzen anstatt den vorletzten DS bezieht:
    PHP-Code:
       $lesen mysql_query("select ACCOUNTNOifa from IFaccounts WHERE IDifa=LAST_INSERT_ID()"); 
    Was muss ich da statt LAST_INSERT_ID() eintragen?
    $PHP resource 4ever$

  • #2
    speichere dir immer beim eintragen die id ab. dann kannst du die beim nächsten INSERT in eine temp-var schreiben. somit hast du in der temp-var immer die vorletzte id.
    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
      Re: Wert vom vorletzten Datensatz auslesen?

      Original geschrieben von Metallica
      ich trage einen neuen DS in meine Tab ein.
      danach will ich einen Wert aus einem bestimmten Feld auslesen. Allerdings nicht von dem soeben eingetragenen DS, sondern von dem DS davor.
      generell kannst du dafür auch mit ORDER BY und LIMIT arbeiten.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        um das mit dem vorletzten DS zu umgehen hab ich den code jetzt umgedreht. von der logik her sogar besser.
        Aber irgendwo ist da ein fehler und ich komm einfach nicht drauf wo.
        PHP-Code:
        $date date("Y-m-d");
        //Usernummer erzeugen - Zusammensetzung: aktuelles Datum+4500 (=Beginnnummer) => zB: 200309264500
        $lesen mysql_query("select ACCOUNTNOifa from IFaccounts WHERE IDifa=LAST_INSERT_ID()"); //wäre zB: 200309264500 
        $row mysql_fetch_array($lesen)
        $oldNumberFull $row["ACCOUNTNOifa"]
        $oldNumber = ((int)substr($oldNumberFull74));
        $newNumber $oldNumber 1;
        $newAccNo $date.$newNumber//in diesem Fall also: 20030926450[b]1[/b]
        $sqlaccountinfos mysql_query("INSERT INTO IFaccounts (USERNAMEifa, PWifa, ACCOUNTNOifa, EMAILifa, DATEifa, FIRSTNAMEifa, SURNAMEifa, STREETifa, PZCTOWNifa, COUNTRYifa) VALUES ('$ifusername', '$ifpw', '$newAccNo', '$ifemail', '$date', '$ifvorname', '$ifzuname', '$ifstrasse', '$ifplzort', '$ifland')"); 
        Was paßt da nicht??
        Zuletzt geändert von Metallica; 26.09.2003, 10:48.
        $PHP resource 4ever$

        Kommentar


        • #5
          LAST_INSERT_ID() liefert genauso wie mysql_insert() die id des vom aktuellen skript zuletzt eingefügten datensatzes

          was spricht denn dagegen mittels order by zu sortieren und mit limit nur den gewünschten datensatz zu holen?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            gar nichts spricht dagegen. aber wie sieht das coding dafür aus??
            mittels der referenz check ich da leider ECHT gar nix. die is so schlecht (erklärt) das einem die worte fehlen.

            könntest du mir da bitte kurz weiterhelfen??
            wäre wirklich super. ich brauch das ziemlich dringend.
            $PHP resource 4ever$

            Kommentar


            • #7
              so schlecht kann die referenz nich sein, ich hab mein rudimentäres wissen nämlich fast ausschließlich daher
              Code:
              SELECT *
              FROM tabelle
              ORDER BY id DESC
              LIMIT 1,1
              ORDER BY id DESC sortiert dir nach id absteigend, d. h. der neuste wert steht oben, da er ja auch der größte ist

              LIMIT 1,1 liefert dir den zweiten Datensatz und zwar nur den

              P.S. welche formulierung in der referenz hat dich denn überfordert?
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                hmm, wie folgt funtzt es nicht:
                PHP-Code:
                $lesen mysql_query("SELECT ACCOUNTNOifa from IFaccounts ORDER BY IDifa DESC LIMIT 1,1");
                $row mysql_fetch_array($lesen)
                $oldNumberFull $row["ACCOUNTNOifa"]
                $oldNumber = ((int)substr($oldNumberFull74));
                $newNumber $oldNumber 1;
                $newAccNo $date.$newNumber
                was mache ich falsch?

                zur Ref: ich kenn mich in den seltensten fällen aus was die meinen. wahrscheinlich bin ich zu blöde od. sind meine problemstellungen zu speziell, was weiß ich??!!
                $PHP resource 4ever$

                Kommentar


                • #9
                  was für fehlermeldungen kommen denn,wenn du die fehlenden ; drin hast?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    JAWOHL!
                    es funktioniert.
                    die ; hab ich übersehen - sorry!

                    aber ein kleinigkeit stimmt jetzt noch nicht. er trägt mir nämlich jetzt "2003-09-261" ein anstatt "200309264501". siehe Kommentare!

                    PHP-Code:
                    $date date("Y-m-d");
                    $lesen mysql_query("SELECT ACCOUNTNOifa from IFaccounts ORDER BY IDifa DESC LIMIT 1,1");
                    $row mysql_fetch_array($lesen);
                    $oldNumberFull $row["ACCOUNTNOifa"];
                    $oldNumber = ((int)substr($oldNumberFull74)); //hier werden die letzten vier stellen herausgeholt (zB 4500)
                    $newNumber $oldNumber 1//eigentlich sollte hier 4501 und nich nur 1 rauskommen!? Warum funtzt die Addition nicht?
                    $newDate str_replace("-","",$date); //filtert Bindestriche aus Datum raus!
                    $newAccNo $newdate.$newNumber
                    Zuletzt geändert von Metallica; 26.09.2003, 11:57.
                    $PHP resource 4ever$

                    Kommentar


                    • #11
                      substr($oldFullnumber,-4);

                      und warum willst du die biondestriche, die du bei deiner date-funktion extra reinschreiben lässt, dann doch wieder rausnehmen?

                      schreib sie doch gar nicht erst rein

                      aber es wäre trotzdemgut, wenn du bei sowas den wert der variablen postest
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        also ich hab jetzt ausgiebig getestet und bin draufgekommen, dass der fehler ganz woanders liegt.

                        und zwar:
                        PHP-Code:
                        $lesen mysql_query("SELECT ACCOUNTNOifa from IFaccounts ORDER BY IDifa DESC LIMIT 1,1");
                        $row mysql_fetch_array($lesen);
                        $oldNumberFull $row["ACCOUNTNOifa"];
                        //=> $oldNumberFull ist leer sprich hat keinen Wert. irgendwas paßt bei der fetch_array-Abfrage nicht? Wiedermal hab ich leider keine Ahnung warum?? Sieht doch sauber aus !?!? 
                        $PHP resource 4ever$

                        Kommentar


                        • #13
                          und du hast dir das array $row selbstverständlich ausgeben lassen und nur vergessen es zu posten?
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            das array ist ebenfalls leer!
                            die variable der query mit orderby enthält folgenden wert: Resource id #3

                            trotzdem ist mir unklar wo da der haken ist
                            $PHP resource 4ever$

                            Kommentar


                            • #15
                              PHP-Code:
                              $lesen mysql_query("SELECT ACCOUNTNOifa from IFaccounts ORDER BY IDifa DESC LIMIT 1,1") or die(mysql_error());
                              echo 
                              mysql_num_rows($lesen); 
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X