Hola, puse unos banners rotativos en mi web. Hasta aca todo bien, el problema es que los selecciona aleatoriamente y los repite, ademas yo puse 2 banner en el header y otros 2 en el footer, la idea seria que tomara de la misma base de datos los banner, pero que en cada uno pongo uno diferente y ademas no se repitan, es decir que cada uno muestra la totalidad de los banners antes de arrancar de nuevo. No se si fui muy claro, abajo les pongo el codigo que utilice, gracias.
archivo para los banner: Código PHP:
<?php
// Conecta con el servidor mysql
$link = mysql_connect('******', '*********', '***********************');
if(!$link) {
// Si no conecta, muestra un error y termina la ejecucion
die('No se pudo conectar con la base de datos:' . mysql_error());
}
// Selecciona la base de datos que contiene la tabla banner
if(!mysql_select_db('elmati26_alertpay', $link))
{
// Si no se puede seleccionar muestra error y termina ejecucion
die('Error seleccionando base de datos: ' . mysql_error());
}
// Toma un banner aleatorio de la base de datos
$sql = "SELECT banner_id, nombre, url, url_imagen FROM banner ORDER BY RAND() LIMIT 1";
$res = mysql_query($sql);
list($banner_id, $nombre, $url, $url_imagen) = mysql_fetch_array($res);
// Muestra el banner
echo "<a href=\"banner-clic.php?banner_id=".$banner_id."\"target=_blank>\n";
echo "<img src=\"".$url_imagen."\" width=\"468\" height=\"60\" ";
echo "border=\"0\" alt=\"".$nombre."\"></a>\n";
// Actualiza la cantidad de impresiones del banner
$sql = "UPDATE banner SET impresiones=impresiones+1 WHERE banner_id=".$banner_id." LIMIT 1";
mysql_query($sql);
?>
archivo para los clicks e impresiones: Código PHP:
<?php
// Archivo 'banner-clic.php'
// Conecta con el servidor mysql
$link = mysql_connect('***********', '**************', '**************');
if(!$link) {
// Si no conecta, muestra un error y termina la ejecucion
die('No se pudo conectar con la base de datos:' . mysql_error());
}
// Selecciona la base de datos que contiene la tabla banner
if(!mysql_select_db('elmati26_alertpay', $link))
{
// Si no se puede seleccionar muestra error y termina ejecucion
die('Error seleccionando base de datos: ' . mysql_error());
}
// Revisa si se paso el parametro correcto
if(!isset($_GET['banner_id']) || !eregi('^[0-9]+$', $_GET['banner_id']))
{
die('Ha seguido un enlace incorrecto');
}
$banner_id = $_GET['banner_id'];
$sql = "SELECT url FROM banner WHERE banner_id=" . $banner_id;
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0)
{
// Si el banner no existe muestra el error y termina ejecucion
die('Este banner no existe');
}
else
{
list($url) = mysql_fetch_array($res);
// Actualiza la cantidad de clics
$sql = "UPDATE banner SET clics=clics+1 WHERE banner_id=".$banner_id." LIMIT 1";
mysql_query($sql);
// Redirecciona el navegador
header('Location: ' . $url);
die();
}
?>
en cuanto al ORDER BY RAND() ya probe ordenarlo por banner_id o 1 y no funciona.
en el header lo que hago es hacer un include asi: Código HTML:
<table width="936" border="0" align="center">
<tr>
<td width="479"><div align="center"><?php include ('banner_rot.php');?></div></td>
<td width="447"><div align="center"><?php include ('banner_rot.php');?></div></td>
</tr>
</table>
pero logicamente me selecciona al azar los banner, pero los repite a veces uno con el otro ya que es el mismo codigo, ademas de que a veces pasa algun banner 2 0 3 veces seguidas.
Alguna solucion?
Muchas gracias a todos de antemano.