täglich zufällige ID aus Datenbank

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

  • täglich zufällige ID aus Datenbank

    Hallo Leute !

    ich steh grad vor einem Problem

    ich will mir folgende Funktion schreiben

    function GetIDOfTheDay ( $ tablename )

    Die Funktion soll mir für eine mysql tabelle eine gültige ID aus tablename liefern. Wie könnte ich das effektiv lösen ?
    Alle IDs in ein array einlesen, und daraus ein zufälliges Element auswählen wäre natürlich eine Möglichkeit aber eben nicht wirklich effektiv.

    Hat jemand einen Vorschlag ?



    Manuel

  • #2
    RAND() (ja, ich habe es groß geschrieben, weil ich die MySQL-Funktion meine.)

    Die ID die du bekommst, musst du dann irgendwo zwischenspeichern, datei/datenbank oder sonst wo, am besten mit Datum, damit du weißt, von welchem Tag sie ist, usw...

    Kommentar


    • #3
      Ich kann mir jetzt nicht wirklich vorstellen wie die mysql anfrage aussieht

      Kommentar


      • #4
        ORDER BY RAND() LIMIT 1
        ich glaube

        Kommentar


        • #5
          Original geschrieben von ministry
          ORDER BY RAND() LIMIT 1
          Ist übrigens böse:
          http://phpperformance.de/zufaelligen...tz-auswaehlen/
          http://phpperformance.de/performanter-zufall-gibts-das/

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Interessanter Artikel, kannte ich noch nicht...

            Allerdings, IdOfTheDay wird ja logischerweise nur einmal am Tag ermittelt, da dürfte es ja schonmal ein Sekündchen dauern - aber prinzipiell hast du natürlich Recht.
            ich glaube

            Kommentar


            • #7
              Original geschrieben von ministry
              Interessanter Artikel, kannte ich noch nicht...
              Ist bei den meisten Datenbanken auch vollkommen lächerlich zu beachten, aber irgendwann sind die Babies halt ausgereift...

              Genauso wie niemand darüber nachdenkt, dass ein
              LIMIT $seite*$pro_seite, $pro_seite
              irgendwann böse sein kann... nämlich wenn da ein Query wie
              LIMIT 83000, 30
              draus wird, auf einmal werden nämlich 83030 Datensätze selektiert und 83000 davon weggeworfen... und das ist idT dann ein größeres Problem ^^;

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                ok, also i fass nochmal zusammen:

                der zufällige tabelleneintrag soll nur 1x täglich berechnet werden.
                Und diese zufällige Zahl dann irgendwo abspeichern.
                irgendwie bin ich mit dem nicht ganz glücklich. Die Funktion soll ja für jede beliebige tabelle mit ID's funktionieren.
                Man würde also für jede tabelle eine Datei erzeugen mit der aktuellen zufallszahl. Oder soll ich die zufallszahlen in einer eigenen tabelle speichern.
                Soll diese Zufallszahl dann bei ersten aufruf der php-datei generiert werden oder ? Ein Freund von Conjobs bin ich nicht wirklich.

                Oder hat jemand eine andere - halbwegs performante Lösung ?

                Manue
                Zuletzt geändert von geishauserm; 27.06.2007, 20:00.

                Kommentar


                • #9
                  Die einzige Möglichkeit ohne sie abzuspeichern, wäre irgendwie das Datum zu verwursten, aber das ist halt kein richtiger Zufall.

                  Ich würde die Zufallszahlen beim jeweils ersten Aufruf generieren, in eine eigene Tabelle speichern und ggf. dort auch die Zahlen von "gestern" wieder löschen wenn du sie nicht mehr brauchst.
                  ich glaube

                  Kommentar


                  • #10
                    ja ich denke auch auch - das wird das beste sein
                    eine eigene tabelle randoms mit den spalten
                    tablename , random_number, und date

                    Kommentar


                    • #11
                      der zufällige tabelleneintrag soll nur 1x täglich berechnet werden.
                      Berechnet wird hier gar nichts ein einfacher SELECT (s.o.) reicht bei deinem Vorhaben schon aus.

                      Und diese zufällige Zahl dann irgendwo abspeichern.
                      Nein, du sollst dein ID(!) speichern!

                      irgendwie bin ich mit dem nicht ganz glücklich. Die Funktion soll ja für jede beliebige tabelle mit ID's funktionieren.
                      Tuts doch, wenn du sie entsprechend variabel (Name der Tabelle, Name der ID-Spalte) anlegst.

                      Man würde also für jede tabelle eine Datei erzeugen mit der aktuellen zufallszahl.
                      Von mir aus kannst du auch alle IDs (NICHT DIE ZUFALLSZAHL) in eine Datei Speichern. Machs dir doch nicht so kompliziert.
                      Oder soll ich die zufallszahlen in einer eigenen tabelle speichern.
                      Ah, du hast dich von Gostgamblers Artikeln ausm konzept hauen lassen, bzw. nicht verstanden worum es da ging. Schei* auf die Zufallszahlen von denen dort gesprochen wird. Die sind erstmal nicht relevant für dich. Und falls sie das werden, bist du sicher so weit, dass du verstehst, was dort steht.
                      Soll diese Zufallszahl dann bei ersten aufruf der php-datei generiert werden oder ?
                      Reicht in deinem Fall wahrscheinlich vollkommen aus.
                      Ein Freund von Conjobs bin ich nicht wirklich.
                      Seh ich zwar keinen Grund,
                      aber wie du willst.
                      Oder hat jemand eine andere - halbwegs performante Lösung ?
                      Machs wie beschrieben. In deinem Fall IST es PERFORMANT!

                      Kommentar


                      • #12
                        Die einzige Möglichkeit ohne sie abzuspeichern, wäre irgendwie das Datum zu verwursten, aber das ist halt kein richtiger Zufall.
                        Und hat vor allem auch nichts mehr mit der ID in der DB zu tun...

                        nd ggf. dort auch die Zahlen von "gestern" wieder löschen wenn du sie nicht mehr brauchst.
                        da kannste gleich nen UPDATE fahren.

                        Kommentar


                        • #13
                          jetzt bin ich noch mehr durcheinander muss ich gestehn.
                          Ein Zufall kann doch in der Informatik nur berechnet werden. In diesem Fall würds dies ja die Datenbank erledigen

                          also nochmal
                          die ID's und den tabellennamen soll ich in einer neuen tabelle speichern. (Namen der ID spalten ist immer gleich).

                          Kommentar


                          • #14
                            Ein Zufall kann doch in der Informatik nur berechnet werden. In diesem Fall würds dies ja die Datenbank erledigen
                            Japp, das macht RAND() und die MySQL DB. Braucht dich also nicht weiter beschäftigen. Dich interessiert nur der EINE Datensatz, der nach der Query zurückgeliefert wird.

                            also nochmal
                            die ID's und den tabellennamen soll ich in einer neuen tabelle speichern. (Namen der ID spalten ist immer gleich).
                            So wie du willst. Von mir aus, speicher sie auch in ner textdatei oder druck sie dir auf nem Blatt papier aus. Das ist ganz egal. Speicher sie dort, wo du später am besten damit weiter arbeiten kannst.

                            Kommentar


                            • #15
                              da kannste gleich nen UPDATE fahren
                              Klar. Weiß ja nicht was er vorhat - vielleicht will er ja noch anzeigen "gestern war der Zufallsdatensatz.. und vorgestern ..."
                              ich glaube

                              Kommentar

                              Lädt...
                              X