Ankündigung

Einklappen
Keine Ankündigung bisher.

Letzten Eintrag löschen (größte ID)

Einklappen

Neue Werbung 2019

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

  • Letzten Eintrag löschen (größte ID)

    Hallo Leute,

    ich hab es hinbekommen, den letzten Eintrag zu löschen, also den Eintrag mit der höchsten ID in der Tabelle:

    PHP-Code:

    if($produkt_eingabe == "-" or $produkt_eingabe == "302rueckgaengig")
    {
        
    $hole_letzten_eintrag "SELECT MAX(id) AS letzteid FROM essen_buchung";
        
    $hole_letzten_eintrag_erg mysql_query($hole_letzten_eintrag);    
        if(
    mysql_num_rows($hole_letzten_eintrag_erg) > 0)
        {    
            
    $hole_letzten_eintrag_arr mysql_fetch_object($hole_letzten_eintrag_erg);    
            
    $loesche_letzten_eintrag "DELETE FROM essen_buchung WHERE id='".$hole_letzten_eintrag_arr->letzteid."'";        
            
    mysql_query($loesche_letzten_eintrag);
        }

    Ich wollte nur nochmal Fragen, ob es da auch einen einfacheren Weg gibt.

    PHP-Code:
    DELETE FROM essen_buchung WHERE id=MAX(id
    hat leider nicht funktioniert. Wär auch zu komfortabel gewesen

    Vielleicht wisst ihr ja noch was.

    Es geht halt, aber für das Script und für zukünftige wäre es interessant zu wissen, ob man das auch kürzer halten kann

    Danke!

    Gruß

    robat


  • #2
    In einer Client-Server-Umgebung mit mehreren Nutzern ist dieses Prinzip Unsinn. IDs sind zudem auch kein gescheites Sortierkriterium.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      PHP-Code:
      DELETE FROM essen_buchung WHERE id=(SELECT MAX(idFROM essen_buchung
      Die Lösung ist ein Sub-Select.
      Aber wie mein Vorredner gesagt hat, würde ich davon ebenfalls abraten
      "My software never has bugs, it just develops random features."
      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

      Kommentar


      • #4
        Naja es ist im Prinzip so aufgebaut:

        Die Tabelle essen_buchung ist leer.
        Dann wird nacheinander jeweils ein Essen gebucht. Die ID wird automatisch um 1 erhöht per auto_increment.
        Das letzte Essen, dass eingetragen wurde hat also die höchste ID.
        Und da ja nur per Script eingetragen werden kann, ist das doch eigentlich sehr sicher, dass da der letzte genommen wird?

        Dein SubSelect bekommt folgenden Fehler:
        You can't specify target table 'essen_buchung' for update in FROM clause

        Gruß

        robat

        Kommentar


        • #5
          OK dann befürchte ich musst 2abfragen machen, ist aber schon spät und ich habs auch net ausprobiert
          "My software never has bugs, it just develops random features."
          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

          Kommentar


          • #6
            Bei 2 Abfragen passt immer ein Insert dazwischen.
            Und da ja nur per Script eingetragen werden kann
            Client-Server-Kommunikation erlaubt beliebig viele Aufrufe desselben Scripts zur selben Zeit. Die ANtwort ist darum nein.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Zitat von robat Beitrag anzeigen
              Dein SubSelect bekommt folgenden Fehler:
              You can't specify target table 'essen_buchung' for update in FROM clause
              Mal abgesehen von dem was nikosch schrieb (dringend beachten!), müsste sich das Problem doch durch Tabellenaliase umgehen lassen!?
              Je grösser der Dachschaden, desto schöner der Ausblick zum Himmel. - [WIKI]Karlheinz Deschner[/WIKI]

              Kommentar


              • #8
                Was ist an ORDER BY id DESC LIMIT 1 auszusetzen?

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Bei 2 Abfragen passt immer ein Insert dazwischen.
                  Client-Server-Kommunikation erlaubt beliebig viele Aufrufe desselben Scripts zur selben Zeit. Die ANtwort ist darum nein.
                  Ich verstehe was du meinst, aber das geht bei diesem hier nicht, da es per Login-System geschützt ist und immer nur ein Benutzer gleichzeitig angemeldet sein kann.

                  Meldet sich die Kasse woanders an, wird die andere automatisch ausgeloggt.

                  Gruß

                  robat

                  Kommentar


                  • #10
                    Zitat von cetalian Beitrag anzeigen
                    Was ist an ORDER BY id DESC LIMIT 1 auszusetzen?
                    Sortierung nach ID ist ein Designfehler.

                    Die Aufgabe einer ID ist einzig und allein die eindeutige Identifikation eines Datensatzes.
                    Sie zur Sortierung o.ä. heranzuziehen, ist ein Missbrauch.

                    Wenn du eine Sortierung herstellen willst, dann definiere dafür ein Sortierkriterium, das von der ID unabhängig ist.

                    Kommentar


                    • #11
                      Also a) sehe ich da nicht wirklich einen Designfehler. Es gibt garantiert nur einen Eintrag gleichzeitig weil es nur einen Account auf dem System gibt, also ist die ID relativ eindeutig. Da einen extra timestamp zuzunehmen... wo wäre der Mehrwert?

                      Und b) denke ich nicht, dass wir im Anfängerforum zu viel um Design rumreden sollten .

                      Kommentar


                      • #12
                        Zitat von ChrisB Beitrag anzeigen
                        Die Aufgabe einer ID ist einzig und allein die eindeutige Identifikation eines Datensatzes.
                        Sie zur Sortierung o.ä. heranzuziehen, ist ein Missbrauch.
                        Hier geht es doch darum den Eintrag mit der höchsten ID zu löschen. Warum sollte man da nicht die ID nutzen?

                        Code:
                        DELETE FROM `essen_buchung` ORDER BY `id` DESC LIMIT 1
                        Im Grunde ist aber der ganze Ansatz fragwürdig, einen Eintrag zu löschen, den man vorher nicht identifiziert hat - dem stimme ich zu.
                        Je grösser der Dachschaden, desto schöner der Ausblick zum Himmel. - [WIKI]Karlheinz Deschner[/WIKI]

                        Kommentar


                        • #13
                          Hier geht es doch darum den Eintrag mit der höchsten ID zu löschen. Warum sollte man da nicht die ID nutzen?
                          Nein, hier geht es darum, den letzten Eintrag zu löschen. Zu einem bestimmten Zeitpunkt.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar

                          Lädt...
                          X