Google Búsqueda personalizada

Regístrate gratis para participar de los foros, o si ya estás registrado haz login.

Banner Rotativos en PHP

comentario del autor Vie Jun 13, 2008 6:28 pm
   
Puedo Rotar en un renglón o fila, pero no en varios: Tengo un sitio web en el que quiero hacer rotar mis banners publicitarios. Ya logre rotarlos con php, pero solo en una fila. La finalidad de que roten es para darle la misma prioridad a mis usuarios. Lo que quisiera es el codigo para poder rotar mis banners sin que se repitan en varias filas. Es decir, si aparece un banner en la fila 1 que ese banner no se repita en la fila 3. o dicho de otra forma que ese banner no se duplique cuando ya aparecio en la fila 1.

Ojala que me haya dado a entender, saludos amigos.

fernandoarturo

Reputación

asistió a la solución Dom Jun 15, 2008 4:27 pm
   
Hola,
Faltan muchos datos para poder ayudarte, de donde sacas la información, como la desplegas, a que le llamas renglones o filas (supongo a las celdas de una tabla?), lo ideal sería que peges el código.

Básicamente lo que debes hacer es mantener la asignación de cada fila en memoria y/o trabajando prioridades en SQL, por supuesto todo dependerá si queres una impresion de banner lineal, regresiva, relativo a keywords, etc.

un ejemplo básico sería:

Código:
<?php

$sitios = array(
  'pepito.gif',
  'juancito.gif',
  'martincito.gif'
);

foreach ($sitios as $img) {
  print "<img src='$img'>";
}

?>


Por supuesto esto te da una impresion secuencial por página si tenes más auspiciantes que banner en tu página debes guardar la información de impresion en una memoria auxiliar llamese archivo de texto o bd.

Todo dependerá de lo que queres y de lo que tengas.

Saludos,
Martín

yoreparodr

Reputación

comentario del autor Lun Jun 16, 2008 11:52 pm
   
Que tal Martin!!

Fjate que apenas estoy explorando el lenguaje PHP. Este es el código que estoy utilizando:

<?
$numbanners = 3; //este es el numero de banners que se rotarán pero solo puedo rotarlos en una celda de la tabla
$random = rand(1,$numbanners);

$img = array();
$url = array();

$img[1] = "3_imagenes/ahorrocel 3d.JPG"; //aqui se define el nombre de la carpeta y el nombre de la imagen 1
$url[1] = "http://www.ahorrocel.com.mx";

$img[2] = "animaciones/vendobara150x85pixeles.jpg";
$url[2] = "http://www.vendobara.com";

$img[3] = "publicidad/canirac.JPG";
$url[3] = "http://www.caniracnacional.com.mx/";

echo "<a href='$url[$random]' target='_blank'><img src='$img[$random]' alt='$txt[random]' border='0'></a>";
?>

Parece ser que me hace falta un "array rand", pero no tengo ni la menor idea.
NO se si haga falta mas informacion.
la pagina web de la que quiero hacer rotar los banners es www.genteprofesional.com

De ante mano te doy las gracias Martin.
@Fer Neutral

fernandoarturo

Reputación

asistió a la solución Mie Jun 18, 2008 8:05 pm
   
no entendi tu pregunta
a que banner te referis
fijate si es algo como esta pagina que estoy haciendo
http://parquedelplata.webcindario.com/index.html
no comenten que no la he terminado

amigo_uy

Reputación

asistió a la solución Mar Jun 24, 2008 11:56 pm
   
Hola,

lo que no se es si queres que roten permanentemente o solo cuando refrescas/abris la página en este caso podes usar:

<?php

$img = array();
$url = array();

/* aqui se define el nombre de la carpeta y el nombre de la imagen 1 */
/* NO le pongas indices a los array si queres agregar otro banner haces lo mismo
agregando solamente:
$img[] = "xxxx.JPG";
$url[] = "http://www.xxxxxx.com.mx";
*/
$img[] = "3_imagenes/ahorrocel 3d.JPG";
$url[] = "http://www.ahorrocel.com.mx";

$img[] = "animaciones/vendobara150x85pixeles.jpg";
$url[] = "http://www.vendobara.com";

$img[] = "publicidad/canirac.JPG";
$url[] = "http://www.caniracnacional.com.mx/";

if ($fh = fopen('./posicion.txt','r+')) {
fseek($fh, 0, 0);
$idx = (int) fgets($fh);
ftruncate($fh,0);
fseek($fh, 0, 0);
fputs($fh, ((count($img) < ++$idx) ? 0 : $idx));
$idx--;
fclose($fh);
}

/* Falta el array $txt con los textos*/

print "<table><tr><td><a href='$url[$idx]' target='_blank'><img src='$img[$idx]' alt='$txt[idx]' border='0'></a></td></tr></table>";
?>

Esta funcion es lineal uno por uno va rotando.

Saludos,
Martín.

PD: Si tenes mucho flujo de usuarios y o muchos banner podes usar una db para evitar leer y escribir en el disco cada vez que alguien accesa.

yoreparodr

Reputación

comentario del autor Jue Jun 26, 2008 1:11 pm
   
Hola yoreparodr y Amigo_uy

Primero que nada una disculpa por no contestar, fijense que cuando pongo mi cursos en la solapa de Mi cuenta, esta me indica "usted no tiene mensajes nuevo" y reuslta que si tengo bueno pues por eso no los he valorado.

Bueno volviendo al tema, efectivmente yoreparodr, es al refrescar la pagina es como esta: www.vendobara.com si entras checate los banners del extremo derecho estos no se mueven como los que me indico amigo_uy, son completamente estaticos pero si cambian de posicion cada vez que refrescas es sitio.

Hasta ahora no he podido rotarlos en difrerentes posiciones, voy a probar con tu informacion yoreparodr y en cuando a la informacion de amigo_uy no es mala opcion tambien esta padre de esa forma.

Gracias a ambos, orita lo ke estoy descubriendo es rotarlos mediante myadminsql cuando me salga les aviso

Saludos

fernandoarturo

Reputación

comentario del autor Jue Jun 26, 2008 1:39 pm
   
Hola yoreparodr

Ya hice las pruebas:
1. copie tu script y lo salve con el nombre de ads3.php
2. hice la insercion del scrit en el codigo de mi index: <? include("ads3.php")?>
3. luego hice el preview y me marco el siguiente error:

Warning: fopen(./posicion.txt): failed to open stream: No such file or directory in c:\appserv\www\sitio\genteprofesional\ads3.php on line 21

No me queda clara la linea de tu script donde redactas "posicion.txt
y el de /* falta el array $txt con los textos*/

Saludos amigos
sigo investigando

fernandoarturo

Reputación

asistió a la solución Jue Jun 26, 2008 8:52 pm
   
fijate a ver si es asi
despues de <body>
<script type="text/javascript">

var banner= new Array()

banner[0]="http://aqui-la-dirección-de-la-imagen"
banner[1]="http://aqui-la-dirección-de-la-imagen"
banner[2]="http://aqui-la-dirección-de-la-imagen"
banner[3]="http://aqui-la-dirección-de-la-imagen"
banner[4]="http://aqui-la-dirección-de-la-imagen"
var random=Math.round(4*Math.random());

document.write("<style>");
document.write("#header {");
document.write(' background:url("' + banner[random] + '") no-repeat left TOP;');
document.write(" }");
document.write("</style>");

</script>


- En banner [0], [1], [2], [3], [4] tendrás que agregar la dirección de tu imagen


Fuente

amigo_uy

Reputación

asistió a la solución Mie Jul 02, 2008 9:02 pm
   
<!-- IMAGEN ALEATORIA -->
<script language="javascript" type="text/javascript">
function randRange(lowVal,highVal) {
return Math.floor(Math.random()*(highVal-lowVal+1))+lowVal;
}
</script>

<script language="javascript" type="text/javascript">
var randHdr = randRange(1,3);

if (randHdr == 1) {
document.write('<img src="URL IMAGEN 1">')
} else if (randHdr == 2) {
document.write('<img src="URL IMAGEN 2">')
} else if (randHdr == 3) {
document.write('<img src="URL IMAGEN 3">')
}
</script>
<!-- FIN DE IMAGEN ALEATORIA -->

amigo_uy

Reputación

asistió a la solución Jue Jul 03, 2008 7:24 pm
   
fernandoarturo escribió:Hola yoreparodr

Ya hice las pruebas:
1. copie tu script y lo salve con el nombre de ads3.php
2. hice la insercion del scrit en el codigo de mi index: <? include("ads3.php")?>
3. luego hice el preview y me marco el siguiente error:

Warning: fopen(./posicion.txt): failed to open stream: No such file or directory in c:\appserv\www\sitio\genteprofesional\ads3.php on line 21

No me queda clara la linea de tu script donde redactas "posicion.txt
y el de /* falta el array $txt con los textos*/

Saludos amigos
sigo investigando


Hola Fernando, (LEE TODO)

El error "No such file or directory" es porque no existe el fichero posicion.txt, crea uno en el directorio c:\appserv\www\sitio\genteprofesional debe estar en blanco completamente SIN salto de linea, hace así, primero situate en esa carpeta despues haces click botón derecho -> nuevo -> archivo de texto y de nombre le pones posicion.txt

con eso desaparece el error y empieza a memorizar las posicion de visualización de los banner, por otro lado todo lo que este entre /* texto cualquiera */ son comentarios en este caso te comente que falta el array $txt, ya estaba especificado en el script que pasaste pero no esta declarado.

Proba con este:


Código:
<?php

$img = array();
$url = array();
$txt = array();

/* NO le pongas indices a los array si queres agregar otro banner haces lo mismo
   agregando solamente:
   $img[] = "xxxx.JPG";
   $url[] = "http://www.xxxxxx.com.mx";
*/

$img[] = "3_imagenes/ahorrocel 3d.JPG";
$url[] = "http://www.ahorrocel.com.mx";
$txt[] = "Ahorra en celular";

$img[] = "animaciones/vendobara150x85pixeles.jpg";
$url[] = "http://www.vendobara.com";
$txt[] = "Que buena bara que vendo!!!";


$img[] = "publicidad/canirac.JPG";
$url[] = "http://www.caniracnacional.com.mx/";
$txt[] = "Nacional Carnirac que se yo!!";

/* Esto lo único que hace es crear el fichero automaticamente
   si prefieres puedes cortarlo */

if (!file_exists('./posicion.txt') ||
   !is_file('./posicion.txt')) {
   if ($fh = fopen('./posicion.txt', 'w')){
      fputs($fh, 0);
      fclose($fh);
   }
}

if ($fh = fopen('./posicion.txt','r+')) {
   fseek($fh, 0, 0);
   $idx = (int) fgets($fh);
   ftruncate($fh,0);
   fseek($fh, 0, 0);
   fputs($fh, ((count($img) < ++$idx) ? 0 : $idx));
   $idx--;
   fclose($fh);
}

   print '<table>
            <tr>
              <td>
      <a href="'.htmlentities($url[$idx]).'" target="_blank">
                     <img src="'.urlencode($img[$idx]).'" alt="'.htmlentities($txt[$idx]).'" border="0">
      </a>
                          </td>
         </tr>
         </table>';

?>

yoreparodr

Reputación

comentario Lun Jul 14, 2008 9:09 pm
   
hola nesesito un codigo que rote los banner secuencial mente en un periodo de tiempo o una cantidad de veces

me explico que muestre el banner luego de 5 segundos se quita y aparese otro, y que cada banner tenga un tiempo de duracion o una cierta cantidad de veses como sea mas facil

ejemplo
pongo un banner le pongo el tiempo que ba adurar en rotacion o las cantidad de veses que se muestra, de esa forma pongo de alrededor de 5 banner con una duracion o imprecion distinta, cuando a uno se le termine el tiempo o la cantidad de veces mostrado no se muestre mas.

les ofresco 10$ al que me logre aser en codigo

es que no tengo tiempo y mi conosimiento de php en un poco limitado

gracias y un saludo

malg2

Reputación

comentario del autor Vie Jul 18, 2008 5:05 pm
   
Hola
Martin,
Ya copie tu codigo en el que me dices...Proba con este....
Ya no me marca ningun error pero, pues solamente sale un cuadrito con una pequeña cruz, es decir asi como si la ruta de la imagen no fuera la correcta y pues solo sale ese cuadrito.

Lo que si sale son los textos, por ejemplo " Ahorro en celulares"
sigo investigando, disculpa la tardansa en evaluar lo que pasa eske sali fuera de la ciudad unos dias
Saludos Fer
yoreparodr escribió:
fernandoarturo escribió:Hola yoreparodr

Ya hice las pruebas:
1. copie tu script y lo salve con el nombre de ads3.php
2. hice la insercion del scrit en el codigo de mi index: <? include("ads3.php")?>
3. luego hice el preview y me marco el siguiente error:

Warning: fopen(./posicion.txt): failed to open stream: No such file or directory in c:\appserv\www\sitio\genteprofesional\ads3.php on line 21

No me queda clara la linea de tu script donde redactas "posicion.txt
y el de /* falta el array $txt con los textos*/

Saludos amigos
sigo investigando


Hola Fernando, (LEE TODO)

El error "No such file or directory" es porque no existe el fichero posicion.txt, crea uno en el directorio c:\appserv\www\sitio\genteprofesional debe estar en blanco completamente SIN salto de linea, hace así, primero situate en esa carpeta despues haces click botón derecho -> nuevo -> archivo de texto y de nombre le pones posicion.txt

con eso desaparece el error y empieza a memorizar las posicion de visualización de los banner, por otro lado todo lo que este entre /* texto cualquiera */ son comentarios en este caso te comente que falta el array $txt, ya estaba especificado en el script que pasaste pero no esta declarado.

Proba con este:


Código:
<?php

$img = array();
$url = array();
$txt = array();

/* NO le pongas indices a los array si queres agregar otro banner haces lo mismo
   agregando solamente:
   $img[] = "xxxx.JPG";
   $url[] = "http://www.xxxxxx.com.mx";
*/

$img[] = "3_imagenes/ahorrocel 3d.JPG";
$url[] = "http://www.ahorrocel.com.mx";
$txt[] = "Ahorra en celular";

$img[] = "animaciones/vendobara150x85pixeles.jpg";
$url[] = "http://www.vendobara.com";
$txt[] = "Que buena bara que vendo!!!";


$img[] = "publicidad/canirac.JPG";
$url[] = "http://www.caniracnacional.com.mx/";
$txt[] = "Nacional Carnirac que se yo!!";

/* Esto lo único que hace es crear el fichero automaticamente
   si prefieres puedes cortarlo */

if (!file_exists('./posicion.txt') ||
   !is_file('./posicion.txt')) {
   if ($fh = fopen('./posicion.txt', 'w')){
      fputs($fh, 0);
      fclose($fh);
   }
}

if ($fh = fopen('./posicion.txt','r+')) {
   fseek($fh, 0, 0);
   $idx = (int) fgets($fh);
   ftruncate($fh,0);
   fseek($fh, 0, 0);
   fputs($fh, ((count($img) < ++$idx) ? 0 : $idx));
   $idx--;
   fclose($fh);
}

   print '<table>
            <tr>
              <td>
      <a href="'.htmlentities($url[$idx]).'" target="_blank">
                     <img src="'.urlencode($img[$idx]).'" alt="'.htmlentities($txt[$idx]).'" border="0">
      </a>
                          </td>
         </tr>
         </table>';

?>

fernandoarturo

Reputación

asistió a la solución Lun Nov 24, 2008 6:15 pm
   
Amigo le pido un millon de disculpás, no entre desde aquel entonces, me sorprende que los compañeros no le hallan dado una mano en eso, el problema seguramente es por la ubicación de las imagenes, use la dirección absoluta para estar mas seguro cambiando por ejemplo:


Código:
$img[] = "animaciones/vendobara150x85pixeles.jpg";

por

$img[] = "http://www.genteprofesional.com/xxxxx/vendobara150x85pixeles.jpg";



xxxxx: son las carpetas hasta llegar a la imagen, desde la carpeta donde arranca el servidor, en windows usualmente utilizan c:/inetpub/ como carpeta de arranque, tenicamente llamada carpeta raíz en el entorno web, puede encontrarla junto con muchas otras variables utilizando este archivo:

Código:
<?php
phpinfo();
?>


Al final busque DOCUMENT_ROOT

Lo que si le agrego es que tiene un tonto error, remplace el semi-homónimo con el código de abajo, el unico agregado el la function "flock".

Código:
if ($fh = fopen('./posicion.txt','r+')) {
   flock($fh, 2);
   fseek($fh, 0, 0);
   $idx = (int) fgets($fh);
   ftruncate($fh,0);
   fseek($fh, 0, 0);
   fputs($fh, ((count($img) < ++$idx) ? 0 : $idx));
   $idx--;
   fclose($fh);
}


Mis sinceras disculpas,
Martin

yoreparodr

Reputación

solución Lun Nov 24, 2008 6:27 pm
   
mm viendolo de nuevo note esto que debe ser el error:

Código:
print '<table>
            <tr>
              <td>
      <a href="'.htmlentities($url[$idx]).'" target="_blank">
                     <img src="'.encode($img[$idx]).'" alt="'.htmlentities($txt[$idx]).'" border="0">
      </a>
                          </td>
         </tr>
         </table>';


Cambielo por esto

Código:
print '<table>
            <tr>
              <td>
      <a href="'.htmlentities($url[$idx]).'" target="_blank">
                     <img src="'.htmlentities($img[$idx]).'" alt="'.htmlentities($txt[$idx]).'" border="0">
      </a>
                          </td>
         </tr>
         </table>';


Saludos,
Martin

yoreparodr

Reputación



Hacer una pregunta

Boletín de Noticias

Reciba noticias de tecnología, tips de reparación y ofertas exclusivas.



Reglamento / P+F

Foros

Miembros / Expertos