Por: Nicolas Seijas | Categoría: PHP
Existen varias formas de mostrar imágenes y/o texto random con php, en este caso les enseñaremos una forma en que controlaremos cada aspecto que deseemos incluir en nuestro código.
<?php $numero = 3 ; $random = rand(1,$numero); $img = array(); $url = array(); $txt = array(); $title = array(); $titulo = array(); $texto = array(); $img[1] = " http://www.tusitio.com/images/1.jpg "; $url[1] = " http://www.tusitio.com/"; $txt[1] = " Imagen 1"; $title[1] = " Imagen 1"; $titulo[1] = "Prueba 1"; $texto [1] = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."; $img[2] = " http://www.tusitio.com/images/2.jpg "; $url[2] = " http://www.tusitio.com "; $txt[2] = " Imagen 2 "; $title[2] = " Imagen 2 "; $titulo[2] = "Prueba 2"; $texto [2] = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."; $img[3] = " http://www.tusitio.com/images/3.jpg "; $url[3] = " http://www.tusitio.com "; $txt[3] = " Imagen 3 "; $title[3] = " Imagen 3 "; $titulo[3] = "Prueba 3"; $texto [3] = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. "; echo "<div class=\"random\">"; echo "<a href='$url[$random]' target=' _blank '><img src='$img[$random]' alt='$txt[$random]' title='$title[$random]' border=' 0 '></a>"; echo "<h2><a href='$url[$random]'>$titulo[$random]</a></h2>"; echo "<p> $texto[$random] </p>"; echo "</div>"; ?>
1. En $numero = 3; deberemos cambiar el 3 por la cantidad de imagenes y/o texto que iremos a utilizar.
2. $random = rand(1,$numero); aca utilizamos la función rand(), como vemos el 1 esta indicando cuantas imagenes se van a mostrar de la cadena $numero.
Tal vez te interese...
Yo de PHP sinceramente se poco y nada pero lo tendré en cuenta!
Una pregunta, ¿para que se muestre debo enlazar el archivo PHP al HTML como una imagen?
Hola Alberto, al código lo puedes poner directamente en el HTML.
Saludos!
Hola amigos , la verdad que buen post XD me sirvio de mucho y que bien que alla gente como tu.
saludos!!!!!!!!!!
Soy novato en php pero me ha sido de mucha utilidad y me parece excelente este script pero tengo una consulta,
si quisiera agregarle que las imagenes roten cada cierto tiempo, como puedo hacerlo, o sea si tengo 3 imagenes como en el ejemplo, como puedo hacer para que se muestren durante 8 horas cada una?
Desde ya muchas gracias
Saludos cordiales
Hola Horacio, prueba este codigo
< ?php
$zona_horaria = + 0;
$imagen_random = date("H", time() + (3600 * $zona_horaria)) ;
;?>
< ?php
if ($imagen_random >= 16 && $imagen_random < 0) { ;?>
"imagen aca"
< ?php } else if ($imagen_random >= 0 && $imagen_random < 8) { ;?>
"imagen aca"
< ?php } else if($imagen_random >= 8 && $imagen_random < 16) { ;?>
"imagen aca"
< ?php } ;?>
Saludos
Hola , muchas gracias por tu pronta respuesta, pero como te dije anteriormente soy un novato en php, y con este ultimo codigo no logro ver las imagenes donde dice “imagen aca” lo he sustituido por “http://www.misitio.com/imagen1.jpg y asi sucesivamente.
Igualmente yo lo que realmente me interesaba era el codigo que enseñas arriba, porque tiene la ventaja de que tiene titulo, enlace saliente y muchas cosas mas que sirven para el seo de una web, y pensaba que se le podia agregar alguna variable a ese mismo codigo para que funcione mostrando una imagen cada tantas horas.
Antes de consultarte habia estado investigando y probando algunas cosas con este buen script que presentas y una de ellas era esta que muestro a continuación (este tampoco me funciono)
<?php
$hora =date('h:i');
$timezone = -3; //GMT$quediaes=gmdate("D", time() + 3600*($timezone+date('I'))); $quehoraes=gmdate("G", time() + 3600*($timezone+date('I')));
$quediaes=date("D");
$quehoraes=date("G"); /// (eso nos devuelve la hora del 1 al 24)
$numero = 3 ;
$random = rand(1,$numero);
$img = array();
$url = array();
$txt = array();
$title = array();
$titulo = array();
$texto = array();
$img[1] = " http://www.misitio.com/images/imagen1.jpg ";
$url[1] = " http://www.sitiosaliente1.com/";
$txt[1] = " DESCRIPCION";
$title[1] = " TITULO";
$titulo[1] = "NOMBRE";
$texto [1] = "TEXTO";
$img[2] = " http://www.misitio.com/images/imagen2.jpg ";
$url[2] = " http://www.sitiosaliente2.com/";
$txt[2] = " DESCRIPCION";
$title[2] = " TITULO";
$titulo[2] = "NOMBRE";
$texto [2] = "TEXTO";
$img[3] = " http://www.misitio.com/images/imagen3.jpg ";
$url[3] = " http://www.sitiosaliente3.com/";
$txt[3] = " DESCRIPCION";
$title[3] = " TITULO";
$titulo[3] = "NOMBRE";
$texto [3] = "TEXTO";
if ($hora == "1"){$imagen = "$img[3]"; }
if ($hora == "5"){$imagen = "$img[2]"; }
if ($hora == "9"){$imagen = "$img[1]"; }
if ($hora == "13"){$imagen = "$img[3]"; }
if ($hora == "17"){$imagen = "$img[2]"; }
if ($hora == "21"){$imagen = "$img[1]"; }
echo "”;
echo ““;
echo “$titulo[$random]“;
echo ” $texto[$random] “;
echo “”;
?>
Desde ya muchas gracias por cualquier ayuda que puedas prestarme
Hola Horacio, primero que nada donde pusiste la direccion tambien pusiste la etiqueta img?
En el codigo que pones veo un par de errores. Por ejemplo:
if ($hora == "1"){$imagen = "$img[3]"; }
if ($hora == "5"){$imagen = "$img[2]"; }
if ($hora == "9"){$imagen = "$img[1]"; }
if ($hora == "13"){$imagen = "$img[3]"; }
if ($hora == "17"){$imagen = "$img[2]"; }
if ($hora == "21"){$imagen = "$img[1]"; }
Deberia ser:
if ($hora >= "1" && $hora < = "5"){$imagen = "$img[3]"; }
if ($hora >= "5" && $hora < = "9"){$imagen = "$img[2]"; }
if ($hora >= "9" && $hora < = "13"){$imagen = "$img[1]"; }
if ($hora >= "13" && $hora < = "17"){$imagen = "$img[3]"; }
if ($hora >= "17" && $hora < = "21"){$imagen = "$img[2]"; }
if ($hora >= "21" && $hora < = "24"){$imagen = "$img[1]"; }
Aca estamos diciendo que si (if) $hora es mayor (>=) que 1 y (&&) menor (<=) que 5 nos muestre {$imagen = "$img[3]; }
Al final del codigo te falta ademas hacer un "echo" de la imagen.
Muchas gracias por contestar, pero no logro hacer que funcione, en fin… igualmente cuando pegue el codigo en dreamweaver me daba error de sintaxis y al probarlo en la web da el mismo error, y por lo que investigue habria que sacarle los signos de =
quedaria asi
if ($hora > “1″ && $hora <"5"){$imagen = "$img[3]"; }
y supuestamente tendria que funcionar pero no lo logre, asi que seguire investigando.
Igualemente me parece muy bueno tu blog y ya voy a utilizar algunas cosas del mismo como tu articulo
-Como redimensionar una imagen proporcionalmente con css y no morir en el intento
Muchas gracias por todo
Saludos
Los llamados operadores de comparación $a >= $b nos indica que $a es mayor o igual que b, por esto te lo agregue al codigo, mientras que el operador $a > $b es estrictamente mayor $a que $b.
Por otra parte, revise el codigo antes de enviartelo y no encontre errores ni problemas en dreamweaver, chequea que hayas escrito integro el codigo y no hayas modificado algo.
Teoricamente deberia funcionar aunque deberás hacerle unos pequeños ajustes al resto de tu codigo.
Saludos
Acabo de ver el problema del codigo que te pase, en realidad fue provocado por el comentario, ya que al tratar de editarlo me aparecia bien pero aca los simbolos <= aparecen separados y no pueden tener separacion.
Saludos
Gracias por el código!! me vino fantástico para resolver algo que quería lograr con unas imágenes de fondo aleatorias en un tema de wordpress.
Sólo me costó un poquito entender cómo colocar la dirección del template (con el código que usa wordpress) sin que luego diera error, pero era tan simple como esto:
<img src="” />
Hola Julia, nos alegra de que te haya servido el código.
Saludos!
hola, voy a probar este php pero quería saber cómo puede hacerse que sea el cambio cada 24 horas; y una vez que se nos hayan terminado las imagenes $img[3] vuelva a empezar en la primera $img[1].
Mil gracias!! De verdad me ayudarías muchísimo.
Si deseas agregar un código a tu comentario por favor usa el siguiente formato: <pre name="code" class="php">Tu código</pre>. Puedes reemplazar la clase con "js", "css", "sql", o "html". Si el código tiene algún "<" o ">" en tu código reemplazalo con: < y > respectivamente.