par
orenx22 » 09 juil. 2013, 17:19
Pour faire une pagination de ce style je te conseille d'utiliser jquery (JS).
Habituellement tu boucles le résultat que tu reçois de ta base de données. L'idée est d'ajouter un compteur pour que toutes les X valeurs il y est une mise en forme différente.
Je te conseil aussi d'utiliser PDO pour faire ta connexion à ta bdd. Serte c'est une classe mais ce n'est pas plus dure à utiliser que les fonctions mysql, même a un niveau comme le tiens.
Exemple d'utilisation de PDO :
$dsn = "mysql:host=127.0.0.1;port=3306;dbname=mydb;" ;
$db = new PDO( $dsn, 'root', null ); // null étant le mot de passe en lan ;
// maintenant tu peux utiliser la variable $db pour effectuer du traitement avec ta base de données ;
$statement = "SELECT * FROM craaligneother GROUP BY uidPersonne ORDER BY uidPersonne ASC" ;
$req = $db-> prepare( $statement );
$req-> execute();
$personnes = $req-> fetchAll( PDO::FETCH_ASSOC );
// Bouclage sur les données, toi tu le faisais avec le while ;
// Avec comme valeur de fetchAll = PDO::FETCH_ASSOC (en tableau quoi) ;
foreach( $personnes as $result )
{
echo "{$result['id']} + {$result['nom']}" ;
}
// Avec comme valeur de fetchAll = PDO::FETCH_OBJ (en objet) ;
foreach( $personnes as $result )
{
echo "{$result-> id} + {$result-> nom}" ;
}
Pour la pagination, rien de plus simple. Si je me référé à l'exemple du dessus :
<?php $i = 0; $step = 8 ; ?>
<div id='personnes'>
<div id='groupe-<?php echo $i ?>'>
<?php foreach( $personnes as $result ): ?>
<div id="une-personne">
<?php echo "{$result['id']} + {$result['nom']}" ?>
</div>
<?php if( $i > $step ): ++$i ?>
</div>
<div id='groupe-<?php echo $i ?>'>
<?php endif ?>
<?php endforeach ?>
</div>
<div id="cmd">
<?php $cmd = round( count( $personnes ) / $step, 0, PHP_ROUND_HALF_UP ) ?>
<?php for( $i = 0 ; $i < $cmd ; $i++ ): ?>
<a href="#"><?php $id ?></a>
<?php endfor ?>
</div>
</div>
L'idée est simple, quand je boucle le résultat, t’ajoute +1 à $i quand on dépasse $step ( qui est égale à 8 dans l'exemple ) je ferme la div et j'en ré ouvre une avec la nouvelle valeur de $i. En gros je regroupe 8 résultats dans une div et ceci jusqu’à la fin de ma boucle.
Reste plus qu'à faire un script js pour faire le lien entre les différentes div avec l'id = "groupe-id" ou id est un valeur numérique et les bouton dans le div avec l'id = cmd. En gros au clique de l'un de ces bouton, sa valeur (1, 2 ou 3, etc) permettra d'afficher la div avec l'id groupe-1, groupe-2 ou groupe-3, groupe-etc ..
Je laisse quelqu'un de plus doué que moi en js/jquery te faire un script fonctionnant avec ce que j'ai fait je ne suis pas très bon dans ce domaine.
Ciao
Pour faire une pagination de ce style je te conseille d'utiliser jquery (JS).
Habituellement tu boucles le résultat que tu reçois de ta base de données. L'idée est d'ajouter un compteur pour que toutes les X valeurs il y est une mise en forme différente.
Je te conseil aussi d'utiliser PDO pour faire ta connexion à ta bdd. Serte c'est une classe mais ce n'est pas plus dure à utiliser que les fonctions mysql, même a un niveau comme le tiens.
Exemple d'utilisation de PDO :
[php]
$dsn = "mysql:host=127.0.0.1;port=3306;dbname=mydb;" ;
$db = new PDO( $dsn, 'root', null ); // null étant le mot de passe en lan ;
// maintenant tu peux utiliser la variable $db pour effectuer du traitement avec ta base de données ;
$statement = "SELECT * FROM craaligneother GROUP BY uidPersonne ORDER BY uidPersonne ASC" ;
$req = $db-> prepare( $statement );
$req-> execute();
$personnes = $req-> fetchAll( PDO::FETCH_ASSOC );
// Bouclage sur les données, toi tu le faisais avec le while ;
// Avec comme valeur de fetchAll = PDO::FETCH_ASSOC (en tableau quoi) ;
foreach( $personnes as $result )
{
echo "{$result['id']} + {$result['nom']}" ;
}
// Avec comme valeur de fetchAll = PDO::FETCH_OBJ (en objet) ;
foreach( $personnes as $result )
{
echo "{$result-> id} + {$result-> nom}" ;
}
[/php]
Pour la pagination, rien de plus simple. Si je me référé à l'exemple du dessus :
[php]
<?php $i = 0; $step = 8 ; ?>
<div id='personnes'>
<div id='groupe-<?php echo $i ?>'>
<?php foreach( $personnes as $result ): ?>
<div id="une-personne">
<?php echo "{$result['id']} + {$result['nom']}" ?>
</div>
<?php if( $i > $step ): ++$i ?>
</div>
<div id='groupe-<?php echo $i ?>'>
<?php endif ?>
<?php endforeach ?>
</div>
<div id="cmd">
<?php $cmd = round( count( $personnes ) / $step, 0, PHP_ROUND_HALF_UP ) ?>
<?php for( $i = 0 ; $i < $cmd ; $i++ ): ?>
<a href="#"><?php $id ?></a>
<?php endfor ?>
</div>
</div>
[/php]
L'idée est simple, quand je boucle le résultat, t’ajoute +1 à $i quand on dépasse $step ( qui est égale à 8 dans l'exemple ) je ferme la div et j'en ré ouvre une avec la nouvelle valeur de $i. En gros je regroupe 8 résultats dans une div et ceci jusqu’à la fin de ma boucle.
Reste plus qu'à faire un script js pour faire le lien entre les différentes div avec l'id = "groupe-id" ou id est un valeur numérique et les bouton dans le div avec l'id = cmd. En gros au clique de l'un de ces bouton, sa valeur (1, 2 ou 3, etc) permettra d'afficher la div avec l'id groupe-1, groupe-2 ou groupe-3, groupe-etc ..
Je laisse quelqu'un de plus doué que moi en js/jquery te faire un script fonctionnant avec ce que j'ai fait je ne suis pas très bon dans ce domaine.
Ciao