Webkueche: Neuste ID innerhalb einer Tabelle abfragen

Hallo,

ich benutze die Bloggingsoftware Wordpress und benötige einen Datenbankabruf der mir die ID der neusten veröffentlichten Seite wiedergibt. ich kann die kriterien durch "WHERE post_type = 'page' AND post_status = 'publish'" soweit filtern, dass er nur die veröffentlichten Seiten durchsucht. Mein Problem ist die ausgabe. Mti wlechem mysql Befehl verleite ich den Server dazu mir die ID (ein Teil der Tabelle) der neusten Seite zu übergeben.

Bisher habe ich es nur geschaft eine Funktion zu schreiben die die veröffentlichten Seiten zählt:

global $wpdb;
$numpages = (int) $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish'");

Diese hilft mir nur leider auch nicht weiter.

Es wäre toll, wenn ihr mir weiterhelfen könntet.

  1. Moin!

    Mti wlechem mysql Befehl verleite ich den Server dazu mir die ID (ein Teil der Tabelle) der neusten Seite zu übergeben.

    "Neu" impliziert ja einen zeitlichen Bezug. Hat deine Tabelle denn irgendwo ein Datum?

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. "Neu" impliziert ja einen zeitlichen Bezug. Hat deine Tabelle denn irgendwo ein Datum?

      ja: "post_date" ist ein weiterer Abschnitt der Tabelle

      vielleicht hilft der Schnipsel "ORDER BY post_date ASC LIMIT 1"

      Mir fehlt nur der Teil in dem er die "ID" ausgibt.

      1. Mir fehlt nur der Teil in dem er die "ID" ausgibt.

        Was steht zwischen SELECT und FROM?

        Alexander

        1. Was steht zwischen SELECT und FROM?

          Noch nichts, dass ist ja der springende Punkt! Ich hab keine Ahnung was da hin soll, daher frage ich ja hier.

          Mein Versuch:

          $newpage = (int) $wpdb->get_var("SELECT 'ID' FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' ORDER BY 'post_date' DESC LIMIT '1'");

          klappt jedenfalls nicht.

          1. Mein Versuch:

            klappt jedenfalls nicht.

            Was heißt "klappt nicht"? Bekommst Du zufäälig immer den String "ID" geliefert? Das ist genau das, worum Du die Datenbank gebeten hast.

            Versuch's doch erstmal mit einem schnellen Blick ins Handbuch, dort wo die Syntax des SELECT-Kommandos beschrieben wird.

            Alexander

            1. Was heißt "klappt nicht"? Bekommst Du zufäälig immer den String "ID" geliefert? Das ist genau das, worum Du die Datenbank gebeten hast.

              Es kommt einfach "You have an error in your mysql syntax ..."

              Versuch's doch erstmal mit einem schnellen Blick ins Handbuch, dort wo die Syntax des SELECT-Kommandos beschrieben wird.

              Hab ich, ich versteh garnichts :D
              Und für 1 Abfrage lohnt es sich für mich auch micht mysql zu lernen.

              SELECT ID FROM $wpdb->posts ORDER BY 'post_date' DESC LIMIT 1 WHERE post_type = 'page' AND post_status = 'publish'

              sieht für mich gar nicht so schlecht aus, gibt jedoch besagte fehlermeldung aus.

              "SELECT ID FROM $wpdb->posts ORDER BY 'post_date' DESC LIMIT 1" klappt sowie "SELECT ID FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish'" . Nur zusammen wollen sie nicht ran.

              1. Hab ich, ich versteh garnichts :D

                Dann lies nochmal.

                Und für 1 Abfrage lohnt es sich für mich auch micht mysql zu lernen.

                Doch.

                SELECT ID FROM $wpdb->posts ORDER BY 'post_date' DESC LIMIT 1 WHERE post_type = 'page' AND post_status = 'publish'

                Wo ist der Unterschied zu deinem letzten Versuch vor fünf Minuten? Warum hast Du die Änderung nicht konsequent durchgezogen?

                Alexander

                1. Hab ich, ich versteh garnichts :D

                  Dann lies nochmal.

                  mach ich.

                  Und für 1 Abfrage lohnt es sich für mich auch micht mysql zu lernen.

                  Doch.

                  ganz bestimmt nicht. Da mach ich es lieber per Hand. Das sind pro Woche 2 Minuten. Mysql richtig lernen sind locker 100 Stunden aufwärts.
                  Man beachte den Zeitunterschied.

                  SELECT ID FROM $wpdb->posts ORDER BY 'post_date' DESC LIMIT 1 WHERE post_type = 'page' AND post_status = 'publish'

                  Wo ist der Unterschied zu deinem letzten Versuch vor fünf Minuten? Warum hast Du die Änderung nicht konsequent durchgezogen?

                  der unterschied ist dass zwischen Select und From nun ID steht ;)

                  Inwieweit habe ich die Änderung nicht konsequent durchgezogen?

                  Mich würde es eher interessieren was an dieser Abfrage falsch ist. Das ganze Geplänkel hier verbraucht nur Zeit und bringt mich nicht weiter.

                  1. SELECT ID FROM $wpdb->posts ORDER BY 'post_date' DESC LIMIT 1 WHERE post_type = 'page' AND post_status = 'publish'

                    Wo ist der Unterschied zu deinem letzten Versuch vor fünf Minuten? Warum hast Du die Änderung nicht konsequent durchgezogen?

                    der unterschied ist dass zwischen Select und From nun ID steht ;)

                    Falsch. https://forum.selfhtml.org/?t=156955&m=1021013:

                    SELECT 'ID' FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' ORDER BY 'post_date' DESC LIMIT '1'

                    Wo ist der Unterschied. Was bewirkt der Unterschied?

                    Inwieweit habe ich die Änderung nicht konsequent durchgezogen?

                    Zuerst hast Du die Datenbank nach dem String "ID" gefragt. Jetzt bittest Du Sie, die gesammtelten IDs nach dem String "post_date" zu sortieren. Außerdem redest Du aus Sicht des SQL-Parsers wirres Zeug. SQL besteht darauf, das Teile eines Kommandos in einer bestimmten Reihenfolge kommen. Auf Deutsch kann man Worte fast beliebig anordnen, auf Englisch geht das nur noch eingeschränkt, und in SQL gar nicht. Die erforderliche Reihenfolge steht in der Doku.

                    Mich würde es eher interessieren was an dieser Abfrage falsch ist.

                    Das sage ich Dir die ganze Zeit.

                    Das ganze Geplänkel hier verbraucht nur Zeit und bringt mich nicht weiter.

                    Du kannst es ja auch gerne nochmal mit der Dokumentation versuchen. Du wirst, um SELECT zu lernen, keine 100 Stunden brauchen, eher 10 bis 30 Minuten.

                    Alexander

                    1. Inwieweit habe ich die Änderung nicht konsequent durchgezogen?

                      Zuerst hast Du die Datenbank nach dem String "ID" gefragt. Jetzt bittest Du Sie, die gesammtelten IDs nach dem String "post_date" zu sortieren. Außerdem redest Du aus Sicht des SQL-Parsers wirres Zeug. SQL besteht darauf, das Teile eines Kommandos in einer bestimmten Reihenfolge kommen. Auf Deutsch kann man Worte fast beliebig anordnen, auf Englisch geht das nur noch eingeschränkt, und in SQL gar nicht. Die erforderliche Reihenfolge steht in der Doku.

                      Naja Ich möchte die Datenbank dazu bringen, dass sie die ID's nach dem Alter sortiert und mir die neueste ID ausgibt.

                      Mich würde es eher interessieren was an dieser Abfrage falsch ist.

                      Das sage ich Dir die ganze Zeit.

                      Aber so, dass es mir nicht weiterhilft.

                      Das ganze Geplänkel hier verbraucht nur Zeit und bringt mich nicht weiter.

                      Du kannst es ja auch gerne nochmal mit der Dokumentation versuchen. Du wirst, um SELECT zu lernen, keine 100 Stunden brauchen, eher 10 bis 30 Minuten.

                      Das kann natürlich sein, aber mit der doku die ich gefunden hatte wäre es sicherlich länger gewesen. Allein das Durchklicken durch rund 40 Unterpunkte einer funktion dauert schon ein wenig länger als 30 Minuten.

                      Könntest du mir vielleicht den Link zu der von dir angedachten Dokumentation geben?

                      1. Ich habe nun aus der Not herraus meinen Server mit Anfragen bombardiert und einfach zufällig ausprobiert, was klappt, und siehe da:

                        SELECT ID FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' ORDER BY ID DESC LIMIT 1

                        klappt prima!