Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Ordine non rispettato

  1. #1

    Ordine non rispettato

    Buon giorno, ho questo problemino.Ho una serie di miniature che voglio visualizzare all'interno della gallery come anteprima.Quando l'untente vi clicca sopra si apre la foto ingrandita..

    Non capisco come mai, dato lo script che posto, non rispetta l'ordine, nel senso, mi visualizza 1-10-11-12...etc 2-20-21 etc e cosi via..

    Sapete come risolvere per favore?

    codice:
    <?
    $dir_foto = "foto";
    $dir_prog = "/progetti/";
    $scelta = $_GET['scelta'];
    $dirname = $dir_foto . $dir_prog . $scelta . "/";
    					
    	if(is_dir($dirname)){
    		$dir = opendir($dirname . "/tmb/"); 
    		echo "<table align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">"; 
    		echo "<tr>";
    		$i = 0;
    		while($file=readdir($dir)){
    			$findJpg = ".jpg"; 
    			$mystring1 = $file; 
    			$pos1 = strpos ($mystring1, $findJpg);
    							
    				if ($pos1 != false) {
    				list($width, $height, $type, $attr) = getimagesize($dirname."/web/".$mystring1);
            			             echo "<td width='25%' align='center'>";
    								//ogni finestra per visualizzare l'immagine deve prendere le misure medesime 			
    								echo "	<a href=\"#\" onclick=\"foto_assGuada('$dirname/web/$mystring1',$width+20,$height+60); return false;\">
    										<input type='hidden' name='fotoL' value='$mystring1'>";		
    								echo "[img]$dirname/tmb/$mystring1[/img]";
    								$caratteri = array($findJpg);
    								$soloCaratteri = str_replace($caratteri, "", $mystring1);
    								echo "</a>";
    								echo "	<table width='96' height='15' cellspadding='0' cellspacing='0' border='0'>
    											<tr>
    												<td align='center'>
    													<font face='Arial, Helvetica, sans-serif' size='-4'>$soloCaratteri</font>
    												</td>
    											</tr>		
    										</table>
    										</td>";
    								//echo "</td>";
    								$i++;
    								//se sono alla 4° riga o un multiplo di 2 cambio riga
    								if($i%3==0){
    									echo "</tr><tr>";
    								}
    							} 
    						}
    						//finito il ciclo aggiungo le celle mancanti e chiudo la riga
    						if($i%3!=0){
    							$mancano = 3-($i%3);//righe mancanti
    							for($j=1;$j<=$mancano;$j++){
    								echo "<td></td>";
    							}
    						}
    						closedir($dir); 
    					} 
    					else{ 
    						echo "$dirname non è una directory valida"; 
    					}
    					//se le immagini superano le 16 per pagina,impaginarle per es:
    					//nella pagina 1 ce ne sono 16,nella 2 ce ne sn 7 ect ect...
    				?>
    spero possa esservi d'aiuto...
    Grazie mille....

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    62
    Credo - per quel poco che so - il problema sussista nel fatto che lui interpreti i numeri incrementati come stringhe, e non come numeri.

    I nomi delle immagini da dove le prende?

    Se da un db, il campo che contiene l'identificativo numerico deve essere INT o DECIMAL o comunque un campo numerico.

    Se é un campo CHAR oppure VARCHAR oppure prende le immagini dal nome del file, lui le tratta come caratteri, ergo 20 arriva prima di 3.

    Per ovviare, calcola quante immagini caricherai nei prossimi 80 anni, se sono meno di cento le nomini 01, 02, 03, 04... se sono più 001, 002 e così via...

  3. #3
    non le carico da DB, le prendo da una cartella!!!

  4. #4
    Utilizza questo script:

    Codice PHP:
    <?php
    function elencafiles($dirname){    
        
    $arrayfiles=Array();    
        if(
    file_exists($dirname)){        
            
    $handle opendir($dirname);        
            while (
    false !== ($file readdir($handle))) {             
                 if(
    is_file($dirname.$file)){                
                     
    array_push($arrayfiles,$file);            
                 }        
            }        
            
    $handle closedir($handle);    
        }    
    sort($arrayfiles);    
    return 
    $arrayfiles;
    }

    // RICHIAMO FUNZIONE
    $arrayfile=array();
    $arrayfile=elencafiles("public/folder/");
    ?>
    Quando vai in lettura di files in una cartella li posizioni in un array che andrai poi a ordinare con la funzione SORT

  5. #5
    ok, ti ringrazio, domani lo provo e ti faccio sapere se ho problemi.Grazie mille....

  6. #6
    scusa per l'ignoranza, ma come faccio ad estrapolare e visualizzare le immagini che ho nella cartella?perchè ho fatto cosi e non funziona...

    codice:
    function elencafiles($dirname){     
        $arrayfiles=Array();     
        if(file_exists($dirname)){         
            $handle = opendir($dirname);         
            while (false !== ($file = readdir($handle))) {              
                 if(is_file($dirname.$file)){                 
                     array_push($arrayfiles,$file);             
                 }         
            }         
            $handle = closedir($handle);     
        }     
    sort($arrayfiles);     
    return $arrayfiles; 
    } 
    
    // RICHIAMO FUNZIONE 
    $arrayfile=array(); 
    /*la path dove ho le immagini*/
    $arrayfile=elencafiles("video/img/");
    echo $arrayfiles;
    grazie mille...

  7. #7
    ciao, puoi dirmi per favore, come estrapolare il contenuto della cartella, tramite la funzione che mi hai postato?
    Grazie mille...

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    322
    Sempre riguardo l'ordine di un array.. qualcuno mi può fare un esempio del funzionamento d asort?

    Perchè avrei un array ke va da n=1 a 100 e il cui contenuto è composto da numeri ke ordino con la funzione sort, ma perdo tutti i riferimenti.. se n=1 era 24 e n=2 era 12.. usando sort si invertono..

    Con asort posso risolvere questo problema?
    Pur ordinando in ordine de/crescente, posso mantenere la vecchia corrispondenza agli indici?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.