Foros del Web » Programando para Internet » PHP »

Rotar imagenes con sus links

Estas en el tema de Rotar imagenes con sus links en el foro de PHP en Foros del Web. Holazzz amigoss webmasterss!!! Estube buscando un ejemplo simple en php, pero no lo pude encontrar Lo q yo kiero hacer es poner una imagen con ...

  #1 (permalink)  
Antiguo 15/06/2003, 20:58
 
Fecha de Ingreso: junio-2002
Ubicación: Uruguay
Mensajes: 427
Antigüedad: 22 años, 4 meses
Puntos: 0
Pregunta Rotar imagenes con sus links

Holazzz amigoss webmasterss!!!
Estube buscando un ejemplo simple en php, pero no lo pude encontrar

Lo q yo kiero hacer es poner una imagen con su hipervinculo (x ejemplo, un logo de chat hipervinculado al chat de mi sitio), y q cada vez q se cargue la pagina se ROTE la imagen y el hipervinculo y cambie a otras secciones.. x ejemplo q en vez del chat, aparezca la imagen del foro y el link sea el del foro de mi sitio.

Eso se puede hacer con php???

Graacias!
  #2 (permalink)  
Antiguo 15/06/2003, 22:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 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
  #3 (permalink)  
Antiguo 16/06/2003, 07:09
 
Fecha de Ingreso: junio-2002
Ubicación: Uruguay
Mensajes: 427
Antigüedad: 22 años, 4 meses
Puntos: 0
Muuuchas Gracias Cluster x toda la explicacion!!!
ESTA GENIAL!

Pero me kedo una duda, yo cuando dije ROTATIVO me referia a ALEATORIO... x eso no se si usar sesiones o cokies. vos q me recomendas???

Respondiendote a tu pregunta: Ahora mi pregunta: ¿Lo quieres hacer tu mismo poco a poco o lo quieres hecho ya? ... --- Yo no sé casi nada de php, me ayudarias mucho si me lo darias hecho los codigos.

Un saludo Cluster!
  #4 (permalink)  
Antiguo 16/06/2003, 07:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 4 meses
Puntos: 16
Hola,

Si lo quieres aleatorio, solo debes usar la funcion rand() para calcular el siguiente banner.

Si quieres uno ya hecho en plan profesional y todo eso, busca el phpMyAds (http://www.hotscripts.com/Detailed/17100.html)

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 16/06/2003, 12:36
 
Fecha de Ingreso: junio-2002
Ubicación: Uruguay
Mensajes: 427
Antigüedad: 22 años, 4 meses
Puntos: 0
Holazz Josemi:
El php My ads, es demasiado para lo q yo kiero..... yo solo kiero rotar tres imagenes con sus vinculos en mis paginas webs...

Tus ejemplos Cluster, los probe, pero siempre aparece el mismo banner con el mismo hipervinculo... no se xq no rota! =((

Como hago para usar la funcion rand en tus ejemplos Cluster??

Alguien q sepa me podria ayudar??? Les estaria muy agradecidos!

Saludoss!
  #6 (permalink)  
Antiguo 16/06/2003, 12:44
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 22 años, 7 meses
Puntos: 2
xDDD,, uts,, Cluster no andes dando codigos tan malos ..xDD jej..

en fin,, podrias hacer una consulta rand() en la bd.. en una tabla q contenga 3 campos, id int(9) auto_increment (primaria), imagen (o bien banner) char(255) o bien,, si deseas meter mejor el banenr en la tabla (longblob) con otro campo de FILETYPE para mostrarlo sin errores,, y por ultimo la url..

Haces una consulta rand() a la bd
poniendo:

<a href=\"".$row[url]."\"><img src=\"".$row[imagen]."\" border=0></a>

y listo

Salu2
__________________
http://www.chorcha.com
  #7 (permalink)  
Antiguo 16/06/2003, 13:02
 
Fecha de Ingreso: junio-2002
Ubicación: Uruguay
Mensajes: 427
Antigüedad: 22 años, 4 meses
Puntos: 0
Buen diaa Camargo:
Graaacias x tu ayudaa! pero no te entendi nada!!! En q idioma hablas?? = S

Soy newbye en esto de php, y menos en mysql... yo kiero algo simple.. me lo podes traducir?? y si es posible q el codigo no use mysql!

Saludoss!
  #8 (permalink)  
Antiguo 16/06/2003, 13:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 4 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
  #9 (permalink)  
Antiguo 16/06/2003, 18:14
 
Fecha de Ingreso: junio-2002
Ubicación: Uruguay
Mensajes: 427
Antigüedad: 22 años, 4 meses
Puntos: 0
Me funciono perfectooo!
SOS UN MAESTRO JOSEMI!!! =))))
TE ESTOY SUPER AGRADECIDO! TE DEBO UNAA!!
Contactame para cualkiera cosa q kieras!!

Chauu! q tes bienn :P

PD: GRACIAS = A TODOS LOS DEMAS!! (CLUSTER, CAMARGO!)
  #10 (permalink)  
Antiguo 16/06/2003, 19:52
Avatar de redbaron  
Fecha de Ingreso: abril-2003
Ubicación: Asunción, Paraguay
Mensajes: 357
Antigüedad: 21 años, 6 meses
Puntos: 0
excelentes recomendaciones
__________________
http://www.portalti.com
Noticias y Tutoriales para Profesionales de IT
MCP, MCSA, MCSE, CCNA, CCIE, MCTS
  #11 (permalink)  
Antiguo 16/06/2003, 20:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
mm Pues no llegué a probar el código en várias páginas (sólo recargando la misma página) y . funcionaban los dos.

Recuerda que usa uno cookies (así que debes de aceptarlas en tu navegador)

El otro usa sesiones y habría que ver la configuración al respecto como para que te llegase a funcionar .. El script ese en concreto asume que propagas el SID en una cookie o por lo menos automáticamente (session.use_trans_sid = 1) ...


pd: Ya corregí el cierre del img tag ... xD thanks josemi ..
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 02/11/2003, 00:45
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 1 mes
Puntos: 41
Sonrisa humildemente...

Paseando por el manual de PHP me encontré con una función para elegir aleatoriamente la posición en un array:
Una "mejora?" al código de josemi. He utilizado la función array_rand(). De esta manera cuando hay que introducir un nuevo elemento del array, sólo se hace eso, sin cambiar los parámetros de la función rand()
Código PHP:
$banners[0]['imagen']="imagen0.gif";
$banners[0]['url']="www.nosenada.tal";

$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";

//Acá viene lo diferente
$id_banner array_rand($banners);

$banner_imagen=$banners[$id_banner]['imagen'];
$banner_url=$banners[$id_banner]['url']; 
El manual dice:"A partir de PHP 4.2.0 ya no es necesario inicializar generador de números aleatorios".

Saludos

Última edición por jpinedo; 02/11/2003 a las 01:06
  #13 (permalink)  
Antiguo 02/11/2003, 01:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Optimización diria yo jpinedo .. Cuanto más se conoce el lenguaje .. menos código escribimos (usamos la función X en lugar de implementar el algoritmo entero; ejemplo .. ya que estamos con arrays, ordenar un array por el método de burbuja a "mano" o usar short() ). Y si hay alguna función o método "nativo" (como es el caso) .. seguro que es más optimo que lo que podamos hacer a mano "desglosado".

Al ilo del tema ordenar un array .. también existe:

suffle()
http://www.php.net/manual/en/function.shuffle.php

Esta desordena todo el array .. así que si quieres uno sólo .. hay que acceder al primer (o cualquier elemento) del array para tomar el valor. Para este caso array_rand() va mejor .. pero, .. imagina que tuvieramos que elegir N elementos del array aleatorios, en ese caso sería mejor esta función.

Un saludo,
__________________
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; 02/11/2003 a las 01:39
  #14 (permalink)  
Antiguo 02/11/2003, 14:48
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 1 mes
Puntos: 41
De acuerdo

Gracias Cluster... esa es la palabra que no encontraba... "Optimización".

Ah... la función array_rand() tiene un segundo parámetro que sirve para indicar cuántos elementos del array se van a seleccionar aleatoriamente. Por eso, si necesitas por ejemplo 3 elementos, sólo haces algo así:
$claves=array_rand($banners, 3);

$claves será un array que contiene los índices aleatorios que se han tomado del array $banners. O sea que para acceder a los elementos del array banners (aleatoriamente) haces esto:

$banners[$claves[0]];
$banners[$claves[1]];
$banners[$claves[2]];

Me parece mejor que desordenar todo el array, pues array_rand() sólo toma índices existentes. O sea que si tu array no tiene los índices consecutivos, algo así:
$banners[0]="algo";
$banners[1]="otro";
$banners[5]="otro más";

array_rand($banners (, número)), sólo elegirá aleatoriamente entre 0, 1 y 5.

Espero se haya entendido.
Más información en :
http://www.php.net/manual/es/function.array-rand.php

Saludos

Última edición por jpinedo; 02/11/2003 a las 14:53
  #15 (permalink)  
Antiguo 02/11/2003, 15:07
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 4 meses
Puntos: 16
Bueno, lo que pasa es que tengo mas vision de futuro que vosotros. El codigo que puse es pensando en sustituir el rand() por una funcion qu etome un valor aleatorio de una campana de gauss desplazada que nosotros configuremos, para poder alterar la aletoriedad e imponer nuestro criterio a la eleccion del banner.

Por supuesto, el parrafo anterior es una tonteria Pero algo tenia que poner para defender mi codigo. Por supuesto el array_rand() y el shuffle() son soluciones totalmente validas, incluso mas "optimas" que la mia. Es mas, incluso mi codigo se podria optimizar con count() para saber el limite superior sin ponerlo "a mano", y con array_keys() para solucionar el problema de los indices no consecutivos, por decir un par.

Es que yo tengo un pequeño problema con las funciones de PHP: son muchas. Y yo vengo del C, un lenguaje donde tenias que hacer casi todo a mano. Por eso muchas de mis soluciones son mas parecidas a codigo C que a PHP.

Nadie es perfecto.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #16 (permalink)  
Antiguo 02/11/2003, 23:41
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 1 mes
Puntos: 41
De acuerdo

Muy bien josemi
Posts como ese son los que te hacen un grande de verdad

Pero Cluster, ya me dejaste la duda:

***Pregunta abierta (no sólo para Cluster)***

¿Es más óptimo utilizar array_rand() o shuffle() para este script?. Es que a mí me parecen buenos los dos... pero alguno tendrá que optimizar mejor ¿no?...Yo defiendo al array_rand() porque me parece una función creada especialmente para esto. Pero Cluster ya casi me convenció de lo del shuffle()...

¿Opiniones?... ¿Sugerencias?

Dejo acá los links al manual (en español)

array_rand()
http://www.php.net/manual/es/function.array-rand.php

shuffle()
http://www.php.net/manual/es/function.shuffle.php

Saludos
  #17 (permalink)  
Antiguo 03/11/2003, 09:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Jejej... josemi .. Todos aprendemos todos los dias. Sin ir más lejos ahora veo "FAQ's" mias que ahora sé más alternativas u optimizaciones (entre otras cosas por leer más el manual de referencia y dedicarle un poco de tiempo más a buscar a ver si hay alguna alternativa a lo que pretendo hacer en cada momento).

Sobre el tema de shuffle() o array_rand() .. A nivel "usuario" .. si sólo quiero un elemento de ese array (aleatorio) usaría array_rand() .. solo requiere de la llamada a la función (la ley del mas vago xD). Pero si quiero más elementos del array (aleatorios) .. mm casi mejor usaría shuffle() en lugar del 2º parámetro de array_rand(). No he profundizado más en el tema, pero parece que array_rand() genera un array nuevo con esos elementos .. mientras que shuffle() parece que desordena los indices del array origen .. Supongo que este hecho algo ahorrará de recursos "memoria" al hacer este trabajo ..?¿? (son suposiciones .. insisto que no he leido profundamente el manual)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #18 (permalink)  
Antiguo 03/11/2003, 09:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 4 meses
Puntos: 16
Yo el problema que le veo a sufle (esto es un plato, ¿verdad?) es que te desordena el array original, dejandolo "inservible" si lo necesitas en el formato original.

Y el array_rand() no es mas que coger los n primeros elementos del shuffle(array_keys($array)), pero supongo que optimizado en codigo C. Ademas, creo que no se puede poner como lo he puesto (sufle modifica el array, y como el array no esta en una variable, no podria acceder a ella). Seria mas bien:
Código PHP:
$claves=array_keys($array);
shuffle($claves);
$aleatorio=$array[$claves[0]];

// o si queremos mas aleatoriedad, podemos elegir el indice de $claves aleatoriamente

$id_clave=rand(0,count($claves)); 
$aleatorio_2=$array[$claves[$id_clave]]; 
Y ahora que miro el manual, le veo otro fallo a sufle:
Código PHP:
<?php
          $fruits 
= Array(
   
"apples" => "juicy",
   
"lemons" => "sour",
   
"tangerines" => "sweet");
shuffle($fruits);
print_r($fruits);
?>
Mirad que le hace al pobre array asociativo

Asi que sabiendo los pros y los contras, es solo cuestion de elegir.

Saludos.

PD: Esto es lo que me gusta de la programacion. Preguntas por una solucion a 10 programadores y obtienes 93.45 soluciones totalmente validas.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #19 (permalink)  
Antiguo 04/11/2003, 02:01
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 1 mes
Puntos: 41
Uy.. josemi... eso sí que es tener "ojo"... tienes mucha razón con lo del array asociativo y shuffle()... Entonces me decido por... "array_rand()".. (elección personal)...
*******************************************
Ah.. acabo de enviar el script a las FAQ's, porque me parece que vale la pena.
*******************************************
Saludos
  #20 (permalink)  
Antiguo 04/11/2003, 02:25
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 4 meses
Puntos: 16
Bueno, mas que "ojo", es costumbre. Siempre leo los comentarios de los usuarios, ya que es un "resumen" de los problemas que dan las funciones en el mundo real. Y muchas veces viene ya con la solucion. Y como habia uno que decia "Lo mismo pero para arrays asociativos", deduje que shuffle() no funcionaba con asociativos. Una pequeña comprobacion y ya.

Y buena idea lo de ponerlo en la FAQ. Creo que en la javascript tienen su version client-side, pero PHP es mejor

Saludos.

PD: Como siga contando mis "secretos", voy a perder mi imagen de genio
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #21 (permalink)  
Antiguo 05/11/2003, 01:43
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 1 mes
Puntos: 41
Bueno.. entonces tienes "ojo" pa mirar los comentarios...

Probé array_rand() con un array asociativo y funciona muy bien. Captura los índices asociativos. En cambio el shuffle realmente hace un "suflé" con el array.

Aunque es cierto de que para este ejemplo en particular tal vez shuffle() pudiera funcionar mejor... pero para otros ejemplos similares donde se trabaje con arrays asociativos, sería un problema.

Lo de poner el script en las FAQ's fue idea de Cluster.

Pienso que los scripts de Cluster para que los banners salgan secuencialmente utilizando cookies y el otro utilizando sesiones también deberían ir a las FAQ's.

Bueno, nada más.

Saludos
  #22 (permalink)  
Antiguo 05/11/2003, 03:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 4 meses
Puntos: 16
Cita:
Pienso que los scripts de Cluster para que los banners salgan secuencialmente utilizando cookies y el otro utilizando sesiones también deberían ir a las FAQ's.
La mitad de los mensajes de Cluster deberian ir las FAQs. Mejor dicho, deberian ser de obligada lectura para todos (¿suena a peloteo? No mucho, ¿o si?)

Mas en serio, si alguien se tomase el tiempo de rebuscar en los mensajes del foro, encontraria material suficiente para hacer muchisimos tutoriales. Eso si, seria un trabajo de chinos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #23 (permalink)  
Antiguo 05/11/2003, 17:34
 
Fecha de Ingreso: junio-2002
Ubicación: Uruguay
Mensajes: 427
Antigüedad: 22 años, 4 meses
Puntos: 0
Wenas a todos!!
Parece q se hizo muy largo este tema pero x fin pude terminar el script y me anda perfecto (lo q pasaba antes con el primer ejemplo q no se de donde sake es q a veces elegia la imagen de lista de correo pero el vinculo o formulario de recomendar y aparecia muy mal en las paginas).

Pero ahora, con el codigo q me facilito JPINEDO (codigo version mejorada de la de Cluster sino me ekivoco) ese problema ya no lo tengo xq elije bien los datos y los muestra x sesiones osea q en cada carga de pagina muestra el otro array (me explike bien?), no como antes q o se ekivocaba y mostraba desordenado o varias veces lo mismo.

El codigo es el siguiente:

<?

$include[0]['alt']="Lista de correo";
$include[0]['inc']="listadecorreom";
$include[0]['link']="listadecorreo";

$include[1]['alt']="Recomendar a un amigo";
$include[1]['inc']="recomendarm";
$include[1]['link']="recomendar";

$id = array_rand($include);

$alt=$include[$id]['alt'];
$inc=$include[$id]['inc'];
$link=$include[$id]['link'];

?>

Y se incluye poniendo $alt en las paginas x ejemplo o usando <? php include $alt ?> (espero haberlo puesto bienn).

Algo aprendi ^_^ y la verdad q de todo esto, Cluster me enseño q es mejor investigar y al final se obtienen mejores resultados y varias opciones y codigos mejorados y mas simples de utilizar, conociendo aun mas el php se hace mas simple, no lo creen?

Opinando de la funcion suflle creo q es algo bastante interesante, pero no para mi caso, pero mas para otras necesidades pero todavia no lo tengo muy claro ese tema.

Creo q estos scripts terminados de este tema tendrian q ir al faq de PHP ya q estan muy bien logrados ehh!

Les agradezco a todos enormemente a cluster desde un principio, a josemi, a jpinedo y a ver si me olvido a alguno q me sepa disculpar es q no tengo tanta memoria!! =((

Gracias a todos y suerte! :)
  #24 (permalink)  
Antiguo 06/11/2003, 03:27
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 1 mes
Puntos: 41
Más bien sería <?php echo $alt ?>

Pero, creo que vale la pena también lo del "alt"... voy a editar la FAQ que puse y voy a agregarle ese "alt".

Y a la pobre función que desordena arrays hay que llamarla como es: "shuffle()".. así, con SH.. y doble FF.. sino la convertimos en tortilla.

Un gusto compartir este tema con todos ustedes.

Saludos
  #25 (permalink)  
Antiguo 10/09/2004, 07:59
 
Fecha de Ingreso: febrero-2004
Mensajes: 11
Antigüedad: 20 años, 8 meses
Puntos: 0
Hola, he leído todo esto, y el problema que yo tengo es que no quiero especificar uno a uno todos los elementos del array, sino, crear una consulta con una condición determinada, y que los resultados obtenidos formen el array que quiero utilizar para rotar los banners aleatoriamente
  #26 (permalink)  
Antiguo 10/09/2004, 08:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pues marymary .. haz tu consulta SQL habitual y genera ese array(s) que se usan en tu bucle que otienes los registros (y campos) implicados ..

El ejemplo es genérico y por eso se usaron "Arrays" .. ahora cada uno le dá su fín como gustes.

Te recomiendo que inicies un nuevo tema .. indica el código que ya usas para obtener los datos de tu consulta SQL y el código de este mensaje para rotar los banners ..

Un saludo,
  #27 (permalink)  
Antiguo 25/01/2007, 13:11
 
Fecha de Ingreso: diciembre-2004
Ubicación: Morelia,Michoacan,México
Mensajes: 22
Antigüedad: 19 años, 10 meses
Puntos: 0
Exclamación Re: Rotar imagenes con sus links

Hola Saludos a todos:

Es muy interesante la informacion que manejan para poder realizar la rotacion de banner cabe mencionar que tome la ayuda que ponen casi el principio Josemi y JPinedo y actualmente tengo en mi pagina este codigo:
Código PHP:
<?php 
$banners
[0]['imagen']="/imagenes/banners/topos.gif";
$banners[0]['url']="loquesea.com";

$banners[1]['imagen']="/imagenes/banners/topos.gif";
$banners[1]['url']="loquesea.com";

$banners[2]['imagen']="/imagenes/banners/topos.gif";
$banners[2]['url']="loquesea.com";

$banners[3]['imagen']="/imagenes/banners/topos.gif";
$banners[3]['url']="loquesea.com";

//Acá viene lo diferente
$id_banner array_rand($banners);
$banner_imagen=$banners[$id_banner]['imagen'];
$banner_url=$banners[$id_banner]['url'];  
?>
<div align="center"><a href="<? echo $banner_url?>"></a> <imgsrc="<?echo $banner_imagen?>"></a> </div>
que rota el banner pero; no me esta cargando el URL es decir si quiero dar click para ir al URL del banner no hay ningun LINK, tengo algo mal en el codigo ? y otra pregunta abierta para quien me pueda ayudar como puedo hacer que el banner cambie cada que se actualiza la pagina ?? gracias de antemano por ayuda
  #28 (permalink)  
Antiguo 25/01/2007, 17:08
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 10 meses
Puntos: 22
Re: Rotar imagenes con sus links

Hize algo pequeño pero efectivo haber si lo prueban y me dicen como les fue:

<? ///*****imagenes aleatorias*********////
$total = "3"; // Numero total de imagenes que tenemos en el directorio
$extension = ".gif";// Definimos la extension, puede ser .jpg, .gif, .bmp, .etc.
// De aqui para abajo no es necesario modificar nada
$start = "1";
$random = mt_rand($start, $total);
$image_name = $random . $extension;
// aqui ponemos en este orden los enlaces de acuerdo a su imagen
$url[1]="pagina1.htm";
$url[2]="pagina2.htm";
$url[3]="pagina3.htm";
$link = $url[$random];
?>

<p><a href="<?echo $link;?>""><img border="0" src="<?echo $image_name;?>" width="50" height="50"></a></p>


Recuerden que todas las imagenes deben estar en el mismo directorio y enumerados de esta manera 1.gif, 2.gif, 3.gif .... o con la extencion que esten trabajando.
Saludos y espero le sirva a alguien.
  #29 (permalink)  
Antiguo 25/01/2007, 17:08
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 10 meses
Puntos: 22
Re: Rotar imagenes con sus links

Hize algo pequeño pero efectivo haber si lo prueban y me dicen como les fue:

Código PHP:
<?     ///*****imagenes aleatorias*********////
$total "3"// Numero total de imagenes que tenemos en el directorio
$extension ".gif";// Definimos la extension, puede ser .jpg, .gif, .bmp, .etc. 
// De aqui para abajo no es necesario modificar nada 
$start "1"
$random mt_rand($start$total); 
$image_name $random $extension
// aqui ponemos en este orden los enlaces de acuerdo a su imagen
$url[1]="pagina1.htm";
$url[2]="pagina2.htm";
$url[3]="pagina3.htm";
$link $url[$random];
?>

<p><a href="<?echo $link;?>""><img border="0" src="<?echo $image_name;?>" width="50" height="50"></a></p>
Recuerden que todas las imagenes deben estar en el mismo directorio y enumerados de esta manera 1.gif, 2.gif, 3.gif .... o con la extencion que esten trabajando.
Saludos y espero le sirva a alguien.
  #30 (permalink)  
Antiguo 26/01/2007, 17:55
 
Fecha de Ingreso: diciembre-2004
Ubicación: Morelia,Michoacan,México
Mensajes: 22
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Rotar imagenes con sus links

ginitofl:

que tal agradesco tu ayuda pero con ese codgio no se la imagen ni nada, ahora tuve que cambiar el nombre de la imagene a " 1.gif " como mencionas pero no pasa nada , te reitero qque ni siquiera salen las imagenes.

saludos ....
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:57.