"Nächste-News" Funktion

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

  • "Nächste-News" Funktion

    Hallo,

    habe ein News-Script selbst geschrieben, nur jetzt stehe ich vor einem Problem wo mir die Idee verloren gegangen ist...

    Wenn ein News-Beitrag angezeigt wird (z.B. mit der id 7 laut MySQL) dann möchte ich das der User durch klicken auf "Nächster News-Beitrag" zur nächsten News gelangt.

    Problem: Es muss aber nicht sein das die id der nächsten News 8 lautet. Es könnte ja sein das id 8 offline geschaltet ist (habe da eine status-abfrage eingebaut) oder gelöscht wurde.

    Wie kann ich also herausfinden wie die nächste news-id nach 7 lautet, WHERE status='1' ?

    Danke für die Hilfe,

    Christoph

  • #2
    suche mal nach "blättern" oder "seitenweise blättern". IMHO gibts sogar im Codeschnipsel was.

    Kommentar


    • #3
      @asp: soviel muss doch nicht sein ...

      @christoph: kombinier doch einfach deine Bedinungen ...

      du willst die ID : select news_id from news
      der ersten Nachricht: limit 0,1
      nach ID aufsteigend: order by news_id
      mit ID>7 und Status 1: where news_id>7 and status='1'


      jetzt das ganze nur noch in die richtige Reihenfolge bringen:

      du willst die ID : select news_id from news
      mit ID>7 und Status 1: where news_id>7 and status='1'
      nach ID aufsteigend: order by news_id
      der ersten Nachricht: limit 0,1


      macht zusammen:

      select * from news where news_id>7 and status='1' order by news_id limit 0,1
      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


      • #4
        @ Titus

        Danke, ist ja wirklich eine einfache lösung, nur auf den gedanken muss man erstmal kommen ;-)

        Kommentar


        • #5
          So, nur noch ein klitzekleines problem:

          PHP-Code:
          $query "SELECT id FROM game2_news WHERE id>$row[id] AND status='1' ORDER BY id limit 0,1";
          $result mysql_query($query);
          $next mysql_fetch_array($result); 
          Das obige funktioniert problemlos, doch das hier:

          PHP-Code:
          $queryl "SELECT id FROM game2_news WHERE id<$row[id] AND status='1' ORDER BY id limit 0,1";
          $resultl mysql_query($queryl);
          $prev mysql_fetch_array($resultl); 
          macht Probleme. Gibt immer nur ein und dieselbe ID zurück (indem Fall 3). Gibts da einen erkennbaren Fehler?

          Kommentar


          • #6
            ok, habs raus.

            hab dann ORDER BY id DESC geschrieben, nun gehts

            Kommentar


            • #7
              Wie funktioniert das Ganze, wenn ich keine MySql, sondern eine SqlServer 2000 Datenbank habe ? LIMIT kennt der nämlich nicht!
              Don.Zwiebel

              Der frühe Vogel fängt den Wurm, aber die zweite Maus bekommt den Käse.

              Kommentar


              • #8
                mit Top, aber wenn du Darstellungen wie << 1 2 3 4 5 >> haben möchtest
                dann mußt du mit Sub-Select und Top tricksen, überlege mal, ist nicht schwer

                Kommentar


                • #9
                  Hallo Don.Zwiebel,

                  ja, leider kann der SQL-Server kein Limit ... ich leide auch schwer darunter

                  Stattdessen kannst du mit SELECT TOP 1 ... arbeiten.

                  Kommentar


                  • #10
                    @asp2php: ist es da nicht einfacher mit mssql_data_seek zu arbeiten ?!

                    Kommentar


                    • #11
                      ähm ... ist auch wahr, habe bisher noch keinen Bedarf, sowas zu machen, daher ...

                      Kommentar


                      • #12
                        Original geschrieben von Patrick_PQ
                        @asp2php: ist es da nicht einfacher mit mssql_data_seek zu arbeiten ?!
                        einfacher vielleicht ja, aber nicht performanter.

                        damit müsstest du ja erst mal alle datensätze selektieren, und kannst erst scriptseitig die raussuchen, die du wirklich anzeigen willst.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar

                        Lädt...
                        X