Brauche kleine Hilfe bei Bannerscript

funnyzocker

Erfahrenes Mitglied
Hallo.
Also folgendes Problem leigt vor.
Folgendes Script sucht immer den Banner aus der db der die wenigsten Views hat.
PHP:
<?
include("connect2db.inc.php");
$sql = "SELECT id, b_url, b_image, b_views, b_klicks
                FROM
        banner GROUP BY b_views HAVING COUNT(*) =1 ORDER BY b_views ASC LIMIT 0,1";
$sqlbanner =  mysql_query($sql);
$banner =  mysql_fetch_array ($sqlbanner);
{
$new_views = $banner[b_views] +1;
@mysql_query("UPDATE banner SET b_views = '$new_views' WHERE id = '".$banner[0]."'");
echo"<a href=b_banner.php?b_id=$banner[0] target=_blank><img src=$banner[2]></a>";
}

?>

Leider ist nun das Problem das wenn alle Banner die selbe Anzahl an Views haben, dann wird keine Id (also auch kein Banner) mehr ausgegben und es kommt das unerwünschte Rote Kreuz.
 
Naja prüf mal ob du dann mit

PHP:
if(empty())

prüfen kannst, wenn ja kannst ja dann einen Zufallswert oder "Ausweichswert" setzen kannst ...
 
Folgendes Script sucht immer den Banner aus der db der die wenigsten Views hat.
PHP:
<?
//...
$sql = "SELECT id, b_url, b_image, b_views, b_klicks
                FROM
        banner GROUP BY b_views HAVING COUNT(*) =1 ORDER BY b_views ASC LIMIT 0,1";
//...
?>

Warum so kompliziert? Versuchs doch mal mit folgendem Statement:
Code:
select id, b_url, b_image, b_views, b_klicks
from banner
order by b_views asc
limit 1
 
Warum so Kompliziert? Einfach weil so eine gleichmäßigkeit der Aufrufe der Banner erreicht wird. Nicht das 1 banner 100 mal gezeigt wird und ein anderer nur 5 mal.
 
Das mit dem "kompliziert" war auf das SQL-Statement bezogen - nicht auf dein Vorhaben ;)

Ich denke, mein SQL-Statement macht genau das was du willst...
 
Zurück