Ver Mensaje Individual
  #8 (permalink)  
Antiguo 16/06/2003, 13:38
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, el rand() (www.php.net/rand) seria para generar un indice aleatorio para el array. Tendria que ser un numero aleatorio entre el primer indice del array (1 en el ejemplo de Cluster) y el ultimo (3 en el ejemplo). Para generar el numero aleatorio es conveniente usar srand() (www.php.net/srand) antes de rand(). El numero generado por rand() seria el que tienes que usar como indice del array, en lugar del $id_banner de Cluster (bueno, realmente seria asignar el valor del rand() a $id_banner y olvidarse de las cookies y las sesiones si no teimporta que pueda salirle dos veces seguidas el mismo banner).

Bueno, esa seria la teoria. Ahora un poco de codigo. Realmente todo el codigo esta o en el ejemplo de Cluster o en el manual (mira los links al manual, es la mejor forma de aprender):
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";

// calculamos la semilla del generador aleatorio de numeros
function make_seed() {
    list(
$usec$sec) = explode(' 'microtime());
    return (float) 
$sec + ((float) $usec 100000);
}
srand(make_seed());
// calculamos el indice aleatorio
$id_banner=rand(1,3); // si el primer indice no es 1
// y/o el ultimo no es 3, cambiar como corresponda

// Recuperamos los elementos del array segun el indice del banner contador

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

?>
El resto del include y del link, seria igual, quitando la errata:
Código PHP:
<a href="<? echo $banner_url?>"><img src="<? echo $banner_imagen?>"></a>
Faltaba cerrar el <img>.

Por supuesto, esto seria totalmente mejorable, como poniendo el listado de banners en un .txt (y leerlo con file() (www.php.net/file)) o el codigo del include meterlo en una funcion que devuelva la cadena HTML generada o tener banners que no sean imagenes (Flash). Pero eso son ejercicios para casa .

Y en lo que habla carmago es en base de datos. En lugar de tener la lista de banners en un array (o en un fichero), tenerlos almacenados en una base de datos. Pero el concepto es lo mismo.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 16/06/2003 a las 13:41