Zufälliges...

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

  • Zufälliges...

    Hallo Leute!
    Folgendes Script steuert die Einblendung eines zufällig ausgewählten Werbebanners:
    <?php
    $adtext = file("werbung.dat");
    $adtext = $adtext[shuffle($adtext)];
    print $adtext;
    ?>
    ... aber leider wird immer nur Banner Nummer 4 angezeigt!
    Komisch, denn es ist ein Beispielscript aus einer zufälligen Zitatanzeige, da hat es auch noch funktioniert...
    Wo liegt der Fehler? Oder geht es anders besser?

    Gruß, capsfan

    In Funktion zu betrachten unter http://www.capsfans.de
    Coden ist der schmale Grat zwischen geistiger Herausforderung und Wahnsinn.

  • #2
    An diesem Stück Quellcode liegt es mit Sicherheit nicht.
    Poste mal das Stüch das die Daten aus der Datei liest.

    Gruß
    Berni


    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      Hi,

      warum nennst du alles $adtext -> wenn dein array $adtext heisst steht normalerweise in $adtext nur der Verweise auf ein Array drin (bei echo kommt zumindest "array") -> würde ich anders nennen.

      Außerdem gibt es folgendes:

      srand((double)microtime()*10000000);
      $zufall=array_rand($adtext);
      echo $zufall;

      holt dir immer per Zufall einen Eintrag aus dem Array, geht erst ab PHP4.

      Kommentar


      • #4
        Ups, kommt davon, wenn man an der Antwort schreibt und nicht abschickt. Bernis Antwort versteh ich aber nicht ganz. Was macht den das Array im Array, also warum ein shuffle(array) in einem Array?? -> ich meine den Teil $array[shuffle($array)] -> da reicht doch shuffle(array)
        und das mit Zielvariable mit gleichem Namen wie File halte ich nach wie vor nicht glücklich.

        Kommentar


        • #5
          Also...

          ... erstmal zu Berni:
          Diese Stück Quelltext liest doch auch die Daten (file...).
          Der Ursprung des Quellcodes ist der blindhomepageeditor, aus desse quotes.php3 dieser Schnipsel stammt. Und komischerweise funktioniert er dort immer noch. Ich habe bloß, dem Beispiel folgend Umbenennnungen eingebaut.

          Zu BrainBug:
          php-4 ist auf dem Puretec-Server nicht verfügbar.Gibt es ähnliches auch in der 3er-Version?
          Ich werde aber mal Deine anderen beiden Tipps ausprobieren, es ist wohl wirklich unnötig ein array im array zu verpacken und das noch unter demselben Namen...

          Vielen Dank vorerst einmal...
          Coden ist der schmale Grat zwischen geistiger Herausforderung und Wahnsinn.

          Kommentar


          • #6
            für PHP3 gibt's eigentlich nur die shuffle-Funktion, aber die sortiert die ja dein gesamtes Array auch nach dem Zufall, d.h. ein erster Eintrag vom $array[0] nach shuffle($array) ist immer ein anderer. Naja, eben auch nicht immer.

            Andere Möglichkeit: erzeuge selber eine Zufallszahl zwischen 0 und count($array) als Range und hol dir dann den Zufallszahl-Eintrag aus dem $array[??] ->

            srand((double)microtime()*1000000);
            $zufall = rand(0,count($array));
            $auszug = $array[$zufall];

            aber im Prinzip macht shuffle($array) auch nix anderes, weiß allerdings nicht, inwiefern die "Zufälligkeit" bei meinem kleinen Code erhöht ist. Außerdem kannst du eine Kontrolle einbauen, in dem du z.B. immer die letzten zwei Werte dir merkst und wenn die nochmal kommen, wiederholst du die Aktion, bis ein anderer Banner gefunden wird.

            Kommentar


            • #7
              Na, mal schauen... Eine Kontrolle ist aber für diesen Zweck unnötig, denn es ist mir ja nur wichtig, das überhaupt eine Abwechslung zwischen den dargestellten Bannern stattfindet.
              Kann es vielleicht sein, dass shuffle beim ersten Aufruf immer dieselbe "unordnung" stiftet? Dann braüchte man halt nur die Datei in der config einlesen, und nicht zur Run-time um auf verschiedene Ergebnisse zu kommen...

              Gruß, capsfan
              Coden ist der schmale Grat zwischen geistiger Herausforderung und Wahnsinn.

              Kommentar


              • #8
                So, es läuft... war nicht ganz leicht zu erkennen, da der Server von dem die Banner kommen gerade außer Betrieb ist, aber es läuft!
                Noch einmal für alle nun der funktionierende Code:

                $adtext = file("werbung.dat");
                srand((double)microtime()*1000000);
                $zufall = rand(0,count($adtext));
                $auszug = $adtext[$zufall];
                print $auszug;

                Vielen Dank für die nette Unterstützung!

                Gruß, capsfan
                Coden ist der schmale Grat zwischen geistiger Herausforderung und Wahnsinn.

                Kommentar


                • #9
                  Hallo,

                  sorry ich konnte nicht alles lesen.

                  ABER, php4 kannst du auch vonm einen Puretec Server parsen lassen.

                  Weitere Infos unter:
                  http://faq.puretec.de/php_perl_ssi/10.html

                  Gruß
                  Berni

                  php-Entwicklung | ebiz-consult.de
                  PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
                  die PHP Marktplatz-Software | ebiz-trader.de

                  Kommentar


                  • #10
                    Wow! Ein guter Hinweis, werde ich demnächst mal probieren! Vorläufig werde ich aber "normal" weitermachen, man soll sich ja nicht zuviel neues auf einen Hieb zumuten, schließlich habe ich vor 3 Wochen erst mit PHP angefangen...
                    Coden ist der schmale Grat zwischen geistiger Herausforderung und Wahnsinn.

                    Kommentar

                    Lädt...
                    X