Zeilen zufällig ausgeben

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

  • Zeilen zufällig ausgeben

    Hallo,

    ich habe eine lange Liste an Fotos in einer php Datei gespeichert:

    Code:
    <a title="Foto1" href="1.jpg"></a>
    <a title="Foto2" href="2.jpg"></a>
    <a title="Foto3" href="3.jpg"></a>
    Jetzt möchte ich, daß diese Zeilen immer zufällig ausgegeben werden,
    nicht immer in derselben Reihenfolge.
    Also so zb.:

    Code:
    <a title="Foto2" href="2.jpg"></a>
    <a title="Foto3" href="3.jpg"></a>
    <a title="Foto1" href="1.jpg"></a>

    Wie kann ich das lösen?
    Danke für die Hilfe.

  • #2
    1. In ein Array stopfen.
    2. shuffle() anwenden
    3. ausgeben
    Wir werden alle sterben

    Kommentar


    • #3
      Hallo,

      habe das jetzt so gelöst:

      Code:
      <?php
      
      $my_array = array(
      '"foto1.jpg",',
      '"foto2.jpg",',
      '"foto3.jpg",',
      '"foto4.jpg",',
      
      
      );
              for ($i=0; $i<=4; $i++)
              {
                  $random = array_rand($my_array);
                  $gemisch .= $my_array[$random] . "\r\n";
              }
              echo $gemisch;
      ?>
      Aber so kommt mir eine Zeile oft mehrmals raus oder manche Zeilen gar nicht.
      Was ist da falsch?

      Kommentar


      • #4
        shuffle()
        Wir werden alle sterben

        Kommentar


        • #5
          hm,
          kann mir das bitte jemand genauer erklären?
          Ich verstehe nicht, warum mir bei meinem Code manche Zeilen doppelt ausgegeben werden.

          Danke für die Hilfe!

          Kommentar


          • #6
            Du gehst in eine Schleife und machst immer mal das gleiche.

            Du nimmst einen zufälligen Eintrag aus Deinem Array, fügst ihn der variable $gemisch hinzu.
            Danach mischt Du erneut ALLE 4 Einträge und hängst wieder einen (von den immer noch 4) Einträgen an $gemisch an.

            Dein programm tut genau das, was es tun soll.

            Misch das array einmal (vor der Schleife) und erstelle in der Schleife nur Deinen String, den Du abschliessend ausgeben kannst.
            Das ist btw nur eine Erklärung für Deinen Code
            Zuletzt geändert von ; 02.12.2011, 16:14. Grund: wer zählen kann, sorry :)

            Kommentar


            • #7
              Ach, komm...
              Nach fast 70 Postings in einem PHP Forum solltest du doch schon geschnallt haben:
              1. wie Arrays funktionieren
              2. wie das Handbuch zu lesen ist
              3. wo das Handbuch zu finden ist
              Wir werden alle sterben

              Kommentar


              • #8
                Ach komm, bin blugier Newbie!
                Wundere mich ja, dass mein selbst-zusammengebastelter Code irgendwie funktioniert

                Da gibt es doch sicher eine bessere / elegantere Lösung oder?

                Irgendjemand wird mir wohl helfen können - bitte!

                Kommentar


                • #9
                  Zitat von werny Beitrag anzeigen
                  Ach komm, bin blugier Newbie!
                  Wundere mich ja, dass mein selbst-zusammengebastelter Code irgendwie funktioniert

                  Da gibt es doch sicher eine bessere / elegantere Lösung oder?

                  Irgendjemand wird mir wohl helfen können - bitte!
                  Hmm...
                  Ein Newbie, welcher seit 7 Jahren dabei ist.
                  Und immer noch nicht in der Lage ist shuffle() einzusetzen....
                  Unglaublich.

                  Auch wenn es sich hart anhört, aber ich glaube, du hast dir das falsche Hobby ausgesucht.


                  PHP-Code:
                  <?php
                  error_reporting
                  (-1);
                  ini_set('display_errors'TRUE);
                   

                  $array  range(1,20);
                  $format '<a title="Foto%1$d" href="%1$d.jpg">Foto%1$d</a><br>';
                  shuffle($array);
                  foreach (
                  $array as $valueprintf($format,$value);
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Hier ist eine einfache Lösung mit einem Array und Kommentaren:

                    PHP-Code:
                    <?php
                    // Anzahl Eintraege
                    $eintraege 3;
                     
                    // Pool fuer Fotos
                    $foto = array('1' => '<a title="Foto1" href="1.jpg"></a>',
                                  
                    '2' => '<a title="Foto2" href="2.jpg"></a>',
                                  
                    '3' => '<a title="Foto3" href="3.jpg"></a>');
                     
                    // Zufallszahl
                    $zufallszahl rand (1,$eintraege);
                     
                    // Ausgabe
                    print $foto[$zufallszahl];
                    ?>
                    Du musst einfach die Anzahl der Einträge erhöhen und jeden neuen Eintrag mit einer nächsthöheren Nummer versehen, dann werden die einzelnen Einträge zufällig mit "$foto[$zufallszahl];" ausgegeben.
                    Mein [COLOR=#0066cc]Internetmarketing Blog[/COLOR]
                    Professionelle [COLOR=#800080]PHP Newsletter Software[/COLOR]
                    Das [COLOR=#0066cc]Newsletter erstellen[/COLOR] Einmaleins für Einsteiger

                    Kommentar


                    • #11
                      Zitat von Scriptex Beitrag anzeigen
                      Hier ist eine einfache Lösung mit einem Array und Kommentaren:

                      PHP-Code:
                      <?php
                      // Anzahl Eintraege
                      $eintraege 3;
                       
                      // Pool fuer Fotos
                      $foto = array('1' => '<a title="Foto1" href="1.jpg"></a>',
                                    
                      '2' => '<a title="Foto2" href="2.jpg"></a>',
                                    
                      '3' => '<a title="Foto3" href="3.jpg"></a>');
                       
                      // Zufallszahl
                      $zufallszahl rand (1,$eintraege);


                      // Ausgabe
                      print $foto[$zufallszahl];
                      ?>
                      Du musst einfach die Anzahl der Einträge erhöhen und jeden neuen Eintrag mit einer nächsthöheren Nummer versehen, dann werden die einzelnen Einträge zufällig mit "$foto[$zufallszahl];" ausgegeben.
                      Und?
                      Wie verhinderst du Wiederholungen?
                      Wie sorgst du dafür, dass alle ausgegeben werden?
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        ??

                        Oh Mann o Mann!

                        ich möchte nicht das EINE zufällige Zeile aus dem Array ausgeben wird,
                        sondern ALLE Zeilen geshuffled ausgegeben werden.

                        also z.B.

                        foto2.jpg
                        foto3.jpg
                        foto1.jpg
                        foto5.jpg
                        foto.4.jpg

                        Kommentar


                        • #13
                          Du wurdest jetzt mehrfach auf eine sinnvolle funktioniernde Lösung hingewiesen. Anstatt diese zu verfolgen, vergreifst du dich lieber hier im Ton, der versucht dir zu helfen?

                          PS: Dass der Code nicht so funktioniert wie es "gefordert" ist, hatte Combie schon 3 Stunden vorher gepostet.

                          Kommentar


                          • #14
                            Meine Lösung sollte nur als Anregung dienen. Das wirst du nicht einfach mit ein paar Zeilen Code lösen können, damit immer ein anderes Foto ausgegeben wird. Um das zu realisieren, muss man die Ausgabe zwischenspeichern und dann prüfen, was zuletzt kam, um keinen wiederholten Wert auszugeben.

                            PS. Der Ton einiger User gefällt mir auch nicht. Meckert nicht, macht es besser oder liefert zumindest eine bessere Lösung
                            Mein [COLOR=#0066cc]Internetmarketing Blog[/COLOR]
                            Professionelle [COLOR=#800080]PHP Newsletter Software[/COLOR]
                            Das [COLOR=#0066cc]Newsletter erstellen[/COLOR] Einmaleins für Einsteiger

                            Kommentar


                            • #15
                              macht es besser oder liefert zumindest eine bessere Lösung
                              *done*
                              Wir werden alle sterben

                              Kommentar

                              Lädt...
                              X