Foros del Web » Programando para Internet » PHP »

imagenes en carpeta si muestro una imagen desordena pero si muestro todas las ordena

Estas en el tema de imagenes en carpeta si muestro una imagen desordena pero si muestro todas las ordena en el foro de PHP en Foros del Web. Buenas tardes amigos. tengo el siguiente problema, ya que estoy queriendo mostrar las imágenes de una carpeta donde le paso la ruta a través de ...
  #1 (permalink)  
Antiguo 21/01/2016, 11:26
Avatar de mazaku  
Fecha de Ingreso: septiembre-2009
Ubicación: Veracruz
Mensajes: 104
Antigüedad: 14 años, 7 meses
Puntos: 0
imagenes en carpeta si muestro una imagen desordena pero si muestro todas las ordena

Buenas tardes amigos. tengo el siguiente problema, ya que estoy queriendo mostrar las imágenes de una carpeta donde le paso la ruta a través de la bd. Quiero solo mostrar una imagen con opcion de dar siguiente y atras.

pero mi problema es que si muestro todas las imágenes me las muestra correctamente en orden es decir

00.jpg
01.jpg
02.jpg
03.jpg
04.jpg

pero al momento de mostrar solo una imagen con el paginador me las muestra asi

00.jpg
03.jpg
02.jpg
04.jpg

este codigo lo saque de otra conversacion de forosdelweb, pero no logro adaptarlo a lo que quiero y no se cual sea el error de que me las desordene al mostrar solo una imagen.

Código:
<?php 
include ('conexion.php');
$c_id = $_GET['id']; // Esto recoje los datos de la variable id en la url.
$registros = "SELECT * FROM capitulos WHERE c_id='$c_id'";
		
		$result = $objeto->query($registros);
while ( $row = $result->fetch_array() )    
{ 
// para leer el directorio 
$ruta = "".$row['ruta']."/"; 
$filehandle = opendir($ruta);  
while ($file = readdir($filehandle)) { 
    if ($file != "." && $file != ".." ) { 
        $arch=$file; 
        $archi=$arch.'*'.$archi; 
    } 
} 

closedir($filehandle);  

}

  
// paginando 
$archivosfile=explode("*", $archi); 
$currentpage = $_SERVER['PHP_SELF']; // pagina en la que se encuentra 
$total=(count($archivosfile)-1); 
$maxRows_Blogdenotas = 1;  // cantidad maxima de archivos a mostrar por pagina 
$pageNum_Blogdenotas = 0; 

if (isset($_GET['pag'])) { 
  $pageNum_Blogdenotas = intval($_GET['pag']); 
} 

$startRow_Blogdenotas = $pageNum_Blogdenotas * $maxRows_Blogdenotas; 

if (isset($_GET['pag'])) { 
  $pageNum_Blogdenotas = intval($_GET['pag']); 
} 

$startRow_Blogdenotas = $pageNum_Blogdenotas * $maxRows_Blogdenotas; 
$totalRows_Blogdenotas = $total; 
$totalPages_Blogdenotas = ceil($totalRows_Blogdenotas/$maxRows_Blogdenotas)-1; 
$archivos = array_slice($archivosfile, $startRow_Blogdenotas, $maxRows_Blogdenotas); 
 
   
// paginando    

?> 
Total Archivos:&nbsp;<?php echo $total;  ?><br /><br /> 
<table border="0"> 
                    <tr> 
                      <td><?php if ($pageNum_Blogdenotas > 0) { // Show if not first page ?> 
                            <a href="<?php echo $currentpage; ?>?id=<?php echo $c_id; ?>&pag=0">Primero</a> 
                            <?php }else{ // Show if not first page ?> 
                            <span class="style1">Primero</span>                            <?php } ?>                      </td> 
                      <td><?php if ($pageNum_Blogdenotas > 0) { // Show if not first page ?> 
                            <a href="<?php echo $currentpage; ?>?id=<?php echo $c_id; ?>&pag=<?php echo htmlentities($_GET['pag']-1); ?>">Anterior</a> 
                            <?php }else{ // Show if not first page ?> 
                            <span class="style1">Anterior</span>                            <?php } ?>                      </td> 
                      <td><?php if ($pageNum_Blogdenotas < $totalPages_Blogdenotas) { // Show if not last page ?> 
                            <a href="<?php echo $currentpage; ?>?id=<?php echo $c_id; ?>&pag=<?php echo htmlentities($_GET['pag']+1); ?>">Siguiente</a> 
                            <?php }else{ // Show if not last page ?> 
                            <span class="style1">Siguiente</span>                            <?php } ?>                      </td> 
                      <td><?php if ($pageNum_Blogdenotas < $totalPages_Blogdenotas) { // Show if not last page ?> 
                            <a href="<?php echo $currentpage; ?>?id=<?php echo $c_id; ?>&pag=<?php echo $totalPages_Blogdenotas ?>">Ultimo</a> 
                            <?php }else{ // Show if not last page ?> 
                            <span class="style1">Ultimo</span>                            <?php } ?>                      </td> 
                    </tr> 
                  </table> 
<div>                  Mostrando <?php echo ($startRow_Blogdenotas + 1) ?> a <?php echo min($startRow_Blogdenotas + $maxRows_Blogdenotas, $totalRows_Blogdenotas) ?> de <?php echo $totalRows_Blogdenotas ?></div><br /><br /> 

<?php 
sort($archivos); 
foreach ($archivos as $archivo) {  
echo '<img src="'.$ruta.$archivo.'" />'; } 
?>
Si le pongo por ejemplo aqui 20
Código:
$maxRows_Blogdenotas = 20;  // cantidad maxima de archivos a mostrar por pagina
muestra las imagenes ordenas

pero si le cambio a solo muestre una
Código:
$maxRows_Blogdenotas = 1;  // cantidad maxima de archivos a mostrar por pagina
me las desordena

saludos y muchas gracias por su apoyo
  #2 (permalink)  
Antiguo 21/01/2016, 23:32
Avatar de mazaku  
Fecha de Ingreso: septiembre-2009
Ubicación: Veracruz
Mensajes: 104
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: imagenes en carpeta si muestro una imagen desordena pero si muestro todas

buenas noches, habra alguna forma de solucionar este problema?
  #3 (permalink)  
Antiguo 22/01/2016, 01:11
Avatar de marmol  
Fecha de Ingreso: marzo-2004
Ubicación: en argentina
Mensajes: 197
Antigüedad: 20 años, 1 mes
Puntos: 4
Respuesta: imagenes en carpeta si muestro una imagen desordena pero si muestro todas

Hola Mazacu a ver si entiendo anda todo perfecto cuando asignas 1 sola paginacion. Solo es el orden que muestra las foto verdad??

//Podes agregarle el campo fecha a cada una de tus imagenes en la db.

Realiza la siguiente prueba:
Añadir a la consulta sql: ORDER BY 'fecha' ASC
(desc seria "descendente" y asc ascendente)

Código PHP:
Ver original
  1. //quedaria asi:
  2. $registros = "SELECT * FROM capitulos WHERE c_id='$c_id' ORDER BY 'fecha' DESC";


Código PHP:
Ver original
  1. //pd: por seguridad mínimamente agregale htmlentities a la variable que recibes por GET.
  2. $c_id = htmlentities($_GET['id']); // Esto recoje los datos de la variable id en la url.
  3.  
  4. //o mejor aún
  5.  $c_id = preg_replace('/[^0-9]/', '', $_GET['id']); // si sólo es numerico lo recibido por GET



saludos
__________________
Fabricante Maquina industriales
http://www.guidobatanmaquinarias.com

Última edición por marmol; 22/01/2016 a las 02:50
  #4 (permalink)  
Antiguo 22/01/2016, 09:36
Avatar de mazaku  
Fecha de Ingreso: septiembre-2009
Ubicación: Veracruz
Mensajes: 104
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: imagenes en carpeta si muestro una imagen desordena pero si muestro todas

Gracias por responder marmol

si, el script funciona bien el único problema es que al querer que solo muestre de 1 en 1 las imagenes se desorganizan, le hice el cambio en esta parte como me comentaste.

Cita:
$c_id = preg_replace('/[^0-9]/', '', $_GET['id']); // si sólo es numerico lo recibido por GET
pero esto no creo que aplique
Cita:
$registros = "SELECT * FROM capitulos WHERE c_id='$c_id' ORDER BY 'fecha' DESC";
ya que las imágenes que quiero mostrar las saco de una carpeta. solo guardo la ruta hacia la misma.

saludos.
  #5 (permalink)  
Antiguo 23/01/2016, 03:53
Avatar de marmol  
Fecha de Ingreso: marzo-2004
Ubicación: en argentina
Mensajes: 197
Antigüedad: 20 años, 1 mes
Puntos: 4
Respuesta: imagenes en carpeta si muestro una imagen desordena pero si muestro todas

Entiendo, acaso será que se deberia ordenar alfabeticamente si es lo que entendi?

antes del foreach ($archivos as $archivo) {
agregas esto: ksort ($archivos); //para ordenar alfabeticamente.

testealo saludos
__________________
Fabricante Maquina industriales
http://www.guidobatanmaquinarias.com
  #6 (permalink)  
Antiguo 23/01/2016, 11:33
Avatar de mazaku  
Fecha de Ingreso: septiembre-2009
Ubicación: Veracruz
Mensajes: 104
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: imagenes en carpeta si muestro una imagen desordena pero si muestro todas

sigue sin ordenar las imagenes.
Te muestro un ejemplo

Aqui las ordena correctamente pero solo si las muestro todas a la vez
http://manganix.com/galeria.php?id=39

y asi es como quiero que se muestren 1 en 1 pero las desordena. el codigo e imagenes es el mismo solo cambio esto
http://manganix.com/gal.php?id=39

Cita:
$maxRows_Blogdenotas = 1; // cantidad maxima de archivos a mostrar por pagina
no se a que se deba, gracias por tu ayuda

Última edición por mazaku; 23/01/2016 a las 12:40

Etiquetas: carpeta, html, imagenes, registro, select, todas, variable
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 07:48.