Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/06/2003, 22:35
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, (ya que comentas que al recargar la página cambie tu "banner" ..)

Si te guardas en un array las imganes (su ruta) y en otro los URL que corresponden (o bien un array bidimensional ..) puedes acceder a ellas por su indice y mostrarlas fácilmente. El "problema" es que si ha de ser rotativo (que no aleatorio que sería más sencillo) ese "por que banner voy?" te lo tienes que guardar en algún sítio .. bien sea una cookie, una sesión .. un archivo de texto plano .. una bd .. E incluso simplemente propagandolo por el URL (no me parece buena idea esto último .. pues sino todos los links de tus páginas deberían incluir dicha referencia ..)

Bueno, eso es la teoría .. Ahora mi pregunta: ¿Lo quieres hacer tu mismo poco a poco o lo quieres hecho ya? ...

Un saludo,

Bueno .. pues hice mi versión de la "teoría" que expliqué mas arriba .. aquí va el código:

Una versión usando sesiones:

Código PHP:
<?
// array banners ..
$banners[1]['imagen']="imagen1.gif";
$banners[1]['url']="http://www.nose.tal";

$banners[2]['imagen']="imagen2.gif";
$banners[2]['url']="pagina.html";

$banners[3]['imagen']="imagen3.jpg";
$banners[3]['url']="../pagina.php";

session_start();
if (empty(
$_SESSION['banner_id'])){
    
// Las sesiones o cookies no quedan disponibles hasta que se haga una petición al servidor
    // (recarga de página por ejemplo ..). He de ahí que la sesión/cookies se inicialice con el el segundo elemento del array ..
    
$_SESSION['banner_id']=2;
    
// pero, para mostrar el indice 1 del array .. en la priméra carga de esta página .. se inicializa al primer elemento del array..
    
$id_banner=1;
} else {
    
// recogemos el contador que almacenamos en sesión/cookie
    
$id_banner=$_SESSION['banner_id'];

    
// Se verifica si estamos en el último "banner" de la lista del array ..
    
if ($id_banner+count($banners)){
        
// si es así .. reseteamos el contador hacia la posición 1 ..
        
$_SESSION['banner_id']=1;
    } else{
        
// sino, incrementamos el contador ...
        
$_SESSION['banner_id']++;
    }
}

// Recuperamos los elementos del array segun el indice del banner contador
$banner_imagen=$banners[$id_banner]['imagen'];
$banner_url=$banners[$id_banner]['url'];

?>
Y una versión usando cookies:

Código PHP:
<?
// array banners ..
$banners[1]['imagen']="imagen1.gif";
$banners[1]['url']="http://www.nose.tal";

$banners[2]['imagen']="imagen2.gif";
$banners[2]['url']="pagina.html";

$banners[3]['imagen']="imagen3.jpg";
$banners[3]['url']="../pagina.php";

if (empty(
$_COOKIE['banner_id'])){
    
setcookie("banner_id",2);
    
$id_banner=1;
} else {
    
$id_banner=$_COOKIE['banner_id'];

    if (
$id_banner+count($banners)){
        
setcookie("banner_id",1);
    } else{
        
$valor=$_COOKIE['banner_id']+1;
        
setcookie("banner_id",$valor);
    }
}

$banner_imagen=$banners[$id_banner]['imagen'];
$banner_url=$banners[$id_banner]['url'];

?>
Su uso en ambos casos sería:

Elige uno de ambos métodos .. Cookies o sesiones (recomendable sesiones) .. guarda el código con el nombre que quieras .php ... Y llamalo vía:

Código PHP:
<? include("como_lo_llames.php"); ?>
Tienes que hacer este "include" antes de cualquier HTML (ten cuidado con espacios o saltos del línea .. son considerados como "envio de cabeceras" .. pues ni cookies ni sesiones aceptan que se envien otras cabeceras antes que ellas mismas .. Se puede solventar ese "detalle" ..pero ese es otro téma ..)

En tus páginas (deben ser .php ..) llamas al banner donde quieras vía:

Código PHP:
<a href="<? echo $banner_url?>"><img src="<? echo $banner_imagen?>"></a>
Por la simplicidad del código sólo funciona con imagenes (.gif, .jpg, .png ..) con archivos "flash" no está adaptado ..

Siguiendo la misma estrucutra del array bidimensional que se usa podrías añadir más "campos" a tu sistema de banners .. com por ejemplo el "target" (independiente para cada banners) .. o una etiqueta "alt" para la imagen .. entre otras cosas.

Un saludo2,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 16/06/2003 a las 20:51