[RESOLU] pagination PHP

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 : [RESOLU] pagination PHP

Re: pagination PHP

par ps6c0tic » 10 juil. 2013, 16:22

Merci beaucoup ça m'a énormément aider a comprendre le mécanisme, j'ai réussi à réaliser ma pagination en me passant d'ajax, le fait de recharger la page ne gêne pas :lol:

Re: pagination PHP

par orenx22 » 10 juil. 2013, 16:19

Attention j'ai fait une erreur dans la dernier boucle for.

La valeur du lien <a> n'ai pas $id mais $i !
<div id="cmd">
<?php $cmd = round( count( $personnes ) / $step, 0, PHP_ROUND_HALF_UP ) ?>
<?php for( $i = 0 ; $i < $cmd ; $i++ ): ?>
<a href="#"><?php $i ?></a>
<?php endfor ?>
</div>

Re: pagination PHP

par ps6c0tic » 10 juil. 2013, 11:41

Merci beaucoup je vais tester ça tout de suite :D

Re: pagination PHP

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

pagination PHP

par ps6c0tic » 09 juil. 2013, 12:10

Quelqu'un pourrait m'aider pour créer un système de pagination, j'ai déjà galérer pour écrire ce code :( mon niveau en php est assez médiocre), je voudrais créer un système de pagination qui m'affiche 8 éléments par page sachant que ma table en base de données contient plusieurs centaines d'utilisateurs. Voilà mon code je voudrais savoir comment je dois procéder pour créer mon système de pagination avec navigation(suivant précédent).
voila le code de ma page ou j'inclus mon tableau : Nom de la page: page_etat_admin.php
<?php
session_start();
?>
<html>
<title>Page d'etat</title>
<?php include('../charte/corps.php');?>

<body>
<?php include('../charte/database_connexion.php');
include('etat_general_admin.php');
</html>

Et voilà ma page qui traite mes données: Nom de la page: etat_general_admin.php
<?php

$req = $bdd->query("SELECT min(date_embauche) AS min_date FROM collaborateurs") or die();

while ($donnee = $req->fetch())
$d2=$min = $donnee['min_date'];
$s=$difference=date('Y')-date('Y',strtotime($min));
echo '<table align="center" class="tableau"><tr>';
echo '<td rowspan="2"> Matricule </td><td colspan="' . (date('Y',strtotime('+1 year'))-date('Y',strtotime($min))) . '"> Année</td></tr><tr>';
do {
    echo '<td>' . date('Y', strtotime($min)) . '</td>';
	$min= $min . '+1year';
}while (date('Y')>=date('Y',strtotime($min)));
echo '</tr>';


$req=$bdd->query("SELECT * FROM craaligneother GROUP BY uidPersonne ORDER BY uidPersonne ASC");
while($personne=$req->fetch()){
	echo '<tr><td>';
		echo '<a href="page_etat_admin.php?matricule=' . $personne['uidPersonne'] . '">' . $personne['uidPersonne'];
		echo '</a></td>';
	$min=$d2;
	$difference=$s;
	$req1=$bdd->query("SELECT SUM(valJourCra) AS jour, AnneeCra FROM craaligneother WHERE uidPersonne='" . $personne['uidPersonne'] . "' AND idOther=5 GROUP BY AnneeCra ORDER BY AnneeCra ASC");
			$info=$req1->fetch();
				while(date('Y')>=date('Y',strtotime($min))){
					if($info['AnneeCra']==date('Y',strtotime($min))){
						echo '<td>' . $info['jour'] . '</td>';
						$info=$req1->fetch();
					}
					else
						echo '<td>---</td>';
					$min=$min . '+1 year';
				}
	echo '</tr>';
				}

echo '</table>';

?>