Zufällige Eintragsauswahl aus DB

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

  • Zufällige Eintragsauswahl aus DB

    Ich lasse aus einer DB zufällig Zeilen auslesen und wiedergeben. Nun möchte ich aber, dass keine Einträge angezeigt werden, die bereits angezeigt wurden.
    Und dort liegt mein Problem ich muss eine Schleife machen, die solange läuft, bis ein neuer zufälliger Eintrag ausgewählt wurde. Leider hat bisher keine Schleife so funktioniert wie ich es wollte. Fehler waren von Zeitüberschreitung (30sek.) bis Interne Serverfehler, die durch das Script ausgelöst wurden.
    Hat jemand eine Idee zu Problemlösung?
    Ich habe jedem Eintrag eine id zugeordnet (1 bis 300).
    Ausgeschlossen werden sollen z.B. die ids 2,34,100,198,287,298
    Ich denke das sollte eigentlich eine einfach Sache sein aber irgend wie ist der Wurm drin.
    Kaffi
    Errare humanum est

    W32.Schmalle.H@mm

  • #2
    wann wird denn der Eintrag ausgegeben? Wie merkst du dir, was schon dran war? Ist ein Wechsel nur bei einem Reload nötig oder zeitabhängig?
    Bei zeitabhängig würde ich wohl mit JavaScript arbeiten, ansonsten natürlich mit PHP, also beim Reload. Sag vielleicht erstmal, was du davon genau willst, dann gehts weiter....

    Kommentar


    • #3
      hmm,

      da hab ich jetzt ein Problem mit und zwar ob es immer nur für einen User diese Bedingung gilt oder wie ?

      Also ich würd ein Array machen und alle IDs eintragen und dann immer die ID Streichen die bereits aufgerufen wurde, wird wieder die selbe aufgerufen dann würd ich einfach die nächst freie nehmen. Das problem ist halt das du dann imer das Array von Seite zu seite mitschleppen musst. Du könnest natürlich auch eine neue Tabelle anlegen in der DB anhand der SessionID die der User mit sich rumschleppt und dann halt selbes Spiel wie mit dem Array.

      Kommentar


      • #4
        nee, für den Fall würde ich direkt die bereits getroffene Wahl als Session-Variable speichern -> so kannst du auch prima schon die von vorneherein auszuschließenden Einträge "abschalten", in dem du sie gleich zu anfang fest definierst.

        Kommentar


        • #5
          Es sollte mit php gemacht werden, JavaScript bringt mir in dem Fall nichts. Ich speicher in einer eigenen Tabelle bereits aufgerufene Einträge und die IP (reicht völlig aus, da es nur für den einen Besuch gelten soll) des Users.
          127.0.0.0 | 1,2,3,4

          Die aufgerufenen ids werden in ein array eingelesen.
          Kaffi
          Errare humanum est

          W32.Schmalle.H@mm

          Kommentar


          • #6
            Hmm, dann sag doch einfach
            SELECT * FROM tabelle WHERE (id != 1) AND (id !=2) usw....
            Dann hast Du eine "Saubere" SQL-Abfrage.

            Kommentar


            • #7
              Ah!
              Ich habe bisher immer zufällig eine Zahl auswählen lassen, dann kontrolliert ob sie genutzt werden kann - oder solange suchen bis eine gültige Zahl gefunden wurde.

              So ist es aber viel einfacher:
              SELECT * FROM webring WHERE (id != 1) AND ... ORDER BY RAND() LIMIT 1

              Da habe ich wohl wieder zu steif in die eine Richtung geschaut...

              Danke für eure Mühe!
              Kaffi
              Errare humanum est

              W32.Schmalle.H@mm

              Kommentar


              • #8
                statt where ID!=1 and ID!=2 and ID!=3 kannst du auch where ID not in (1,2,3) benutzen. Dann hat mysql noch weniger zu tun
                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


                • #9
                  Hatte es bereits so gemacht, da mir das andere zu viel Script war. Aber trotzdem Danke!
                  Kaffi
                  Errare humanum est

                  W32.Schmalle.H@mm

                  Kommentar

                  Lädt...
                  X