Foros del Web » Programando para Internet » PHP »

Banner rotativo aleatorio sin repetir

Estas en el tema de Banner rotativo aleatorio sin repetir en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/10/2008, 09:43
 
Fecha de Ingreso: junio-2008
Mensajes: 21
Antigüedad: 15 años, 10 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.
  #2 (permalink)  
Antiguo 24/10/2008, 14:14
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Banner rotativo aleatorio sin repetir

Lo que yo haria es ponerle un campo que permita saber si el banner ya se vio o no

Al cargar la pagina reviso si quedan banner por ver si aun quedan los muestro o sino reseteo el campo y empiezo a mostrar de nuevo todos los banners

Cada vez que se muestre un banner le pones un 1 o un ok o algo asi al campo del banner para que se sepa que ya fue visto

Espero me entienda la idea y le funcione
  #3 (permalink)  
Antiguo 24/10/2008, 16:25
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Banner rotativo aleatorio sin repetir

Hola elmati26
Seria muy conveniente que leas las políticas del foro antes de postear así evitarías poner código de programación

http://www.forosdelweb.com/f21/funci...-datos-413499/


Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:38.