zufallszugriff auf mysql???

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

  • zufallszugriff auf mysql???

    Hallo,

    ich bin grade dabei ein bewertungstool alà "binich************y.de" aufzubauen, für das größte Problem hab ich noch keine gute Lösung gefunden:

    Die Rotation;

    PHP soll dem registrierten Benutzer per zufall die zu bewertenden member rausfischen und zwar so, dass erst alle einmal zufällig angezeigt wurden, bevor ein member zum zweiten mal zur bewertung angezeigt wird. Bei kleinen anzahlen ja kein Problem, aber wer programmiert schon so, dass es im großes stil performance Probs gibt?! ;-)

    Ich will keinen kompletten code (wär natürlich auch toll ) sondern kontruktive Denkanstöße...

    Beste Grüße

  • #2
    die variante, dass erst jeder eintrag einmal gezeigt wird, kannst du ja auch der reihe nach durchlaufen lassen. eben ohne zufall.

    aber ansonsten suche mal nach ORDER BY RAND() im sql-forum.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Nach der Reihe ist keine Lösung, da neue member erst zu schluß bewertet werden und somit, weniger votes wie andere bekommen. Die "der frühe Vogel fängt den Wurm" - Methode sozusagen
      Nee, das geht nicht...

      Und order bei rand() geht auch nicht, da neue bewertungsmember, da auch ungleiche chancen haben, bzw. einige etvl. auch älter member auch hier wieder öfter bevotet würden... Da er ja immer n rand aus allen nimmt und nicht schon mal rausgefischte member im rand sperrt.

      Noch mehr Tipps??

      Kommentar


      • #4
        RAND() ist eigentlich das fairste. hier wird aus 100% immer einer genommen.

        wer eher da war, wird natürlich auch öfters gezeigt. oder soll ein user, der sich nach 100 tagen angemeldet hat, die 100 tage aufholen, die der 1.user schon zum zeigen hatte?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Nein das nicht, aber es soll eben nicht ein user 2 oder gar noch mehr votes bekommen, wenn ein user noch nicht mal kein vote bekommen hat. Dafür die sperrung bereits bewerteter member und per zufall um wie schon erwähnt nicht den ersten viele votes zuverpassen, da die votes noch dem 2 login kein bock mehr auf die page oder aufs voten allgemein haben.
          Die Durchschnitts bewertungs ergibt sich ja eh aus summe punkte/anzahl votes jedoch siehts ja so aus, das je mehr votes das ergebnis repräsentativer wird....

          Kommentar


          • #6
            Original geschrieben von westberlin
            Nein das nicht, aber es soll eben nicht ein user 2 oder gar noch mehr votes bekommen, wenn ein user noch nicht mal kein vote bekommen hat.
            dann beziehe doch die anzahl der bisher erfolgten votes in deine auswahl-kriterien mit ein...
            sortiere dir die user aufsteigend nach der anzahl ihrer votes und wähle dann aus den ersten ein oder zwei dutzend per zufall einen aus.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Der Ansatz is ja auch gut, jedoch haben dann nach kurzer Zeit alle gleich viel votes, sprich der neue hat nach kurzer Zeit genauso viel votes, wie der der schon n Jahr dabei is, und das wär ja auch wieder unfair, bzw. tut sich im ergebnis des alten users nicht allzu viel und wird dementsprechend langweilig...

              Kommentar


              • #8
                Original geschrieben von westberlin
                Der Ansatz is ja auch gut, jedoch haben dann nach kurzer Zeit alle gleich viel votes, sprich der neue hat nach kurzer Zeit genauso viel votes, wie der der schon n Jahr dabei is, und das wär ja auch wieder unfair, bzw. tut sich im ergebnis des alten users nicht allzu viel und wird dementsprechend langweilig...
                ja dann definiere doch erstmal, was du jetzt genau willst.

                irgendwie finde ich deine aussagen widersprüchlich, mal willst du es so haben, und mal so...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Ok...
                  Also, ich brauche ein zufall select aus einer datenbank. Bereits per zufall rausgesuchte Einträge, sollen für den nächsten zufalls select gespeert werden - Solange bis jeder eintrag einmal durch ist, danach sollen wieder alle einträge für den zufalls select zur verfügung stehen...
                  Es ist aber auch schwer auszudrücken Auf jeden Fall schon mal vielen Dank für die bereits erschienenen Beträge...

                  Kommentar


                  • #10
                    und das dann noch für jeden user einzeln oder?
                    also ein bild das user1 schon gesehen hat, aber user2 nochnicht soll für user1 nicht mehr angezeigt werden, für user2 aber schon noch oder?

                    du hast in deiner datenbank ja bestimmt jedem bild ne eindeutige id gegeben oder?

                    dann mach doch zuerst ein
                    Code:
                    select id from tabelle order by rand();
                    lies dann alle ids aus, schreibe die in ein array und packdas array in ne session zusammen mit nem zeiger auf das aktuelle element im array, damit du weißt, was der benutzer bei nem klick auf weiter sehen soll und wo er hinkommen soll,wenn er auf zurück klickt
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      setze dir noch ein feld in die DB rein. welches als markierung dient, was schon gezeigt worden ist, und was nicht.

                      nun kannst du deinen SELECT so machen, dass nur daten genommen werden, die dieses flag nicht haben. aus denen bildest du den zufall. das gewählte bekommt dannach dirkekt das flag zugewiesen. hast du irgendwann keine rückgabe, da alle daten einen flag haben, kannst du dann allen daten das flag wieder entziehen.

                      ausserdem würde ich jetzt mal sagen, dass das ins SQL gehört....

                      *VERSCHIEB*

                      EDIT:
                      mist. der happy wieder.....
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        aber dann kann man nichtr mehr unterscheiden, wer welches bild schon gesehen hat und wer nicht

                        ich denke mla, dass es mehr als 1 benutzer geben wird (sonst is das ganz eh für'n a****)

                        OffTopic:
                        wollen wir wetten, dass das ganze dann später wieder nach php verschoben wird (session, array, ...)?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Original geschrieben von mrhappiness
                          aber dann kann man nichtr mehr unterscheiden, wer welches bild schon gesehen hat und wer nicht
                          stimmt. wollte er das überhaupt?

                          OffTopic:
                          das bleibt jetzt hier....
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            Original geschrieben von Abraxax
                            stimmt. wollte er das überhaupt?
                            also ich persönlich fände es absolutst suboptimalst *g*, wenn ich bilder nich sehen kann, nur weil jemand anders die schon gesehen hat...
                            OffTopic:
                            alla gut
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              Naja, ob nun SQl oder PHP development hat doch was von beidem, zumal diese Anfrage routine sicherlich von mehreren php'ler zugebrauchen ist, aber egal...

                              An eine extra Tabelle(!) hatte ich auch schon gedacht, worin bewerter_id und zuvotende_id gespeichert werden nur hatte ich hier bedenken bezüglich der performance, bei 1000 Bewertern und 1000 zuvotenden erhält die tabelle schnell 1 Mio felder... ?! Und ich weiß nicht, wie mysql in solchen dimensionen noch arbeitet? Mit Arrays ist das wohl komm zu realisieren.
                              Oder sollte ich für jeden bewerter eine extra tabelle für noch nicht gevotete id's anlegen, welches ist besser hinsichtlich der schnelligkeit?

                              Kommentar

                              Lädt...
                              X