pagination

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 : pagination

Re: pagination

par xTG » 29 juil. 2014, 07:51

Je vais me répéter mais c'est pas le bon forum, ici on traite de PHP.
Tu as ouvert un sujet sur le forum javascript, attends une réponse.

Re: pagination

par yoann38 » 28 juil. 2014, 19:25

Commen resoudre le probleme svp ?

Re: pagination

par xTG » 28 juil. 2014, 17:36

Le problème vient des deux ou seulement du JS suivant comment on voit les choses.
A savoir le script include/rechercheAjax.php pour PHP et la fonction chargerDonnees pour Javascript.
Mais globalement c'est surtout chargerDonnees qui ne gère pas un affichage avec pagination.

Re: pagination

par yoann38 » 28 juil. 2014, 08:12

Est ce que le problème viens du JS ou du PHP, les Deux ?
Si vous avez la solution je suis preneur ça fait 4 jours que je suis sur le truc :/
Merci encore pour votre aide

Re: pagination

par yoann38 » 26 juil. 2014, 11:01

Salut, j'ai appliquer ce dont vous m'avez parlez et intégrer le code voici le résultat actuel (code).
Le problème reste le même c'est à dire que mêmele echo de page ne s'affiche plus dès que je clique sur un des filtres ( test1 = Toutes, test2 = Aujourd'hui ).
La page en question est dispo à cette adresse : http://lasortie.fr/sortie.php?region=22

Au sein de la page news.php, j'appelle ma pagination
<?php include("include/recherche.php"); ?>
recherche.php (code)
<?php
$nbParPage = 5;
$sql = $sql . ' LIMIT ' . mysql_real_escape_string($nbParPage) . ',' . mysql_real_escape_string($_GET['unParametre']);

$lstDep = array();
$departement = '-1';
if(isset($_GET['departement']) && !empty($_GET['departement'])){
	$departement = $_GET['departement'];
}
$region = -1;
//requete pour le select par département.
if(isset($_GET['region']) && !empty($_GET['region']) && $_GET['region'] != -1){
	$region = $_GET['region'];
	$req_departement = "select * from departements WHERE region_id = ".$region." ORDER BY nom";
	if($departement == '-1'){
		$res_dep = mysql_query($req_departement);
		while($line = mysql_fetch_array($res_dep)){
			$lstDep[] = $line['departement_id'];
		}
	}
}else{
	$req_departement = "select * from departements ORDER BY nom";
}

//requete pour le select loisir
$loisir = '-1';
if(isset($_GET['loisir']) && !empty($_GET['loisir'])){
	$loisir = $_GET['loisir'];
}
$req_sortie = "select * from type_loisir ORDER BY type";


$requete="SELECT * FROM loisirs where date_fin_sortie > NOW() and valide = 1";
if($departement != -1){
	$requete .= " and id_departements = ".$departement;
}
if($loisir != -1){
	$requete .= " and id_type_loisirs = ".$loisir;
}
if(!empty($lstDep)){
	$requete .= " and id_departements IN (".implode(",", $lstDep).")";
}
$calculPage =mysql_query($requete);
$nbTotal = mysql_num_rows($calculPage);
$nbPages = ceil($nbTotal/$nbParPage);

if(isset($_GET['page'])){
	$pageActuelle=intval($_GET['page']);

	if($pageActuelle>$nbPages){
		$pageActuelle=$nbPages;
	}
}else {
	$pageActuelle=1; 
}

$startLimit=($pageActuelle-1)*$nbParPage;
$resultat=mysql_query($requete." limit ".$startLimit.",".$nbParPage);
?>

Viens ensuite le script qui permet d'afficher les événement en fonction des boutons cliqué test1,test2.....

[javascript]
<script type="text/javascript">
var limit = 0;
var nbParPage = 5;

// On déclare la fonction qui va aller chercher les données en base de données selon le bouton cliqué
function chargerDonnees(bouton) {
// On appelle en ajax le fichier rechercheAjax.php et on lui passe en GET le bouton sur lequel l'utilisateur a appuyé
$.ajax({
url: 'include/rechercheAjax.php?bouton='+bouton+'&unParametre='+limit,// le traitement derrière pour calculer les dates en fonction de test1 , test 2 ...
// Lorsque le fichier rechercheAjax.php a fini de s'exécuter, il retourne une chaîne au format JSON
success: function (data) {
limit = limit + nbParPage; // mise à jour
var sorties = $.parseJSON(data);
console.log(sorties);
// Pour chacune des lignes retournées
$('#bloc_page').html('');
for(var i = 0; i < sorties.length; i++) {
// On prépare l'HTML qui va afficher les résultats
// Pour chacune des lignes retournées
// On vide la zone de résultats

var html = '<div class="col-md-4 col-sm-6 marg15"><div class="wrap"><a href="add_favoris.php?idfav='+sorties.id_loisirs+'" ><div class="corner">FAVORIS</div></a>';
html += '<a href="annonce_zoom.php?id='+sorties.id_loisirs+'" >';
if(sorties.photo != "") {
html += '<img class="img-responsive" src="img/annonce/'+sorties.photo+'" ></a>';
}
html += '<h3>'+sorties.titre+'</h3>';
html += '<p class="desc">'+sorties.description+'</p>';
html += '<hr><div class="utiles">';
html += '<p class="pull-right pad10">'+sorties.date_debut_sortie+'</p>';
html += '<p class="city pull-left pad10"><i class="fa fa-map-marker"></i> '+sorties.city+'</p></div>';
html += '<input class="look pull-right" type="button" value="CONTINUER"><a href="annonce_zoom.php?id='+sorties.id_loisirs+'"></a></div></div></div>';


// On ajoute l'HTML préparé à la page
$('#bloc_page').append(html);

}
}
});
}
</script>
[/javascript]

Les boutons test1,test2.....

[javascript]
<ul class="nav nav-tabs">
<li class="active"><a href="#home" onclick="javascript:chargerDonnees(0);" data-toggle="tab" >test1</a></li>
<li><a href="#profile" onclick="javascript:chargerDonnees(1);" data-toggle="tab">test2</a></li>
<li><a href="#messages" onclick="javascript:chargerDonnees(2);" data-toggle="tab">test3</a></li>
<li><a href="#settings" onclick="javascript:chargerDonnees(3);" data-toggle="tab">test4</a></li>
</ul>
[/javascript]

Et enfin de notre page news.php on affiche les news ainsi que la fameuse pagination
 <div id="bloc_page">
									  <?php 
			while($loisirs=mysql_fetch_array($resultat)) {   ?>
			<?php $date_sortie = DateTime::createFromFormat('Y-m-d', $loisirs['date_debut_sortie']);?>
        	<?php $date = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_debut_sortie']);?>
        	<?php $datef = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_fin_sortie']);?>
        	<?php $diff = floor(($datef->getTimestamp() - $date->getTimestamp())/86400) ;?>
                             <!-- Annonce -->                
            <div class="col-md-4 col-sm-6 marg15">
                <div class="wrap">
                    <a href="add_favoris.php?idfav=<?php echo $loisirs['id_loisirs'];?>"><div class="corner">FAVORIS</div></a>
                    <a href="annonce_zoom.php?id=<?php echo $loisirs['id_loisirs'];?>" >
			<?php if(!empty($loisirs['photo'])){?><img class="img-responsive" src="img/annonce/<?php echo $loisirs['photo'];?>" ><?php }?></a>     
                    <h3><?php echo $loisirs['titre']; ?></h3>
                    <p class="desc"><?php echo substr($loisirs['description'], 0, 150).'...'; ?></p>
                    <hr>
                    <div class="utiles">
                                <p class="pull-right pad10"><?php echo ucfirst($jour[$date->format('N')]); ?> <?php echo $date->format('d'); ?> <?php echo ucfirst($mois[$date->format('n')]); ?> </p>
                                <p class="city pull-left pad10">
                                 <i class="fa fa-map-marker"></i> <?php echo $loisirs['city'];?>
                                </p>
                            </div>

                   <a href="annonce_zoom.php?id=<?php echo $loisirs['id_loisirs'];?>" > <input class="look pull-right" type="button" value="CONTINUER"></a> 
                </div>  
            </div>
                  <?php }?>
                  <div class="pagination">Pages :
		<?php  
			$listParam = '';
			foreach($_GET as $key=>$param){
				if($key != 'page'){
					$listParam .= '&'.$key.'='.$param;
				}
			}
			
			for($i=1; $i<=$nbPages; $i++){
			     if($i==$pageActuelle) {
			         echo ' <span class="page active">'.$i.'</span> '; 
			     }else{
			          echo '<div class="page"><a href="sortie.php?page='.$i.$listParam.'">'.$i.'</div></a> ';
			     }
			}
			?> 
		</div>  
                 
                   </div>   

Re: pagination

par xTG » 25 juil. 2014, 07:30

[javascript]
<script type="text/javascript">
var limit = 0;
var nbParPage = 5;

// On déclare la fonction qui va aller chercher les données en base de données selon le bouton cliqué
function chargerDonnees(bouton) {
// On appelle en ajax le fichier rechercheAjax.php et on lui passe en GET le bouton sur lequel l'utilisateur a appuyé
$.ajax({
url: 'include/rechercheAjax.php?bouton='+bouton+'&unParametre='+limit,// le traitement derrière pour calculer les dates en fonction de test1 , test 2 ...
// Lorsque le fichier rechercheAjax.php a fini de s'exécuter, il retourne une chaîne au format JSON
success: function (data) {
limit = limit + nbParPage; // mise à jour
var sorties = $.parseJSON(data);
console.log(sorties);
// Pour chacune des lignes retournées
$('#bloc_page').html('');
for(var i = 0; i < sorties.length; i++) {
// On prépare l'HTML qui va afficher les résultats
// Pour chacune des lignes retournées
// On vide la zone de résultats

var html = '<div class="col-md-4 col-sm-6 marg15"><div class="wrap"><a href="add_favoris.php?idfav='+sorties.id_loisirs+'" ><div class="corner">FAVORIS</div></a>';
html += '<a href="annonce_zoom.php?id='+sorties.id_loisirs+'" >';
if(sorties.photo != "") {
html += '<img class="img-responsive" src="img/annonce/'+sorties.photo+'" ></a>';
}
html += '<h3>'+sorties.titre+'</h3>';
html += '<p class="desc">'+sorties.description+'</p>';
html += '<hr><div class="utiles">';
html += '<p class="pull-right pad10">'+sorties.date_debut_sortie+'</p>';
html += '<p class="city pull-left pad10"><i class="fa fa-map-marker"></i> '+sorties.city+'</p></div>';
html += '<input class="look pull-right" type="button" value="CONTINUER"><a href="annonce_zoom.php?id='+sorties.id_loisirs+'"></a></div></div></div>';


// On ajoute l'HTML préparé à la page
$('#bloc_page').append(html);

}
}
});
}
</script>
[/javascript]

$nbParPage = 5;
$sql = $sql . ' LIMIT ' . mysql_real_escape_string($nbParPage) . ',' . mysql_real_escape_string($_GET['unParametre']);

Re: pagination

par yoann38 » 24 juil. 2014, 20:19

un exemple svp ?

Re: pagination

par xTG » 24 juil. 2014, 19:59

Il suffit de passer en paramètre de l'url le limit.

Re: pagination

par yoann38 » 24 juil. 2014, 17:30

Ok, je vais poster ça.
Sinan je me demander en "jouant" avec MySQL LIMIT.
En gros quand j'envoie la requete en Ajax je ve voir apparaitre les 20 premiers resultat puis les 20 suivant et ainsi de suite.
Est ce possible de faire quelque chose comme ça, si oui comment.
Quelque chose de propre biensûr.
Merci encore

Re: pagination

par xTG » 24 juil. 2014, 16:14

Donc c'est pas du PHP qu'il te faut comme aide. ^^
Postes plutôt un nouveau sujet dans le forum Javascript afin qu'il soit clair et qu'il touche plutôt des personnes ayant les compétences pour te répondre.
(ce qui n'est pas mon cas, je bidouille plus qu'autre chose ne Javascript)

Re: pagination

par yoann38 » 24 juil. 2014, 13:17

Bah enfait c'est donc bien ce que je pensé mais je souhaite integrer la pagination au script js actuel, c'est un peut compliquer à expliquer pourquoi mais c'est que je souhaite c'est pour ça que je vous solicite :)
....

Re: pagination

par xTG » 24 juil. 2014, 12:53

Ah oui donc effectivement je vois le souci...
Tu as un script de catégorisation en JS qui ne tient pas compte de la pagination.
Le plus simple : refaire ce script en PHP car tu as déjà tout ce qu'il faut pour la pagination.
Le script JS fait appel à un fichier PHP qui en gros doit faire jouer un paramètre dans une requête SQL, ni plus, ni moins.

Vérifies dans un premier temps que la pagination PHP fonctionne si tu ne fais pas appel au script JS.

Re: pagination

par yoann38 » 24 juil. 2014, 10:11

Bonjour,
Alors je vais essayer d'être plus explicite,
Je pense qu'il ya un problème d'intégration et ne voit pas trop comment m'y prendre pour ajouter la pagination au js
car par default j'arrive sur une page et dès que je clique sur un des fameux boutons test, test 2 .... le echo de "Page" ne s'affiche plus :/
J'appele mon fichier ou j'ai ma pagination par:
<?php include("include/recherche.php"); ?>
et ce fichier contient:
<?php
$nbParPage = 5;

$lstDep = array();
$departement = '-1';
if(isset($_GET['departement']) && !empty($_GET['departement'])){
	$departement = $_GET['departement'];
}
$region = -1;
//requete pour le select par département.
if(isset($_GET['region']) && !empty($_GET['region']) && $_GET['region'] != -1){
	$region = $_GET['region'];
	$req_departement = "select * from departements WHERE region_id = ".$region." ORDER BY nom";
	if($departement == '-1'){
		$res_dep = mysql_query($req_departement);
		while($line = mysql_fetch_array($res_dep)){
			$lstDep[] = $line['departement_id'];
		}
	}
}else{
	$req_departement = "select * from departements ORDER BY nom";
}

//requete pour le select loisir
$loisir = '-1';
if(isset($_GET['loisir']) && !empty($_GET['loisir'])){
	$loisir = $_GET['loisir'];
}
$req_sortie = "select * from type_loisir ORDER BY type";


$requete="SELECT * FROM loisirs where date_fin_sortie > NOW() and valide = 1";
if($departement != -1){
	$requete .= " and id_departements = ".$departement;
}
if($loisir != -1){
	$requete .= " and id_type_loisirs = ".$loisir;
}
if(!empty($lstDep)){
	$requete .= " and id_departements IN (".implode(",", $lstDep).")";
}
$calculPage =mysql_query($requete);
$nbTotal = mysql_num_rows($calculPage);
$nbPages = ceil($nbTotal/$nbParPage);

if(isset($_GET['page'])){
	$pageActuelle=intval($_GET['page']);

	if($pageActuelle>$nbPages){
		$pageActuelle=$nbPages;
	}
}else {
	$pageActuelle=1; 
}

$startLimit=($pageActuelle-1)*$nbParPage;
$resultat=mysql_query($requete." limit ".$startLimit.",".$nbParPage);
?>

Ensuite sur une page (news.php) ce script: ( permet d'afficher mes "news" en fonction du bouton sur lequel l'utilisateur aura cliqué).
[javascript]
<script type="text/javascript">
// On déclare la fonction qui va aller chercher les données en base de données selon le bouton cliqué
function chargerDonnees(bouton) {
// On appelle en ajax le fichier rechercheAjax.php et on lui passe en GET le bouton sur lequel l'utilisateur a appuyé
$.ajax({
url: 'include/rechercheAjax.php?bouton='+bouton,// le traitement derrière pour calculer les dates en fonction de test1 , test 2 ...
// Lorsque le fichier rechercheAjax.php a fini de s'exécuter, il retourne une chaîne au format JSON
success: function (data) {
var sorties = $.parseJSON(data);
console.log(sorties);
// Pour chacune des lignes retournées
$('#bloc_page').html('');
for(var i = 0; i < sorties.length; i++) {
// On prépare l'HTML qui va afficher les résultats
// Pour chacune des lignes retournées
// On vide la zone de résultats

var html = '<div class="col-md-4 col-sm-6 marg15"><div class="wrap"><a href="add_favoris.php?idfav='+sorties.id_loisirs+'" ><div class="corner">FAVORIS</div></a>';
html += '<a href="annonce_zoom.php?id='+sorties.id_loisirs+'" >';
if(sorties.photo != "") {
html += '<img class="img-responsive" src="img/annonce/'+sorties.photo+'" ></a>';
}
html += '<h3>'+sorties.titre+'</h3>';
html += '<p class="desc">'+sorties.description+'</p>';
html += '<hr><div class="utiles">';
html += '<p class="pull-right pad10">'+sorties.date_debut_sortie+'</p>';
html += '<p class="city pull-left pad10"><i class="fa fa-map-marker"></i> '+sorties.city+'</p></div>';
html += '<input class="look pull-right" type="button" value="CONTINUER"><a href="annonce_zoom.php?id='+sorties.id_loisirs+'"></a></div></div></div>';


// On ajoute l'HTML préparé à la page
$('#bloc_page').append(html);

}
}
});
}
</script>
[/javascript]

Les boutons en relation avec script sont:
[javascript]
<ul class="nav nav-tabs">
<li class="active"><a href="#home" onclick="javascript:chargerDonnees(0);" data-toggle="tab" >Test1</a></li>
<li><a href="#profile" onclick="javascript:chargerDonnees(1);" data-toggle="tab">Test2</a></li>
<li><a href="#messages" onclick="javascript:chargerDonnees(2);" data-toggle="tab">Test3</a></li>
<li><a href="#settings" onclick="javascript:chargerDonnees(3);" data-toggle="tab">Test4</a></li>
</ul>
[/javascript]


Cette partie affcihe les news en elle même en fonction sur script juste au dessus

<!-- *********** les news ********* -->
                              <div id="bloc_page">
									  <?php 
			while($loisirs=mysql_fetch_array($resultat)) {   ?>
			<?php $date_sortie = DateTime::createFromFormat('Y-m-d', $loisirs['date_debut_sortie']);?>
        	<?php $date = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_debut_sortie']);?>
        	<?php $datef = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_fin_sortie']);?>
        	<?php $diff = floor(($datef->getTimestamp() - $date->getTimestamp())/86400) ;?>
                             <!-- Annonce -->                
            <div class="col-md-4 col-sm-6 marg15">
                <div class="wrap">
                    <a href="add_favoris.php?idfav=<?php echo $loisirs['id_loisirs'];?>"><div class="corner">FAVORIS</div></a>
                    <a href="annonce_zoom.php?id=<?php echo $loisirs['id_loisirs'];?>" >
			<?php if(!empty($loisirs['photo'])){?><img class="img-responsive" src="img/annonce/<?php echo $loisirs['photo'];?>" ><?php }?></a>     
                    <h3><?php echo $loisirs['titre']; ?></h3>
                    <p class="desc"><?php echo substr($loisirs['description'], 0, 150).'...'; ?></p>
                    <hr>
                    <div class="utiles">
                                <p class="pull-right pad10"><?php echo ucfirst($jour[$date->format('N')]); ?> <?php echo $date->format('d'); ?> <?php echo ucfirst($mois[$date->format('n')]); ?> </p>
                                <p class="city pull-left pad10">
                                 <i class="fa fa-map-marker"></i> <?php echo $loisirs['city'];?>
                                </p>
                            </div>

                   <a href="annonce_zoom.php?id=<?php echo $loisirs['id_loisirs'];?>" > <input class="look pull-right" type="button" value="CONTINUER"></a> 
                </div>  
            </div>
                  <?php }?>
                  <!-- pagination des news -->
                  <div class="pagination">Pages :
		<?php  
			$listParam = '';
			foreach($_GET as $key=>$param){
				if($key != 'page'){
					$listParam .= '&'.$key.'='.$param;
				}
			}
			
			for($i=1; $i<=$nbPages; $i++){
			     if($i==$pageActuelle) {
			         echo ' <span class="page active">'.$i.'</span> '; 
			     }else{
			          echo '<div class="page"><a href="sortie.php?page='.$i.$listParam.'">'.$i.'</div></a> ';
			     }
			}
			?> 
		</div>  
                 
                   </div><!-- fin bloc page -->  

Re: pagination

par xTG » 24 juil. 2014, 08:50

Tu as un script Javascript qui traite un format json, ton script php renvoi un format plain/text.
Ou alors j'ai pas compris le lien entre les différents scripts, le nom des fichiers aiderai.

Re: pagination

par yoann38 » 24 juil. 2014, 00:08

Commen ca quel est le lien ?