order by rand() aber eigentlich nicht wirklich

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

  • order by rand() aber eigentlich nicht wirklich

    Ich stell mir sowas vor:

    Ich lese ne datenbank - "ORDER by rand()" - aus. Da aber zuviele Einträge vorhanden sind, wird alles auf mehrere Seiten aufgeteilt. Also bräuchte ich sowas wie

    - 1. Schritt # Zufälliger Aufruf
    - 2. Schritt # Order auf den anderen Seiten behalten

    Beim ersten Aufruf der Seite also per Zufall. Nun hab ich aber über 5000 Einträge - die kann ich doch net alle in einer Session eintragen, oder wäre gerade dies sinnvoll?
    Signatur-Text ...

  • #2
    Speichere (z.B. Session) doch die bereits angezeigten IDs und prüfe auf den Folgeseiten, dass die gewählte ID nicht bereits vorgekommen ist.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      also hab ich dann bei der letzten seite trotzdem alle IDs in der Session
      Signatur-Text ...

      Kommentar


      • #4
        dann hat er auf der letzten seite auch annähernd 5000-session einträge

        eher die frage: ists unabdingbar, dass die ausgabe zufällig is??

        (nebenbei: habe noch nicht gehört, dass ein array bei 5000 einknickt. allerdings könnte der erste seitenaufruf ein wenig dauern )
        **********
        arkos
        **********

        Kommentar


        • #5
          Original geschrieben von arkos
          dann hat er auf der letzten seite auch annähernd 5000-session einträge
          Würd ich auch sagen
          eher die frage: ists unabdingbar, dass die ausgabe zufällig is??
          Muss sein - leider ...
          (nebenbei: habe noch nicht gehört, dass ein array bei 5000 einknickt. allerdings könnte der erste seitenaufruf ein wenig dauern )
          und das wäre ja das Problem - die DB erweitert sich zudem ja auch. Deswegen ja die Frage obs ne optimalere Lösung gäbe
          Signatur-Text ...

          Kommentar


          • #6
            also hab ich dann bei der letzten seite trotzdem alle IDs in der Session
            entweder bei der letzten oder bereits bei der ersten
            Du hast die Wahl
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              ich kenne den anwendungsfall nicht. muss die liste wirklich PRO AUFRUF rand-sortiert sein?

              mein hintergedanke: einmal pro tag statische seiten (per cron o.ä.) mit rand()-sortierung aus der db zu generieren...
              **********
              arkos
              **********

              Kommentar


              • #8
                - Zufallszahl o. zufällige Zeichenfolge generieren
                - In Session Speichern
                - Beim auslesen aus der Tabelle ein Feld generieren, dass einen MD5-Hash aus einem beliebigen Feld verlängert um unsere Zufallszeichenkette bildet
                - Nach diesem Feld sortieren

                Du hast während einer Session die selbe Reihenfolge, bei (nahezu) jeder neuen Session aber eine neue.
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Original geschrieben von arkos
                  ich kenne den anwendungsfall nicht. muss die liste wirklich PRO AUFRUF rand-sortiert sein?

                  mein hintergedanke: einmal pro tag statische seiten (per cron o.ä.) mit rand()-sortierung aus der db zu generieren...
                  Das wär an sich ne gute Idee - gedacht wars so:

                  Startseite = Zufalls-Sortierung
                  Unterseiten = Sortiert nach dem vorherigen Zufall

                  Also wenn man Startseite aufruft = neue Sortierung - Sonst nicht
                  Signatur-Text ...

                  Kommentar


                  • #10
                    Original geschrieben von unset
                    Beim auslesen aus der Tabelle ein Feld generieren, dass einen MD5-Hash aus einem beliebigen Feld verlängert um unsere Zufallszeichenkette bildet - Nach diesem Feld sortieren
                    Das hab ich jetz nicht kappiert - den rest schon erklär ma pls genauer - das klingt verdammt interessant
                    Signatur-Text ...

                    Kommentar


                    • #11
                      Schau dir die MySQL-Funktionen CONCAT und MD5 an.
                      [FONT="Helvetica"]twitter.com/unset[/FONT]

                      Shitstorm Podcast – Wöchentliches Auskotzen

                      Kommentar


                      • #12
                        - 1. Schritt # Zufälliger Aufruf
                        - 2. Schritt # Order auf den anderen Seiten behalten
                        No Problemo !!
                        Das MySQL Rand hat eine Besonderheit:

                        Man speichere in Session eine Zufallszahl -> $zufall
                        SELECT * FROM irgendwas ORDER BY RAND($zufall) LIMIT $start,10
                        So bekommt jede Session seine eigene STABILE Zufallsreihenfolge.

                        (aber sonderlich performant, ist das Spielchen nicht)
                        Zuletzt geändert von combie; 20.11.2007, 16:16.
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Performanter als meine Lösung
                          [FONT="Helvetica"]twitter.com/unset[/FONT]

                          Shitstorm Podcast – Wöchentliches Auskotzen

                          Kommentar


                          • #14
                            Original geschrieben von combie
                            No Problemo !!
                            Das MySQL Rand hat eine Besonderheit:

                            Man speichere in Session eine Zufallszahl -> $zufall
                            SELECT * FROM irgendwas ORDER BY RAND($zufall) LIMIT $start,10
                            So bekommt jede Session seine eigene STABILE Zufallsreihenfolge.

                            (aber sonderlich performant, ist das Spielchen nicht)
                            KK - da nur 10 Anzeigen pro seite sind - nunja der server dürfte nicht zusammenbrechen
                            Signatur-Text ...

                            Kommentar

                            Lädt...
                            X