Foros del Web » Programando para Internet » PHP »

Ayuda con script PHP de rotación de banners

Estas en el tema de Ayuda con script PHP de rotación de banners en el foro de PHP en Foros del Web. Hola, necesito una ayuda por favor. Tengo un topsite con banners publicitarios en posición central, izquierda y derecha que rotan secuencialmente y todo funciona perfecto. ...
  #1 (permalink)  
Antiguo 03/02/2011, 11:29
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Ayuda con script PHP de rotación de banners

Hola, necesito una ayuda por favor.

Tengo un topsite con banners publicitarios en posición central, izquierda y derecha que rotan secuencialmente y todo funciona perfecto. Ahora bien, en este momento me encuentro desarrollando un segundo topsite que es un clon del primero, exactamente la misma programación, todo idéntico (solo varía el diseño del head) pero por algún extraño motivo los banners se mantienen fijos y no rotan. Este es el PHP script que tengo para la rotación:

//randomly shuffle the array keeping the relation between keys and values
function shuffle_me($shuffle_me){
$randomized_keys = array_rand($shuffle_me, count($shuffle_me));
foreach($randomized_keys as $current_key) {
$shuffled_me[$current_key] = $shuffle_me[$current_key];
}
return $shuffled_me;
}
$center_banners=shuffle_me($center_banners);
$center_banners=array_slice($center_banners, 0, 20);

$left_banners=shuffle_me($left_banners);
$right_banners=shuffle_me($right_banners);
?>

Por favor, necesito una ayuda urgente, ¿porqué el script funciona perfectamente en un website y en el otro no? Los topsites están alojados en servidores diferentes ¿Habrá alguna configuración del servidor que se lo está impidiendo? He dado ya mil vueltas con esto y no he conseguido hacer rotar los banners en el segundo topsite. Toda ayuda es bienvenida.

Saludos,
Mangels
  #2 (permalink)  
Antiguo 03/02/2011, 11:37
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Ayuda con script PHP de rotación de banners

Tal vez puede ser un problema de cache, verifica que no se este cacheando la página y por eso no roten los banners.
Segundo, el código PHP retorna los resultados esperados? Según esa función center, left y right banners tienen que ser arreglos para que pueda elegir algún banner al azar de esa collección, así que verificaste que tengas varios?
  #3 (permalink)  
Antiguo 03/02/2011, 11:41
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Hola areslepra, gracias por tu respuesta.
En realidad no soy muy experta en esto y no se que significa "que no se este cacheando la página" por favor, me pudieras explicar cómo puedo verificar que esto esté bien.
Y sí, efectivamente, se necesitan al menos dos (2) banners para que roten. En el primer topsite todo esto funciona perfecto. En el segundo topsite no funciona (no rotan) aún cuando tengo mas de dos (2) banners de cada tipo (central, right y left).
Gracias, por favor me gustaría tu nuevo comentario.
Mangels
  #4 (permalink)  
Antiguo 03/02/2011, 12:04
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Disculpa areslepra pero en primer momento no pensé que querías decir con "cacheando la página" me imagino que te refieres a que se esté creando el caché de la página en el navegador, está bien, pero al refrescar la ventana los banners deberían aparecer en diferente posición cosa que no ocurre en el segundo topsite, sin embargo en el primero todo funciona perfecto aún cuando ambos utilizan el mismo PHP script. Por favor, ayuda!
Gracias
Mangels
  #5 (permalink)  
Antiguo 03/02/2011, 12:52
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con script PHP de rotación de banners

Código PHP:
Ver original
  1. <?php
  2. $mensajes = array(
  3.     'Mensaje aleatorio 1',
  4.     'Mensaje aleatorio 2',
  5.     'Mensaje aleatorio 3',
  6.     'Mensaje aleatorio 4',
  7.     'Mensaje aleatorio 5',
  8.     'Mensaje aleatorio 6'
  9. );
  10.  
  11. $todo=(count($mensajes)-1);
  12. $num=rand(0,$todo);
  13. echo $mensajes[$num];
  14. ?>
  #6 (permalink)  
Antiguo 03/02/2011, 13:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Gracias marcofbb por el script, no obstante prefiero seguir utilizando el mio que funciona perfectamente en uno de mis sitios y se adapta totalmente a lo que necesito (central, left and right banners), el problema es porqué no funciona en el otro sitio idéntico que tengo, con la misma programación, con los mismos scripts, etc. todo funciona perfecto menos la rotación de banners, ese es el punto que quisiera resolver.
  #7 (permalink)  
Antiguo 03/02/2011, 17:35
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Ayuda con script PHP de rotación de banners

Sugerencia, probá con el código de marcofbb para aclarar el panorama. Si generá correctamente los resultados aleatorios (reemplazando el que tenes ahora) significa que el problema está en el código, sino tiene que ser como te decia un problema del cacheo del navegador o de algún otro sistema que estes usando. Para esto vas a tener que agregar cabeceras (función header) para decirle al navegador que no tiene que cachear el contenido, para más info buscá en google.
  #8 (permalink)  
Antiguo 03/02/2011, 18:11
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Ayuda con script PHP de rotación de banners

Probá añadiendo las siguientes tags al HEAD del documento para evitar que el navegador cachee la página y de esta forma descartamos que pueda ser ese el problema.

<meta http-equiv="Expires" content="0">

<meta http-equiv="Last-Modified" content="0">

<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">

<meta http-equiv="Pragma" content="no-cache">
  #9 (permalink)  
Antiguo 03/02/2011, 18:39
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Hola de nuevo, areslepra, gracias por toda la información, hacer lo que me dices me parece de lo mas acertado, estaré probando el código para evitar el caché y en todo casó también estaré probando el código de marcofbb y te informaré los resultados. Gracias!
Mangels
  #10 (permalink)  
Antiguo 04/02/2011, 08:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Hola otra vez areslepra, te cuento que inserté el código para evitar que el navegador cachee la página y nada.... también probé con el código de rotación de marcofbb y nada.... el asunto no está ni en el caché ni en el código, lo cual yo ya sospechaba porque en mi primer topsite (con idéntica programación pero alojado en otro servidor) sí rotan los banners.

De todos modos, para que le eches una miradita, esta es la URL de mi nuevo top el cual todavía está en proceso de elaboración:

http://www.favoriteonlinesites.com/CreativeTopsites/

Como ves en el código fuente, el código de "no caché" está todavía insertado.

Cada vez que se refresque el navegador, los banners centrales, izquierda y derecha deberían cambiar de posición y no lo hacen, como puedes apreciar permanecen siempre fijos.

¿Alguna otra sugerencia? ¿Algo que tenga que ver con la configuración del php info?

Gracias y saludos,
Mangels
  #11 (permalink)  
Antiguo 04/02/2011, 10:59
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Ayuda con script PHP de rotación de banners

Si el código que te pasó marcofbb no muestra uno de los textos aleatoriamente implica que en alguna parte cachea el contenido, asi que tenes que buscar donde.
  #12 (permalink)  
Antiguo 04/02/2011, 14:23
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Hola, ¿alguien mas tiene una idea de porqué mi script de rotación de banners funciona perfecto en un website y en otro absolutamente idéntico en cuanto a programación simplemente no funciona?

Ambos sitios están alojados en servidores diferentes ¿será una configuración del servidor? ¿algo que necesito cambiar en el phpinfo? ¿algo respecto a los permisos de escritura de los archivos? He estado revisando todas estas cosas y no encuentro el motivo.

No funciona con ningún navegador que he probado (Chrome, IE, Firefox) y el script de no cacheo de páginas ya está debidamente insertado.

Por favor.... ayuda urgente para poder finalizar mi proyecto !!! Toda idea es bienvenida !

Mangels
  #13 (permalink)  
Antiguo 04/02/2011, 14:43
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Ayuda con script PHP de rotación de banners

a ver hagamos otra prueba abajo del banner pone:
<?php echo rand(); ?>
Si imprime un número aleatorio el problema esta indefectiblemente en el código de la generación aleatoria. En caso de no imprimir un número aleatorio es porque no esta realizando la ejecución del código PHP, así que tenés que comprobar el porque que sigo sospechando de un cacheo de algún tipo.
Otra duda, que contenido tienen left_banner y right_banner? HTML? link a imagenes?
  #14 (permalink)  
Antiguo 04/02/2011, 15:12
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Gracias areslepra, eres realmente muy amable en suministrarme nuevas opciones de verificación.

Ahora bien, no tengo idea de cómo hacer lo que me sugieres, yo aquí te voy a transcribir el código completo de mi página ads.php que es la que controla la inserción y rotación de banners, con eso ya tienes la respuesta a tu segunda pregunta respecto al contenido (si es HTML o link a imagenes).

Este es el script, el nombre de los banners y la URL del sitio al que linkean lo estoy sustituyendo por AAAA, BBBB, etc. por razones obvias:


<?php
//***this script is being used by display.php and template.php***

//banners in the center part of the site 468x60px
//following this format: ['banner_image.xxx']['page_url_to_point']
$center_banners['/images/ads/center/468x60.jpg']='/advertise.php';
$center_banners['/images/ads/center/AAAA.gif']='http://AAAA.com/';
$center_banners['/images/ads/center/BBBB.jpg']='http://BBBB.com/';
$center_banners['/images/ads/center/CCCC.jpg']='http://CCCC.com/';
$center_banners['/images/ads/center/DDDD.gif']='http://DDDD.com/';

//banners in the left part of the site 125x125px
//following this format: ['banner_image.xxx']['page_url_to_point']
$left_banners['/images/ads/left/125x125.jpg']='/advertise.php';
$left_banners['/images/ads/left/EEEE.gif']='http://www.EEEE.com/';
$left_banners['/images/ads/left/FFFF.gif']='http://www.FFFF.com/';
$left_banners['/images/ads/left/GGGG.gif']='http://www.GGGG.com;
$left_banners['/images/ads/left/HHHH.gif']='http://www.HHHH.com/;
$left_banners['/images/ads/left/IIII.gif']='http://IIII.com/;
$left_banners['/images/ads/left/JJJJ.gif']='http://JJJJ.com/';
$left_banners['/images/ads/left/KKKK.jpg']='http://www.KKKK.com/';

//banners in the right part of the site 120x60px
//following this format: ['banner_image.xxx']['page_url_to_point']
$right_banners['/images/ads/right/120x60.jpg']='/advertise.php';
$right_banners['/images/ads/right/LLLL.jpg']='http://www.LLLL.com/';
$right_banners['/images/ads/right/MMMM.gif']='http://www.MMMM.com/';

/************************************************** ***********/
/* DO NOT TOUCH ANYTHING UNDER THIS LINE /
/************************************************** ***********/

//randomly shuffle the array keeping the relation between keys and values
function shuffle_me($shuffle_me){
$randomized_keys = array_rand($shuffle_me, count($shuffle_me));
foreach($randomized_keys as $current_key) {
$shuffled_me[$current_key] = $shuffle_me[$current_key];
}
return $shuffled_me;
}
$center_banners=shuffle_me($center_banners);
$center_banners=array_slice($center_banners, 0, 20);

$left_banners=shuffle_me($left_banners);
$right_banners=shuffle_me($right_banners);
?>

------------------------------------------------------------------------

Por otra parte, en display.php y template.php (que como ves se nombra en el encabezamiento del script anterior: //***this script is being used by display.php and template.php***, la parte que controla la inserción y rotación de banners es la siguiente:

En display.php:

//here it comes the banners thing. it takes the $ads array and show all the banners
//when no more banners are available, it shows the default banner ($def)
if ($CONFIG['adbreaks'][$page_rank]) {
$ads=each($center_banners);
if ($is_top) {
$TMPL['content'] .= do_template("tablecloser_top");
$TMPL['content'] .= '<p class="adbreak">';
if(!$ads){
reset($center_banners);
$ads=each($center_banners);
$TMPL['content'] .= '<a href="'.$ads['value'].'" target="_blank"><img src="'.$ads['key'].'" /></a>';
}else{
$TMPL['content'] .= '<a href="'.$ads['value'].'" target="_blank"><img src="'.$ads['key'].'" /></a>';
}
$TMPL['content'] .= '</p>';
$TMPL['content'] .= do_template("tableheader_top");
} else {
$TMPL['content'] .= do_template("tablecloser");
$TMPL['content'] .= '<p class="adbreak">';
if(!$ads){
reset($center_banners);
$ads=each($center_banners);
$TMPL['content'] .= '<a href="'.$ads['value'].'" target="_blank"><img src="'.$ads['key'].'" /></a>';
}else{
$TMPL['content'] .= '<a href="'.$ads['value'].'" target="_blank"><img src="'.$ads['key'].'" /></a>';
}
$TMPL['content'] .= '</p>';
$do_tableheader = 1;
}
}

$is_top = 0;
$TMPL['rank']++;
$page_rank++;
}

if ($topdone) {
$TMPL['content'] .= do_template("tablecloser");
}
elseif (!$do_tableheader) {
$TMPL['content'] .= do_template("tablecloser_top");
}
?>



En template.php:

// Generate the right and left banners list
$TMPL['leftbanners']='';
foreach($left_banners as $key => $value){
$TMPL['leftbanners'].='<p align="center"><a href="'.$value.'"><img src="'.$key.'" width="150" height="150" border="0"></a></p>';
}

$TMPL['rightbanners']='';
foreach($right_banners as $key => $value){
$TMPL['rightbanners'].='<p align="center"><a href="'.$value.'"><img src="'.$key.'" width="150" height="150" border="0"></a></p>';
}

-------------------------------------


OK, entonces ¿cómo hago lo que me sugieres?

Mi gran duda es ¿porqué todo este código está funcionando a la perfección uno de los sitios y en el otro que es un clon del primero no funciona?

Saludos,
María
  #15 (permalink)  
Antiguo 04/02/2011, 15:30
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Ayuda con script PHP de rotación de banners

$left_banners=shuffle_me($left_banners);
$right_banners=shuffle_me($right_banners);

Después de estás lineas podés hacer un var_dump para ver si va todo correcto, quedando:
var_dump($left_banners);
var_dump($right_banners);

y también para probar que cambie ponemos var_dump(rand());

Con eso tendrías que ver si las variables left_banners y right_banners tienen lo correcto y además si te muestra los números aleatorios.

El tema de que se muestre bien en un servidor y no en otro es por tema de configuración, yo sospecho de algún optimizador PHP o algún sistema de cache para que funcione más rápido.
  #16 (permalink)  
Antiguo 04/02/2011, 15:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Inserté el código que me diste quedando las últimas líneas del script de la siguiente manera:

$left_banners=shuffle_me($left_banners);
$right_banners=shuffle_me($right_banners);
var_dump($left_banners);
var_dump($right_banners);
var_dump(rand());
?>

Cuando voy al sitio me arroja arriba de todo el mensaje que puedes ver aquí:

http://www.favoriteonlinesites.com/CreativeTopsites/

¿Es este el resultado esperado? ¿significa esto que el código está funcionando?
Los banners siguen estáticos sin rotar.

María
  #17 (permalink)  
Antiguo 04/02/2011, 16:01
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Ayuda con script PHP de rotación de banners

Algo así, fijate una cosa, si vez el código HTML vas a ver algo así:

array(8) {
["/images/ads/left/125x125.jpg"]=>
string(14) "/advertise.php"
["/images/ads/left/ladylabelle1.gif"]=>
string(27) "http://www.ladylabelle.com/"
["/images/ads/left/chloeschicboutique.gif"]=>
string(34) "http://www.chloeschicboutique.com/"
["/images/ads/left/swanpicturehangers125x125.gif"]=>
string(51) "http://www.swanpicturehangers.com/bc_fretwork.shtml"
["/images/ads/left/swanpicturehangers125x125_1.gif"]=>
string(54) "http://www.swanpicturehangers.com/picturehangers.shtml"
["/images/ads/left/Frocks_of_Ages.gif"]=>
string(54) "http://frocksofages.com/Princess_Roselyn_pink_gown.htm"
["/images/ads/left/victoriantreasuresbymary.gif"]=>
string(36) "http://victoriantreasuresbymary.com/"
["/images/ads/left/etsy.jpg"]=>
string(35) "http://www.etsy.com/shop/rosekraft/"
}
array(3) {
["/images/ads/right/120x60.jpg"]=>
string(14) "/advertise.php"
["/images/ads/right/commercial-images.jpg"]=>
string(33) "http://www.commercial-images.com/"
["/images/ads/right/antiquesandteacups.gif"]=>
string(34) "http://www.antiquesandteacups.com/"
}
int(94333320)


Si recargás la página notarás que el número cambia pero el resto no, lo cual nos muestra que el problema está en que left_banners y right_banners no cambian, siempre dan el mismo resultado, lo cual nos lleva a una conclusión, el código tiene un problema ahí. Así que reducimos nuestro problema a algo simple, una función que esta mal, así que a arreglarla.
Ahora le echo un vistazo para ver donde está el error, pero sopecho que te anda en un sitio y en el otro no por la cantidad de links, como no use esas funciones hasta ahora voy a mirar la documentación para ver como lo lo solucionamos, mientras si querés hace lo mismo y/o proba esa función (en otra página de prueba) con distintos parametros para ver los resultados (test de unidad).
  #18 (permalink)  
Antiguo 04/02/2011, 16:07
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Ayuda con script PHP de rotación de banners

$shuffled_me[$current_key] = $shuffle_me[$current_key];

Esta línea me parece que tiene el error.
A ver si ponemos así:
shuffle($left_banners);
shuffle($right_banners);
en vez de:
$left_banners=shuffle_me($left_banners);
$right_banners=shuffle_me($right_banners);
  #19 (permalink)  
Antiguo 04/02/2011, 17:02
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Hola, no amigo, acabo de hacer el cambio del script en el sentido que me indicas y simplemente no reconoce los banners de los lados izquierdo y derecho (aparecen las cruces rojas).

Ahora bien, estaba pensando en algo elemental, como el script funciona perfecto en un servidor y en otro no ¿no será la versión PHP que maneja cada uno de los servidores? Voy a verificar en este aspecto a ver si el problema es algo tan simple como eso.

Saludos.
  #20 (permalink)  
Antiguo 07/02/2011, 08:34
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Hola, yo tengo dos sitios con idéntica programación, uno alojado en servidor con PHP4 y otro alojado en servidor con PHP5.

En el primero el script de rotación de banners funciona perfecto, en el segundo no funciona (no arroja reporte de error, sino que simplemente no funciona, los banners permanecen estáticos en lugar de rotar).

Luego de darle mil vueltas al asunto he llegado a la conclusión de que es cuestión de la versión PHP que maneja cada uno de los servidores.

Ayuda por favor: Cómo puedo hacer para que el siguiente script funcione en PHP5?:

//randomly shuffle the array keeping the relation between keys and values
function shuffle_me($shuffle_me){
$randomized_keys = array_rand($shuffle_me, count($shuffle_me));
foreach($randomized_keys as $current_key) {
$shuffled_me[$current_key] = $shuffle_me[$current_key];
}
return $shuffled_me;
}
$center_banners=shuffle_me($center_banners);
$center_banners=array_slice($center_banners, 0, 20);

$left_banners=shuffle_me($left_banners);
$right_banners=shuffle_me($right_banners);

?>

Cualquier sugerencia es bienvenida.
Saludos.

Hola, después de mil vueltas a este asunto he llegado a la conclusión de que el problema de rotación de banners es la versión PHP que maneja cada uno de los servidores, el servidor en que funciona el script maneja PHP4, mientras el servidor en el que no funciona maneja PHP5.

El punto ahora se centraría en cómo hacer que el script de rotación de banners funcione con PHP5, este es el script:

//randomly shuffle the array keeping the relation between keys and values
function shuffle_me($shuffle_me){
$randomized_keys = array_rand($shuffle_me, count($shuffle_me));
foreach($randomized_keys as $current_key) {
$shuffled_me[$current_key] = $shuffle_me[$current_key];
}
return $shuffled_me;
}
$center_banners=shuffle_me($center_banners);
$center_banners=array_slice($center_banners, 0, 20);

$left_banners=shuffle_me($left_banners);
$right_banners=shuffle_me($right_banners);

?>

Por favor, cualquier ayuda es bienvenida.
Saludos.

Última edición por GatorV; 07/02/2011 a las 09:20
  #21 (permalink)  
Antiguo 07/02/2011, 08:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Código que funciona con PHP4 y no con PHP5

Para mostrar un código aleatorio, solo es cuestión de usar shuffle
Código PHP:
Ver original
  1. <?php
  2. $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
  3. shuffle($input);
  4. print_r($input);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #22 (permalink)  
Antiguo 07/02/2011, 09:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Código que funciona con PHP4 y no con PHP5

Gracias abimaelrc por tu contacto.

Sin embargo, no tengo conocimientos suficientes de PHP para interpretar tu respuesta ¿Cómo integro el código que me diste al código que ya tengo?

Yo aquí voy a copiar el código completo incluyendo la parte donde se inserta la información de los banners, para que tengas una idea de cómo funciona todo el script (el nombre de los banners y las URL a las cuales enlazan fueron reemplazados por 1, 2, 3, 4, etc. por razones obvias):

-------------------------------------------------------------------
<?php
//***this script is being used by display.php and template.php***

//banners in the center part of the site 468x60px
//following this format: ['banner_image.xxx']['page_url_to_point']
$center_banners['/images/ads/center/1.jpg']='/1.php';
$center_banners['/images/ads/center/2.gif']='http://2.com/';
$center_banners['/images/ads/center/3.jpg']='http://3.com/';
$center_banners['/images/ads/center/4.jpg']='http://4.com/';
$center_banners['/images/ads/center/5.gif']='http://5.com/';

//banners in the left part of the site 125x125px
//following this format: ['banner_image.xxx']['page_url_to_point']
$left_banners['/images/ads/left/1.jpg']='/1.php';
$left_banners['/images/ads/left/2.gif']='http://www.2.com/';
$left_banners['/images/ads/left/3.gif']='http://www.3.com/';
$left_banners['/images/ads/left/4.gif']='http://www.4.com/';
$left_banners['/images/ads/left/5.gif']='http://www.5.com/';
$left_banners['/images/ads/left/6.gif']='http://6.com/';
$left_banners['/images/ads/left/7.gif']='http://7.com/';
$left_banners['/images/ads/left/8.jpg']='http://www.8.com/';

//banners in the right part of the site 120x60px
//following this format: ['banner_image.xxx']['page_url_to_point']
$right_banners['/images/ads/right/1.jpg']='/1.php';
$right_banners['/images/ads/right/2.jpg']='http://www.2.com/';
$right_banners['/images/ads/right/3.gif']='http://www.3.com/';

/************************************************** ***********/
/* DO NOT TOUCH ANYTHING UNDER THIS LINE /
/************************************************** ***********/

//randomly shuffle the array keeping the relation between keys and values
function shuffle_me($shuffle_me){
$randomized_keys = array_rand($shuffle_me, count($shuffle_me));
foreach($randomized_keys as $current_key) {
$shuffled_me[$current_key] = $shuffle_me[$current_key];
}
return $shuffled_me;
}
$center_banners=shuffle_me($center_banners);
$center_banners=array_slice($center_banners, 0, 20);

$left_banners=shuffle_me($left_banners);
$right_banners=shuffle_me($right_banners);

?>

--------------------------------------------------------------

Como se ve, mi código también maneja shuffle, pero cómo debería quedar exactamente para que funcione en PHP5?

Gracias por cualquier ayuda
  #23 (permalink)  
Antiguo 07/02/2011, 09:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Código que funciona con PHP4 y no con PHP5

Usa shuffle en las variables $center_banners, $left_banners y $right_banners. Donde dice DO NOT TOUCH ANYTHING UNDER THIS LINE
Quita todo esto
Código PHP:
Ver original
  1. //randomly shuffle the array keeping the relation between keys and values
  2. function shuffle_me($shuffle_me){
  3. $randomized_keys = array_rand($shuffle_me, count($shuffle_me));
  4. foreach($randomized_keys as $current_key) {
  5. $shuffled_me[$current_key] = $shuffle_me[$current_key];
  6. }
  7. return $shuffled_me;
  8. }
  9. $center_banners=shuffle_me($center_banners);
  10. $center_banners=array_slice($center_banners, 0, 20);
  11.  
  12. $left_banners=shuffle_me($left_banners);
  13. $right_banners=shuffle_me($right_banners);
Y solo coloca los shuffle.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #24 (permalink)  
Antiguo 07/02/2011, 09:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Ayuda con script PHP de rotación de banners

Temas unidos, por favor NO dupliques temas.
  #25 (permalink)  
Antiguo 07/02/2011, 09:21
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Código que funciona con PHP4 y no con PHP5

De verdad que no se cómo hacer lo que me pides, OK, elimino todo el código que tengo ahora, pero ¿cómo inserto los shuffles como dices? ¿en la parte donde tengo el nombre del banner y la URL?

Sería esto que copio aquí correcto?:

//banners in the center part of the site 468x60px
$input = array (center_banners['/images/ads/center/1.jpg']='/1.php');
$input = array (center_banners['/images/ads/center/2.jpg']='/2.php');
$input = array (center_banners['/images/ads/center/3.jpg']='/3.php');
$input = array (center_banners['/images/ads/center/4.jpg']='/4.php');
$input = array (center_banners['/images/ads/center/5.jpg']='/5.php');
shuffle($input);
print_r($input);
  #26 (permalink)  
Antiguo 07/02/2011, 12:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Ayuda con script PHP de rotación de banners

Cita:
Iniciado por GatorV Ver Mensaje
Temas unidos, por favor NO dupliques temas.
Disculpa GatorV, no fue mi intención duplicar temas sino que el enfoque del asunto cambió totalmente y pensé que debía ser materia de un nuevo tema. Disculpa.

Alguien me puede por favor decir cómo debería quedar exactamente el código para que funcionen estas variables:

Código PHP:
$center_banners['/images/ads/center/1.jpg']='/1.php';
$center_banners['/images/ads/center/2.gif']='http://2.com/';
$center_banners['/images/ads/center/3.jpg']='http://3.com/';
$center_banners['/images/ads/center/4.jpg']='http://4.com/';
$center_banners['/images/ads/center/5.gif']='http://5.com/'
con la sugerencia de abimaelrc:

Código PHP:
<?php
$input 
= array("Neo""Morpheus""Trinity""Cypher""Tank");
shuffle($input);
print_r($input);
Todas las pruebas que hago me han dado error, evidentemente mis conocimientos de php son extremadamente básicos, necesito alquien que me de el código completo tal cual debería quedar para que roten los banners.

Gracias, por favor una ayuda urgente!
  #27 (permalink)  
Antiguo 07/02/2011, 17:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Ayuda con script PHP de rotación de banners

Cita:
Iniciado por mangels Ver Mensaje
...necesito alquien que me de el código completo tal cual debería quedar para que roten los banners.
Pasa por el área de Ofertas de empleo para que alguien te ayude con una buena remuneración.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #28 (permalink)  
Antiguo 07/02/2011, 17:59
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Ayuda con script PHP de rotación de banners

Cita:
Iniciado por abimaelrc Ver Mensaje
Pasa por el área de Ofertas de empleo para que alguien te ayude con una buena remuneración.


Etiquetas: banner
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 13:02.