Achei um script que eu melhorei, vou passar pra Yii agora, vou explica caso alguem futuramente precisa.
Para nunca se repetir o banner, tem que fazer um array() de todos os banner, e depois jogar cada um no site, ai nunca nenhum registro vai se repetir.
Vou postar o meu código, apesar de está um pouco grande, dá pra ter uma idéia do que eu quiz fazer, fiz na pressa pelo curto prazo.
Ta sem comentário mais vou detalhar por cima:
1. O primeiro bloco que está comentado, e que o cliente pediu para alguns banner aparecer somente na página selecionada na Administração;
2. O segundo bloco consulta as categoria do banner, ele cria a query para cada categoria, para posteriormente fazer o array de cada categoria;
3. O terceiro bloco, percorre o array() das categoria, executa a query do array, e cria outro array() com os dados do banner;
4. É a função que mostra o banner;
Como usar?
<?php
mostrarBanner($banner468x60[0]["codbanner"],
$banner468x60[0]["titulo"],
$banner468x60[0]["data"],
$banner468x60[0]["arquivo"],
'468x60',
$banner468x60[0]["ver"]);
?>
Esta variavel
$banner468x60 é a váriavel que o foreach() do terceiro bloco cria.
Deixei o código por ultimo, por está muito grande, a maioria não ia ler o que estava no final.
<?php
//if(isset($_GET["page"]) && $_GET["page"] != ""){
// $page = " AND ban.pagina = '$_GET[page]'";
//} else {
// $page = " AND ban.pagina = 'principal'";
//}
$sql = "SELECT * FROM bannercategoria WHERE liberar = 1 ORDER BY codbannercategoria ASC";
$sql = $bancoDados->ExecutarQuery($sql);
while($d = $bancoDados->MostrarResultado($sql)) {
$banner["banner".$d["titulo"]] .= "SELECT b.codbanner, b.titulo, b.data, b.link, a.codarquivo, a.arquivo
FROM banner b
INNER JOIN arquivo a ON b.codbanner = a.codbd
WHERE
a.bd = 'banner'
AND b.liberar = '1'
AND b.codbannercategoria = '{$d["codbannercategoria"]}' ORDER BY rand() DESC LIMIT 0,10";
}
foreach ($banner as $key => $sql) {
$bann = $key;
$$bann = array();
$sql = $bancoDados->ExecutarQuery($sql);
while($d = mysql_fetch_assoc($sql)) {
array_push($$bann, $d);
}
}
function mostrarBanner($codbanner, $titulo, $data, $arquivo, $categoria, $ver) {
include_once("admin/model/banco/ConexaoBD.php");
$bancoDados = new ConexaoBD();
if($codbanner <> "") {
$data = explode(" ", $data);
$folder = (!isset($_GET["folder"])) ? 'up/banner/' : $_GET["folder"];
$folder = $folder.preg_replace(array("[ ]","[:]","[-]"),"_",$data[0])."/".$arquivo;
$tipo = strtolower(end(explode('.', $arquivo)));
list($width, $height, $type, $attr) = getimagesize($folder);
switch($categoria) {
case '468x60':
$largura = "468";
$altura = "60";
break;
case '365x100':
$largura = "365";
$altura = "100";
break;
}
if($categoria == "flutuante") {
echo "<script type=\"text/javascript\">
window.onload = function(){
Shadowbox.open({";
if ($tipo == "jpg" || $tipo == "gif" || $tipo == "png") {
echo "player: 'img',
content: '$folder',
width: '$largura',
height: '$altura',
title: '$titulo'";
} else {
echo "player: 'swf',
content: '$folder',
title: '$titulo',
width: '$largura',
height: '$altura',
options: {}";
}
echo "});};</script>";
} else {
if ($tipo == "jpg" || $tipo == "gif" || $tipo == "png") {
echo "<a href=\"verlink.php?id=$codbanner\" target=\"_blank\"><img src=\"$folder\" width=\"$largura\" border=\"0\" align=\"left\"></a>
";
} else if($tipo == "swf") {
echo "<div onclick=\"open('verlink.php?id=$codbanner', null,'height=$altura,width=$largura,status=yes,toolbar=yes,menubar=yes,resizable=yes,location=yes,scrollbars=yes')\" style=\"position:absolute; cursor: pointer; width:$largura"."px; height:$altura"."px; z-index:1\">
<table width=\"$largura\" height=\"$altura\" style=\"cursor: pointer;\">
<td></td>
</table>
</div>
<div align=\"left\" style=\"cursor: pointer;\">
<script type=\"text/javascript\">
AC_FL_RunContent('codebase', '
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0', 'width', '$largura', 'height', '$altura', 'src', '".substr($folder,0,-4)."', 'wmode', 'opaque', 'quality', 'high', 'pluginspage', '
http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','".substr($folder,0,-4)."' );
</script>
</div>
<noscript>
<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\" width=\"$altura\" height=\"$largura\">
<param name=\"movie\" value=\"$folder\">
<param name=\"quality\" value=\"high\">
<param name=\"wmode\" value=\"transparent\">
<embed src=\"$folder\" wmode=\"transparent\" quality=\"high\" pluginspage=\"
http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"$largura\" height=\"$altura\">
</embed>
</object>
</noscript>";
}
}
$ver = $ver + 1;
$sql = "UPDATE banner SET ver = ver + 1 WHERE codbanner = '$codbanner'";
$bancoDados->ExecutarQuery($sql);
}//end if
}
?>