Ankündigung

Einklappen
Keine Ankündigung bisher.

zufallswerbebanner Wer kann helfen?

Einklappen

Neue Werbung 2019

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

  • zufallswerbebanner Wer kann helfen?

    Hallo zusammen!

    Ich möchte, dass Usern Werbung von Reisebüros angezeigt wird die sich im Postleitzahlgebiet des Users befinden.

    Code:
     
    function zufallsbanner()
    {
    list($maximum) = mysql_fetch_row(mysql_query("SELECT * 
    FROM reisebuero WHERE reisebuero.plzid = ".$_SESSION['user_plzid']."
    ORDER BY bueroid DESC LIMIT 0,1;")); 
    $random = 0;
     
     while($result = mysql_query("SELECT * FROM reisebuero WHERE 
     reisebuero.plzid = ".$_SESSION['user_plzid']." AND bueroid=$random;"))
     {
      if(mysql_num_rows($result) == 1)
      {
        break;
      }
      srand((double)microtime()*1000000);
      $random = rand(1,$maximum);
    }
    $row2 = mysql_fetch_array($result);
    echo $row2["email"];
    }
    So weit so gut.
    Bis dahin lief es einwandfrei.

    Jetzt möchte ich aber, dass wenn kein Reisebüro in dem Postleitzahlgebiet gefunden wird einfach ein belibieges Reisebüro per zufallsprinzip ausgewählt und angezeigt wird.

    Hier mein Code
    Code:
    function zufallsbanner3()
    {
     list($maximum) = mysql_fetch_row(mysql_query("SELECT * FROM reisebuero WHERE reisebuero.plzid = ".$_SESSION['user_plzid']."
    ORDER BY bueroid DESC LIMIT 0,1;"));  
     
    $random = 0;
    $query= "SELECT * FROM reisebuero WHERE reisebuero.plzid =
    ".$_SESSION['user_plzid']." AND bueroid=$random;";
     
     if(!isset($maximum))
      {
       echo 'error';
       list($maximum) =  mysql_fetch_row(mysql_query("SELECT * FROM 
       reisebuero ORDER BY bueroid DESC LIMIT 0,1;"));  
       $query= "SELECT * FROM reisebuero WHERE bueroid=$random;";
      } 
     
     while($result = mysql_query($query) OR DIE (mysql_error()))
     {
      if(mysql_num_rows($result) == 1)
      {
        break;
      }
     
      srand((double)microtime()*1000000);
      $random = rand(1,$maximum);
     }
    $row2 = mysql_fetch_array($result);
    echo $row2["email"];
    }
    Wäre nett wenn Ihr mir helfen könntet.

  • #2
    Hallo freakymiky,

    das scheint mir eine ziemlich abenteurliche Art zu sein, um einen zufälligen Datensatz zu bekommen.
    In MySQL gibt es die RAND()-Anweisung mit der du das viel einfacher haben kannst.
    Code:
    SELECT * FROM reisebuero WHERE plzid="wasauchimmer" ORDER BY RAND() LIMIT 1
    Jetzt kannst du noch überprüfen ob das ein Ergebnis liefert und falls nein ein
    Code:
    SELECT * FROM reisebuero ORDER BY RAND() LIMIT 1
    absetzen.


    Theoretisch geht das ganze auch in einem Query:
    Code:
    SELECT * FROM reisebuero ORDER BY (plzid="wasauchimmer") DESC, RAND()

    Kommentar


    • #3
      Der Einzeiler hat was.

      Kommentar


      • #4
        super danke für eure Antworten.

        Werde das mit dem Einzeiler mal probieren.

        Könnte mir jemand evtl. erläutern warum der Einzeiler,
        beide Abfragen ersetzt?

        Wäre nett....

        Kommentar

        Lädt...
        X