page par page mais sans sql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : page par page mais sans sql

par Ryle » 15 juil. 2009, 19:44

Presque... en fait, ce que je t'ai proposé est un équivalent de la fonction LIMIT de MySQL. Donc en $start il te faut la valeur de départ (ex : 0, 10, 20, ...) et dans $number le nombre d'élément à afficher par page (ex : 10)

Ainsi, si tu passes les paramètres 0, 10 à ta fonction, elle te retournera les 10 premiers dossiers.
Si tu lui passes les paramètres 10, 10 elle retournera les 10 suivants (10 à 19). Avec 20, 10 ce sera les dossiers 20 à 29, etc.

Et effectivement, il te faut gérer ensuite la pagination :) Mais dans la mesure où le principe est le même que celui du LIMIT, tu devrais facilement trouver des exemples :) (pis au besoin, on est pas loins ! ;))

par fabrice88250 » 15 juil. 2009, 17:54

okok
merci sa m'aide bien.
donc si je comprend bien je dois ajouter maintenant :

$start = 10; //pour definir le nombre maxi de répertoires à afficher sur une page.
$number = ???????;

et ensuite faire le systeme d'affichage "page 1.2.3.4" ? (euuuuhhhh :? )

par Ryle » 14 juil. 2009, 19:31

Bah elles ne te plaisent pas mes explications ? :)

Bon alors avec un exemple :
function lireDossier($dir_nom, $start, $number)  
{  
    $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant  
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers  

    $cpt = 0; // mon compteur
    while($element = readdir($dir))  
    {  
        if($element != '.' && $element != '..' && is_dir($dir_nom.'/'.$element)) // pour tous les dossiers
        {  
            $cpt++; // je compte

            if ($cpt < $start) // tant que je suis pas dans l'interval, je continue 
              continue; 

            if ($cpt >= $start + $number) // j'ai dépassé l'interval, je m'arrête
              break; 

            $dossier[] = $element;
        }  
    }  
     
    closedir($dir);  
    return array('dossier'=>$dossier);  
}  

par fabrice88250 » 14 juil. 2009, 17:41

ah :? . je suis pas un pro dans ce domaine. il n'y aurait pas un tuto que je pourrais suivre pour réaliser ce systeme de page par page sans sql ?

par Ryle » 14 juil. 2009, 11:51

Tu peux gérer la pagination de la même manière qu'avec MySQL en définissant une valeur de départ et un nombre d'élément à retourner. L'idée est d'ajouter un compteur d'éléments dans ta boucle, et de contrôller si tu es bien dans l'interval des dossiers à retourner pour la page demandé.

En gros :
- tu initialises un compteur à 0, il va te servir à compter le nombre de dossiers parcourus de ton répertoire. A chaque itération de ta boucle, tu incrémentes celui-ci.
- tu ajoutes ensuite un test pour vérifier si ton compteur est inférieur à la valeur de départ de ta pagination. Si c'est le cas, tu passes immédiatement à l'itération suivante avec l'instruction "continue". Si ce n'est pas le cas (et que donc tu es parmis les dossiers à retourner) tu laisse s'exécuter ton while.
- tu ajoutes enfin un second test qui va vérifier si ton compteur est supérieur à la valeur de départ de ta pagination + le nombre d'élément à retourner. Si c'est le cas, tu arrêtes les itérations avec l'instruction "break". Si ce n'est pas le cas (et que donc tu es parmis les dossiers à retourner) tu laisse s'exécuter ton while.

HTH :)

page par page mais sans sql

par fabrice88250 » 13 juil. 2009, 21:42

bonjour,
j'ai un repertoire dans lequel se trouve d'autres repertoires.
je fait afficher le nom de ces repertoires sur ma page internet mais le probleme et que pour le moment je n'ai que 6 repertoire dedans et que si dans le futur j'en ai 100 sa faire faire super lourd sur la page.
avec sql j'arrive a faire du page par page mais en scannant le contenu d'un repertoire je sais pas.

je souahiterai donc faire un affichage des repertoire en page par page. par exemple (un peu comme pour un galerie d'image) 10 repertoires par page en 2 colonnes et 5 lignes.

je voulais donc savoir si vous pouviez me donner un coup de main ?


mon code actuel est le suivant :
// Fonction pour parcourir les dossiers 
function lireDossier($dir_nom) 
{ 
    $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant 
    $fichier= array(); // on déclare le tableau contenant le nom des fichiers 
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers 

    while($element = readdir($dir)) 
	{ 
        if($element != '.' && $element != '..') 		
		{ 
            if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;} 
            else {$dossier[] = $element;} 
        } 
    } 
	
    closedir($dir); 
    return array('dossier'=>$dossier,'fichier'=>$fichier); 
} 


$dir_nom = (isset($_GET['dir'])) ? $_GET['dir'] : '../images'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point') 
$nom_rep = basename($dir_nom); // affiche le nom repertoire dans lequel la page est.

// Récupérations des infos sur le dossier racine. 
$infosDossier = lireDossier($dir_nom); 
$dossier = $infosDossier['dossier']; 
$fichier = $infosDossier['fichier']; 



if(!empty($dossier)) { 
    sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant 
    echo "Liste des dossiers accessibles dans '$dir_nom' : \n\n"; 
    echo "<br/>";
	

        foreach($dossier as $lien)
		{ 
            // Récupération des infos sur un sous dossier 
            $infosSousDossier=lireDossier($dir_nom.'/'.$lien); 
            // Pour choisir aléatoirement une de ses images 
            shuffle($infosSousDossier['fichier']); 
            // ATTENTION : Je n'ai pas traité le cas des sous dossiers vides 			
            echo '
			<div class="col400panocerf">
			<a href="test-galerie.php?dir='.$dir_nom.'/'.$lien.'">
			<img width="100px" height="100px" src="'.$dir_nom.'/'.$lien.'/'.$infosSousDossier['fichier'][0].'"/>
			</a>
			<a href="test-galerie.php?dir='.$dir_nom.'/'.$lien.'">'.$lien.'</a><br/>';
			
			
			$sql = 'SELECT * FROM IWgalerie'; 
			$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error()); 
			while($data = mysql_fetch_array($req)) 
			{ 
				
				if($lien == $data['repertoire'])
				{
				 echo  '' .$data['desc']. '<br/>';				
				}
			}
			
			echo '</div>'; 
			
			} 
		}