Ankündigung

Einklappen
Keine Ankündigung bisher.

Bannerrotation mehrerer Pics, Prob: manchmal gleiches pic

Einklappen

Neue Werbung 2019

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

  • Bannerrotation mehrerer Pics, Prob: manchmal gleiches pic

    also, ich habe ne bannerrotation geschrieben, bloß kommt es vor, da ich 3pics auf einmal anzeigen lassen will, dass es das gleiche 2mal anzeigt oder manchmal gar 3 mal

    bitte helfen... THX

    Code:
    <?php
    $allbanner = safe_query("SELECT * FROM ".PREFIX."links");
    $total = mysql_num_rows($allbanner);
    if($total) {
    	$end = round(rand(1, $total));
    	$banner = mysql_fetch_array(safe_query("SELECT * FROM ".PREFIX."links LIMIT ".($end-1).",$end"));
    	
    	echo '[img]./images/links/'.$banner['banner'].'[/img]
    ';
    } else echo 'Keine Links vorhanden.';
    unset($banner);
    
    if($total) {
    	$end = round(rand(1, $total));
    	$banner = mysql_fetch_array(safe_query("SELECT * FROM ".PREFIX."links LIMIT ".($end-1).",$end"));
    	
    	echo '<img src'.$banner['url'].'" border="0" alt="'.$banner['name'].'">
    ';
    } else echo 'Keine Links vorhanden.';
    unset($banner);
    
    if($total) {
    	$end = round(rand(1, $total));
    	$banner = mysql_fetch_array(safe_query("SELECT * FROM ".PREFIX."links LIMIT ".($end-1).",$end"));
    	
    	echo '[img]./images/links/'.$banner['banner'].'[/img]';
    } else echo 'Keine Links vorhanden.';
    unset($banner);
    ?>

  • #2
    Warum liest du nicht auf einmal 3 Zeilen aus, die mit RAND vorher gemixt wurden?
    Code:
    SELECT linkID, banner, name FROM ".PREFIX."links LIMIT 3 ORDER BY RAND()
    das ganze dann mit
    Code:
    $result = mysql_query(...);
    while($banner = mysql_fetch_assoc($result)) {
    
    ..
    
    }
    auslesen.

    Kommentar


    • #3
      Du musst eben solange überprüfen (do-while oder while-Schleife), ob deine Zufallszahl schon gezogen wurde, bis alle 3 nicht die selben sind.

      Edit: oder so wie Buhmann, ist sogar viel besser.

      Kommentar


      • #4
        hmmm, ich verstehe nicht, was ihr meint, könnte mir jemand bitte meins mal bearbeiten?

        MfG

        Kommentar


        • #5
          Buhmann hat Dir doch schon so eine schöne Lösung geliefert, die auch bereits an Dein Skript angepasst ist.

          Verstehst Du Dein SKript überhaupt?
          Was macht
          $end = round(rand(1, $total));
          $banner = mysql_fetch_array(safe_query("SELECT * FROM ".PREFIX."links LIMIT ".($end-1).",$end"));
          und warum macht es das, was es tut?

          Kommentar


          • #6
            also, ich hatte das ausprobiert, ging aber net, war irgendwas falsch

            kA, bin nicht so der Checker

            deswegen hatte ich ja darum gebeten, ob mir das vll mal jemand, direkt für das komplette Skript machen könnte

            THX

            Kommentar


            • #7
              Das gehört dann aber nach
              Gesuche
              In diesem Forum dürfen Gesuche nach Jobangeboten (Programmierer, Designer), fertigen Scripts, etc. gestellt werden.

              Kommentar


              • #8
                naja, ich meinte das jetzt so, dass mir vll jemand, das jetzt von Buhmann in meins reinstezen könnte

                jetzt bräuchte ich das bloß noch so, dass der keins doppelt anzeigt

                pls help, THX

                MfG

                Kommentar


                • #9
                  ok, frag ich mal so, warum geht das nicht?

                  Code:
                  <?php
                  $result = mysql_query(...); 
                  while($banner = mysql_fetch_assoc($result)) { 
                  
                  $allbanner = safe_query("SELECT * FROM ".PREFIX."links");
                  $total = mysql_num_rows($allbanner);
                  if($total) {
                  	$end = round(rand(1, $total));
                  	$banner = mysql_fetch_array(safe_query("SELECT linkID, banner, name FROM ".PREFIX."links LIMIT 3 ORDER BY RAND()"));
                  	
                  	echo '[img]./images/links/'.$banner['banner'].'[/img]';
                  } else echo 'Keine Links vorhanden.';
                  unset($banner);
                  }
                  ?>
                  bzw. wie müsste es wirklich heißen?

                  bin für jede hilfe dankbar

                  MfG

                  Kommentar


                  • #10
                    Da hatte Buhmann noch einen kleinen Fehler in seiner Abfrage. Zuerst kommt die ORDER BY-Klausel und danach das LIMIT:
                    Code:
                    SELECT linkID, banner, name FROM ".PREFIX."links ORDER BY RAND() LIMIT 3

                    Kommentar


                    • #11
                      naja, jetzt zeigt der mir aber gar nix mehr an, also kein Banner wird angezeigt, hab das jetzt von Buhmann auch geändert

                      Code:
                      <?php
                      $result = mysql_query( ); 
                      while($banner = mysql_fetch_assoc($result)) { 
                      
                      $allbanner = safe_query("SELECT * FROM ".PREFIX."links");
                      $total = mysql_num_rows($allbanner);
                      if($total) {
                      	$end = round(rand(1, $total));
                      	$banner = mysql_fetch_array(safe_query("SELECT linkID, banner, name FROM ".PREFIX."links ORDER BY RAND() LIMIT 3"));
                      	
                      	echo '[img]./images/links/'.$banner['banner'].'[/img]';
                      } else echo 'Keine Links vorhanden.';
                      unset($banner);
                      }
                      ?>
                      hmmm, dass im echo-Befehl ist schon mal richtig


                      kann das vll sein, dass bei
                      Code:
                      $result = mysql_query( );
                      und/oder bei
                      Code:
                      ORDER BY RAND()
                      noch etwas in die Klammern muss?
                      wenn ja, was?

                      bin für jede weitere Hilfe dankbar

                      MfG

                      Kommentar


                      • #12
                        $sql= DEINE SQL ANWEISUNG
                        $result = mysql_query($sql) or die(mysql_error());

                        deine SQL-Anweisung fehlt. In Rand() musst du nichts in die Klammern eintragen;

                        EDIT:

                        PHP-Code:
                        <?php
                          $allbanner 
                        mysql_query("SELECT * FROM ".PREFIX."links LIMIT 1") OR die(mysql_error());
                          
                        $total     mysql_num_rows($allbanner);
                          if(
                        $total) {
                            
                        $sql    "SELECT linkID, banner, name FROM ".PREFIX."links ORDER BY RAND() LIMIT 3";
                            
                        $result mysql_query($sql) OR die(mysql_error());
                            while(
                        $banner mysql_fetch_array($result)) {
                              echo 
                        '[url="'$banner['url'] .'"][img]./images/links/'$banner['banner'] .'[/img][/url]';
                            }
                          } else {
                            echo 
                        'Keine Links vorhanden.';
                          }
                          
                        // unset($banner);
                        ?>
                        so vielleicht? Ich kanns schlecht testen, aber würde behaupten, so ist es richtig

                        Kommentar


                        • #13
                          joah, jetzt geht's endlich ^^

                          tausend DANK.

                          hier wird einem echt gut geholfen

                          MfG

                          Kommentar


                          • #14
                            Mir fällt gerade auf, dass das unset($banner) schwachsinnig ist das würd ich weglassen

                            Kommentar

                            Lädt...
                            X