Banner sortering (Avanceret)
Hej eksperter.For et par år tilbage lavede jeg denne funktion som 'vælger' et banner.
Kort om funktionen:
Først henter vi bannerne ud, men regner så også ud et slags priotets % for hvert banner.
[id] er vores id
[navn] vores navn
[start] vores start tal (af priotets udregningen)
[end] vores slut tal som bliver den næstes start tal
[priority] prioteten på banneret (0-100 i databasen)
Så smider den bannerne i et array (output):
######### OUTPUT DELEN START ##########
Array
(
[0] => Array
(
[id] => 1
[navn] => adtech.png
[start] => 0
[end] => 7
[priority] => 10
)
[1] => Array
(
[id] => 2
[navn] => exp.jpg
[start] => 7
[end] => 43
[priority] => 50
)
[2] => Array
(
[id] => 3
[navn] => 1sol25sep07.swf
[start] => 43
[end] => 100
[priority] => 78
)
)
######### OUTPUT DELEN SLUT ##########
Så laver vi et random tal (0-100)
Og finder frem til det banner der skal vælges ved hjælp af det random tal.
Lad os antage random tal = 48;
Den finder det banner der har [start] tal under random og [end] tal over/ligmed random. (så bannerets 'tal' er i midten)
Og så returnere den banneret.
Hvis det skulle opstå den ikke finder noget, sætter vi den til at starte forfra (ved kald af funktionens egen navn)
######### KODE DELEN START ##########
function getRandomBanner()
{
$sql = "
SELECT b.bannerID, b.billede, ROUND(b.prioritet * 100 / SUM(b2.prioritet)) AS diff, b.prioritet
FROM banner b
LEFT JOIN banner b2 ON (b2.til > NOW() AND b2.fra < NOW() AND b2.visninger < b.maksvisning)
WHERE b.til > NOW() AND b.fra < NOW() AND b.visninger < b.maksvisning
GROUP BY b.bannerID
";
$banner_row = mysql_query($sql);
$arr = array();
$start = 0;
while($r = mysql_fetch_array($banner_row))
{
$arr[] = array("id"=>$r['bannerID'],"navn"=>$r['billede'],"start"=>$start,"end"=>$r['diff']+$start,"priority"=>$r['prioritet']);
$start += $r['diff'];
}
/*
echo "<pre>";
print_r($arr);
//echo $sql;
echo "</pre>";
*/
$random = rand(0, 100);
//echo "rand: ".$random;
foreach ($arr as $array)
{
if($array['start'] < $random && $array['end'] >= $random) {
$sql2 = "
UPDATE banner SET visninger = visninger+1, lastip = '".$_SERVER['REMOTE_ADDR']."'
WHERE bannerID = '$array[id]' AND lastip <> '".$_SERVER['REMOTE_ADDR']."'
";
mysql_query($sql2);
return "<a href=\"banner.php?id=". $array['id'] ."\" target=\"_blank\"><img src=\"banner/". $array['navn'] ."\" style=\"border: 0px;\"></a>";
}
}
reset($arr);
return getRandomBanner($arr);
}
######### KODE DELEN SLUT ##########
Det jeg ønsker er at den også kan smide mig en Flash fil ud som banner.
Men jeg benytter mig af den nyere måde end embed (SWFObject)
Hvor jeg har et div/span tag.
Her kommer billederne ud: (men også den jeg bruger til flash:
<div id="flashcontent"><?PHP echo getRandomBanner(); ?></div>
<script type="text/javascript">
var so = new SWFObject("swfFilen.php", "swf", "600", "80", "8");
so.write("flashcontent");
</script>
