Foros del Web » Programando para Internet » PHP »

Imagen al azar sin repetir

Estas en el tema de Imagen al azar sin repetir en el foro de PHP en Foros del Web. Hola a todos: El siguiente código muestra una imagen aleatoria cada vez que, por ejemplo, actualizamos la página. Mi intención es que no repita las ...
  #1 (permalink)  
Antiguo 13/06/2008, 14:44
 
Fecha de Ingreso: octubre-2004
Mensajes: 7
Antigüedad: 19 años, 7 meses
Puntos: 0
Sonrisa Imagen al azar sin repetir

Hola a todos:

El siguiente código muestra una imagen aleatoria cada vez que, por ejemplo, actualizamos la página. Mi intención es que no repita las imágenes, es decir, que cuando muestra una imagen, al actualizar la web, no me muestre la misma, sino otra distinta.

Os dejo el código para ver si lo podéis modificar y ayudarme con este tema:

Código PHP:
<?php
// no direct access
defined'_VALID_MOS' ) or die( 'Restricted access' );

global 
$mosConfig_absolute_path$mosConfig_live_site;

$type $params->get'type''jpg' );
$folder $params->get'folder' );
$link $params->get'link' );
$width $params->get'width' );
$height $params->get'height' );
$the_array = array();
$the_image = array();

// if folder includes livesite info, remove
if ( strpos($folder$mosConfig_live_site) === ) {
$folder str_replace$mosConfig_live_site''$folder );
}
// if folder includes absolute path, remove
if ( strpos($folder$mosConfig_absolute_path) === ) {
$folderstr_replace$mosConfig_absolute_path''$folder );
}
// if folder doesnt contain slash to start, add
if ( strpos($folder'/') !== ) {
$folder '/'$folder;
}
// construct absolute path to directory
$abspath_folder $mosConfig_absolute_path $folder;

// check if directory exists
if (is_dir($abspath_folder)) {
if (
$handle opendir($abspath_folder)) {
while (
false !== ($file readdir($handle))) {
if (
$file != '.' && $file != '..' && $file != 'CVS' && $file != 'index.html' ) {
$the_array[] = $file;
}
}
}
closedir($handle);

foreach (
$the_array as $img) {
if (!
is_dir($abspath_folder .'/'$img)) {
if (
eregi($type$img)) {
$the_image[] = $img;
}
}
}

if (!
$the_image) {
echo 
_NO_IMAGES;
} else {
$i count($the_image);
$random mt_rand(0$i 1);
$image_name $the_image[$random];
$abspath_image $abspath_folder '/'$image_name;
$size getimagesize ($abspath_image);

if (
$width == '') {
(
$size[0] > 100 $width 100 $width $size[0]);
}
if (
$height == '') {
$coeff $size[0]/$size[1];
$height = (int) ($width/$coeff);
}

$image $mosConfig_live_site $folder .'/'$image_name;
?>
<div align="center">
<?php
if ($link) {
?>
<a href="<?php echo $link?>" target="_self">
<?php
}
?>
<img src="<?php echo $image?>" border="0" width="<?php echo $width?>" height="<?php echo $height?>" alt="<?php echo $image_name?>" /><br />
<?php
if ($link) {
?>
</a>
<?php
}
?>
</div>
<?php
}
}
?>
Muchas gracias y espero haberme explicado correctamente.
  #2 (permalink)  
Antiguo 13/06/2008, 15:18
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Imagen al azar sin repetir

Cita:
Iniciado por Winsatan Ver Mensaje
Hola a todos:

El siguiente código muestra una imagen aleatoria cada vez que, por ejemplo, actualizamos la página. Mi intención es que no repita las imágenes, es decir, que cuando muestra una imagen, al actualizar la web, no me muestre la misma, sino otra distinta.


Muchas gracias y espero haberme explicado correctamente.
si como dices el script te devuelve una imagen aleatoriamente, es eso, que no se repite, que es lo que tu quieres

o no??
  #3 (permalink)  
Antiguo 13/06/2008, 15:20
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Imagen al azar sin repetir

hay algo, creo mas sencilo

guardas tus imagenes en un array y despues usas shuffle () para poner imagenes aleatorias

$aleatorias = array (image1.jpd,image2.jpg,........................... )

shuffle ($aleatorias)

es algo asi, el codigo que puse es una aproximacion, busca informacion en el foro
Unsaludo
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 04:54.