if exist

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

  • if exist

    Hallo!

    Ich komme bei meinem kontrukt nicht sonderlicht weiter.

    Folgendes: Ich lese aus der Datenbank alle ID´s aus.
    Denn die id des users ist auch zugleich die bildnummer.jpg

    In einer Schleife lasse ich diese augeben. Das klappt auch soweit
    ganz prima. Aber ich möchte, das sich die zufallszahlen aus den ids
    nicht wiederholen.

    sprich: er generiert die zahlen 183743
    dann soll nur 1 mal die id 3 vorkommen und nicht doppelt.
    nun weiß ich da leider nicht weiter, und hoffe auf eure hilfe und tipps
    oder verbesserungen.

    Danke schonmal

    PHP-Code:

        $query    
    =    "SELECT id FROM users";
        
        
    $result    =    mysql_query$query );
        

        
        
    $anzahl    =    mysql_num_rows$result );
      
    //  echo "Anzahl der Ergebnisse: " . $anzahl . "<br>";






    for ($i=1$i <= 10$i++ )

    {
        
    $test   =   mt_rand(1$anzahl);
       
        
        echo 
    "<img src=nick_image/$test.jpg width=50 height=50>";
        
        


  • #2
    Erstell ein Array,

    fütter diese mit den Rand-Id's und gucke jedes mal vorher, ob die id bereits inhalten ist..

    http://php.net/array < wird dir helfen..

    mfg

    Kommentar


    • #3
      hm..an einem array hab ich schon zuerst gedacht und probiert.
      da hab ich aber garnichts hinbekommen.

      ich weiß ehrlich gesagt nicht wie ich da nun vorgehen soll.

      Kommentar


      • #4
        Original geschrieben von boy22
        hm..an einem array hab ich schon zuerst gedacht und probiert.
        da hab ich aber garnichts hinbekommen.

        ich weiß ehrlich gesagt nicht wie ich da nun vorgehen soll.
        Wie waren denn deine Versuche mit dem Array?

        Kommentar


        • #5
          in etwa so:

          ich habe versucht eine schleife in das array zu packen, um damit
          die einträge hochszuschrauben. also sprich von 0 bis 10.
          das hat aber nicht funktioniert..deswegen hab ichs dann so wie bis ebend gemacht.

          Kommentar


          • #6
            PHP-Code:
            $ids range(1,$anzahl);
            $ret = array();
            for(
            $i=1;$i<=10;$i++){
              
            $test   =   mt_rand(1$anzahl);
              while(!
            in_array($test,$ids)){
                
            $test   =   mt_rand(1$anzahl);
              }
               unset(
            $ids[array_search($test,$ids)]);
               
            $ret[] = $test;

            irgendwie so z.B. In $ret sollten dann die 10 Zufallswerte stehen
            http://tobisworld.ch/misc/test/random.php

            Gruss

            tobi
            Zuletzt geändert von jahlives; 16.05.2008, 15:04.
            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
              okay..damit muss ich mich erstmal beschäftigen um den code komplett zu verstehen.

              meins sah da dementsprechend kryptischer aus.

              ich versuchs mal..


              danke erst einmal.

              Kommentar


              • #8
                Warum alle so kompliziert?

                PHP-Code:
                $arr range$min$max );
                shuffle$arr ); 

                Kommentar


                • #9
                  sry, ich komme nicht mehr mit..im moment ist alles noch sehr kompliziert für mich. verstehe noch ned ma den code oben richtig..
                  was ist nun das wieder ?

                  Kommentar


                  • #10
                    Original geschrieben von PHP-Desaster
                    Warum alle so kompliziert?

                    PHP-Code:
                    $arr range$min$max );
                    shuffle$arr ); 
                    Weil laut Anforderung eine Zahl nur ein Mal vorkommen darf, sofern ich das richtig verstanden habe. Was allerdings durchaus problematisch werden sollte.

                    Grüße
                    Zuletzt geändert von Griecherus; 16.05.2008, 15:27.
                    Nieder mit der Camel Case-Konvention

                    Kommentar


                    • #11
                      Warum alle so kompliziert?
                      Weil wir's gerne kompliziert mögen Deine Lösung müsste aber noch einen Teilbereich des Arrays extrahieren, da der TS nur 10 Treffer draus haben will.
                      Deine Lösung ist aber wirklich schön kurz.
                      @Grieche ;-)
                      range() sorgt schon dafür, dass keine Zahl mehr als einmal vorkommt
                      was ist nun das wieder ?
                      Eine noch kürzere Version, die das gleiche macht wie mein obiger Code. Du musst nur noch die ersten 10 Elemente aus dem Array rausholen. Dann kommt es auf das gleiche raus wie mein Code

                      Gruss

                      tobi
                      Zuletzt geändert von jahlives; 16.05.2008, 15:32.
                      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


                      • #12
                        Das größte Problem dürfte wohl sein, dass du nicht davon ausgehen kannst, dass die User-IDs fortlaufend sind! Was, wenn du mal einen User löschst?

                        Kommentar


                        • #13
                          ähm..stimmt.... das ist eine gute frage...

                          aber ist das nicht eigendlich egal ?
                          weil, er holt sich ja alle existierenden ids aus der datenbank.

                          ahne, stimmt..das rand() erzeugt mir ja auch wieder ggf. nicht existierende ids.
                          hm..da hab ich nun keine ahnung wie ich das nun auch noch umsetzen soll.

                          Kommentar


                          • #14
                            nimm doch als zufallszahl den unix-timestamp ... der wenn du dann da noch einen rand() mit anfügst sollte deine zahl einmalig sein
                            Gruß
                            Uzu

                            private Homepage

                            Kommentar


                            • #15
                              hm.. ich hab aber nicht 16052008 / random

                              user.

                              Kommentar

                              Lädt...
                              X