if exist

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

  • #16
    Solange sich keine 12000 User in der Tabelle befinden, geht das auch so:
    PHP-Code:
    $query    =    "SELECT id FROM users ORDER BY RAND() LIMIT 10"
    Wir werden alle sterben

    Kommentar


    • #17
      wieso, liegt bei rand das limit bei 12000 ?
      wenn ja welche function gibts da noch ?

      Kommentar


      • #18
        Oder einfach eine weitere Prüfung für die Schleife:
        PHP-Code:
        $query    =    "SELECT id FROM users";
        $res mysql_query($query);
        $id = array();
        while(
        $re=mysql_fetch_array($res)){
          
        $id[] = $re[0];
        }
        $ids range(1,max($id));
        $ret = array();
        for(
        $i=1;$i<=10;$i++){
          
        $test   =   mt_rand(1max($id));
          while(!
        in_array($test,$ids) || !in_array($test,$id){
            
        $test   =   mt_rand(1max($id));
          }
          unset(
        $ids[array_search($test,$ids)]);
          
        $ret[] = $test;

        Zuletzt geändert von jahlives; 16.05.2008, 17:50.
        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


        • #19
          Original geschrieben von boy22
          wieso, liegt bei rand das limit bei 12000 ?


          Nein, da gibt es kein Limit, aber ab einer höheren Useranzahl dauert die Abfrage recht lange und ist extrem Serverbelastend..

          wenn ja welche function gibts da noch ?
          Die Funktion ist ausreichend ....
          Ansonsten geht es nur über ne Ausweichfunktion(eigene)..

          mfg

          Kommentar


          • #20
            jahlives, du stehst echt drauf, alles neu zu schreiben, hmm?
            PHP-Code:
            $query    =    "SELECT id FROM users";
            $res mysql_query($query);
            $id = array();
            while(
            $re=mysql_fetch_array($res)){
              
            $id[] = $re[0];
            }
            shuffle$id ); 

            Kommentar


            • #21
              jahlives, du stehst echt drauf, alles neu zu schreiben, hmm?
              OffTopic:

              Stimmt. Seit meinem ersten Hallo Welt habe ich eigentlich immer versucht ein Problem mit "eigenem" Code zu lösen. Finde den Lerneffekt grösser, als einfach eingebaute Fkt zu benutzen.
              Diesen Lernweg siehst du bei meinen Codes, immer zuviele Zeilen


              Gruss

              tobi
              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


              • #22
                Original geschrieben von boy22
                wieso, liegt bei rand das limit bei 12000 ?
                wenn ja welche function gibts da noch ?
                Du könntest die Tabelle auch einmal pro Monat/Woche/Tag mit "ALTER TABLE ..." umsortieren.
                Wir werden alle sterben

                Kommentar


                • #23
                  war ja ein tipp wie du das ändern könntest damit deine zufallszahl wirklich eindeutig ist.

                  und ich meinte nicht 16052008 sondern 1210959443 (16.05.08 19:36:21)

                  gruß
                  uzu
                  Gruß
                  Uzu

                  private Homepage

                  Kommentar


                  • #24
                    @UzumakiNaruto
                    Der TS wollte nicht wirklich Zufallszahlen sondern 10 zufällige Elemente aus einem Array. Dieser Array basiert auf den IDs in der DB und das geht kaum mit weniger Code als dem von PHP-Desaster
                    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


                    • #25
                      Aus meiner Wühlkiste (leicht für diesen Zweck modifiziert)
                      PHP-Code:
                      $will 10 // anzahl Ids die ich lesen will  :-)


                      // lohnt sich ab hier schon ein table shuffle ??
                      $performancegrenze 7654 ;


                      $query  "SELECT CONT(*) AS Anzahl FROM users";
                      $result mysql_query($query);
                      $row    mysql_fetch_array($result);
                      $anzahl $row['Anzahl'];


                      if(
                      $anzahl $performancegrenze)
                      {
                        
                      // Tabelle Shuffle
                        
                      if(mt_rand(0,1000)<1// ca. 1mal bei 1000 Aufrufen()
                        
                      {
                          
                      $query "ALTER TABLE users ORDER BY RAND()";
                          
                      mysql_query($query);
                        }
                        
                      $anzahl -= $will// die ich will abziehen
                        
                      $startpunkt mt_rand(0,$anzahl);
                        
                      $query  "SELECT id FROM users LIMIT $startpunkt,$will";
                      }else
                      {
                        
                      $query  "SELECT id FROM users ORDER BY RAND() LIMIT $will";
                      }

                      // ab hier wie gewohnt auslesen....
                      $res mysql_query($query);
                      while(
                      $re=mysql_fetch_array($res))
                      {
                        echo  
                      $re['id'].'<br>';

                      *und in dieser Form ungetestet*
                      Zuletzt geändert von combie; 16.05.2008, 20:01.
                      Wir werden alle sterben

                      Kommentar


                      • #26
                        mh..ich mache das nun anderst..

                        werde mir die werte versuchen aus dem bilderordner zufällig zu ziehen.
                        so bekomm ich dann wenigstens noch die echten werte, falls user gelöscht werden. in dem fall schreib ich dann noch ein script was beim löschen des users noch das bild löscht.

                        habt vielen dank für eure mühe.. werde sicher nochmal um hilfe betteln

                        danke

                        Kommentar


                        • #27
                          werde mir die werte versuchen aus dem bilderordner zufällig zu ziehen.
                          Das ist aber ganz sicher nicht schneller/performanter als wenn du die Daten aus der Datenbank holst.

                          Kommentar


                          • #28
                            na hast ja recht.. ok dann bleibe ich dabei.
                            und wenn ich nächstes jahrhundert noch weiß, abzufragen ob eine id existiert, bau ich das noch dazu. nur blöde ists, das wenn ich den user lösche ein bild bei der ausgabe fehlt :/

                            Kommentar

                            Lädt...
                            X