neueste Inhalte aus Datenbank

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

  • neueste Inhalte aus Datenbank

    ...erst mal Danke an Titus.
    War ja recht einfach. (Schäm..)
    Aber jetzt häng ich doch wieder.
    In der Tabelle gibt es drei Spalten:
    Seite, Datum und Inhalt. Seite 2 oder 5 und entsprechender Inhalt können also mehrmals vorkommen, jeweils mit dem neuen Änderungsdatum.
    Wie schaffe ich es, dass ich alle Seiten mit nur dem aktuellsten, also letzten Änderungsdatum anzeigen kann?
    Mit "select seite, inhalt from brochure order by datum desc limit 0,1" wird natürlich nur die am zuletzt geänderte Seite angezeigt.
    Bestimmt nicht so schwierig. Wenn mans weiß.
    Danke

  • #2
    für alle mit dem aktuellsten Datum:
    $q = mysql_query ('select distinct Datum from Tabelle order by Datum desc limit 0,1');
    $letztes = mysql_fetch_result($q,0,'Datum');
    $q = mysql_query("select * from Tabelle where Datum='$letztes'");

    für alle von heute:
    $q = mysql_query('select * from Tabelle where Datum=now()');
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Da hab ich dann auch gleich mal ne generelle Frage zu, was ist, wenn die einzelnen Seiten an unterschiedlichen Tagen geändert wurden und ich von jeder Seite die neuste Version haben will?
      Also Seite 3 wurde heute geändert, Seite 5 gestern und der Rest am Sonntag und ich will jetzt von jeder Seite die neueste Version haben.

      Wie geht das?

      cu tj99de
      Of all things I've lost
      I miss my mind the most

      Kommentar


      • #4
        letztes Besuchsdatum merken, beim nächsten Besuch in $letzterbesuch ablegen und

        mysql_query ("select * from Datum where Datum>='$letzterbesuch'");
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Dann bekomme ich aber nur die Seiten, die nach meinem letzten Besuch geändert wurden.
          Ich will aber immer die neuste Version aller Seiten haben, egal wann die geändert wurden. Es ist ja durchaus möglich, daß ich an einer Seite 3 Monate lang nix mache, weil der Teil schon fertig ist und ich nur täglich an den anderen Seiten arbeite.
          Of all things I've lost
          I miss my mind the most

          Kommentar


          • #6
            ...genau das meinte ich ja:
            an unterschiedlichen Tagen geändert.
            Und dann von allen den neuesten Stand aufrufen.
            Klappt immer noch nicht.
            Mit "$letztes = mysql_fetch_result($q,0,'Datum');" stimmt was nicht.

            Kommentar


            • #7
              Bei der von Titus genannten Methode werden nur alle die Seiten ausgegeben, bei denen die letzte Änderungen mit der spätesten vorgenommenen Änderung übereinstimmt. Daher entfallen alle die Seiten, die davor geändert wurden.
              Beispiel:
              Seite 3 wurde gestern geändert
              Seite 4 wird heute geändert
              Die Abfrage liefert nur Seite 4, aber nicht Seite 3

              Das muß also irgentwie anders gehen.
              Man könnte ne Schleife machen, in der für jede Seite die letzte Version ausgelesen wird, aber das muß auch einfacher und vor allem schneller gehen.

              cu tj99de
              Of all things I've lost
              I miss my mind the most

              Kommentar


              • #8
                ...und wenn man alle Seitenzahlen in einen Array schreibt:
                $seite=array(1,2,3...);
                Dann mittels einer Schleife alle Seitenzahlen abfrägt und da wiederrum nach der neuesten Version sucht und diese mit Inhalt ausgibt.
                Täume nichts als Träume

                Kommentar


                • #9
                  ...na also. So geht's:
                  <?
                  if(@$anzeigen) {
                  include ("connect.php3");
                  $s=array(1,2,3);
                  while(list($k, $a) = each($s)) {
                  $result = mysql_db_query("bericht","select seite, text from brochure where seite='$a' order by datum desc limit 0,1");
                  $num=mysql_num_rows($result);
                  if($num>0){
                  for ($i=0; $i<$num; $i++)
                  {
                  $seite=mysql_result($result, $i, "seite");
                  $text=mysql_result($result, $i, "text");
                  echo $seite."&nbsp;&nbsp;".$text."<br>";
                  }
                  }
                  }
                  }
                  ?>

                  Kommentar


                  • #10
                    oder mit nur einer Query und einer Schleife:
                    PHP-Code:
                    $seite false;
                    $q mysql_db_query("bericht","select seite, text from brochure
                      order by seite, datum desc"
                    );
                    while (
                    $x mysql_fetch_assoc($q))
                    {
                      if (
                    $x['seite']!==$seite)
                      {
                         
                    $seite $x['seite'];
                         
                    var_dump($x); // oder ne andere Methode, um $x auszugeben
                      
                    }

                    Es werden zwar alle ausgelesen, aber von jeder seite jeweils nur die neueste ausgegeben

                    Anzahl der Seiten: select count(distinct seite) from brochure
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar


                    • #11
                      Danke Titus!
                      An so eine Lösung hatte ich gedacht, hatte nur keine Ahnung, wie man die Abfrage basteln muß.
                      Of all things I've lost
                      I miss my mind the most

                      Kommentar


                      • #12
                        Anderer Lösungsvariante

                        Hoi zäme

                        Ich löse dies etwas anders.
                        Bei meiner DB sind immer folgende Felder vorhanden:
                        NRVERHI = Nummer Version History
                        Eintrag 9999 aktuellste Version
                        Eintrag 0001 erste Version History
                        Eintrag 0002 zweite Version History
                        usw.

                        STAKT00 = Status aktiv
                        Eintrag 2 = aktiv
                        Eintrag 8 = gelöscht

                        also zum Beistpiel:
                        NRVERHI STAKT00
                        9999 2 --aktiv
                        0001 8 --erster Hystoryeintrag
                        0002 8 --zweiter Hystoryeintrag
                        0003 8 --dritter Hystoryeintrag

                        Damit erreiche ich dass ich im Query schreiben kann:
                        and NRVERHI = 9999 and STAKT00 = 2

                        und erhalte immer die neuste Version.

                        Kommentar


                        • #13
                          Die Idee ist auch nicht schlecht.
                          Allerdings würde ich die aktuelle Version '0000' und nicht '9999' nennen, dann geht das mit der Verschiebung beim Aktualisieren nämlich einfacher:

                          update brochure set version=verson+1 where seite='$seite';
                          insert into brochure (seite, version, inhalt) values ('$seite', '0000', '$inhalt');

                          und das "update ... set version='0001' where version='9999'" entfällt
                          mein Sport: mein Frühstück: meine Arbeit:

                          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                          Kommentar


                          • #14
                            Deine Idee ist auch nicht schlecht.
                            Ich habe den Wert '9999' genommen, weil der Wert '0000' ja von anderen Programmen oder Programmierer als nichts interpretiert werden könnte.

                            Als Sicherheit nehme ich desshalb das in Kauf.

                            Kommentar


                            • #15
                              hmm ... stimmt *zuOracleschiel*
                              dann vielleicht doch eher '0001' ff
                              Hat die gleichen Vorteile wie die erste Idee
                              und vermeidet den Nachteil mit der Null
                              mein Sport: mein Frühstück: meine Arbeit:

                              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                              Kommentar

                              Lädt...
                              X