Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/10/2008, 09:43
elmati26
 
Fecha de Ingreso: junio-2008
Mensajes: 21
Antigüedad: 15 años, 11 meses
Puntos: 0
Banner rotativo aleatorio sin repetir

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.