[RESOLU] Pagination et script

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 et script

Re: Pagination et script

par yoann38 » 30 juil. 2014, 21:30

re, oui ma pagination marche sur la page sur la page par default c'est à dire : http://lasortie.fr/sortie.php?region=22 mais pas sur les filtre ( forcément elle n'apparait meme pas puisque le js n'ai pas mis en place et je ne sais pas comment faire).

Je vais regardé pour refaire la div de pagination mais quel est le problème exactement sur cette div, merci encore

Re: Pagination et script

par Elie » 30 juil. 2014, 21:26

Déjà tu arrives a faire marcher le script de pagination ?
Si oui apres je vais te trouver comme le faire marcher une fois que t'as cliqué sur un onglet.

Encore une fois je te conseille de réecrire le bloc <div class="pagination"></div> a chaque update et donc de gerer tout ca dans le fichier rechercheAjax.php

Re: Pagination et script

par yoann38 » 30 juil. 2014, 16:46

Bjr. Je sais qu il n y a rien. Tt simplement je ne vois comment faire pour afficher ma pagination apres avoir cliker sur un filtre as tu une solution ?
La pagination marche mais que sur la page par default ( celle quand l'utilisateur arrive ) et il faut "juste" intégrer ça dans le script js, mais je ne sais pas comment...

Pagination:
              <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> 
Le script js:
[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,
// 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 += '<a href="annonce_zoom.php?id='+sorties.id_loisirs+'"><input class="look pull-right" type="button" value="CONTINUER"></a></div></div></div>';

// Rajouter la pagination pour les filtres Aujourdhui, demain .... mais comment ?

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

}

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

Re: Pagination et script

par Elie » 30 juil. 2014, 16:38

Quand j'affiche les javascripts de ta page http://lasortie.fr/sortie.php?region=22, je ne vois rien qui a pagination()

[javascript]success: function (data) {
$('.pagination').pagination('redraw');
}[/javascript]

redraw - The pagination is drawn again using the existing settings. (useful after you have destroyed a pagination for example)

Si tu regardes sur mon site, je refait le bloc de pagination a chaque rechargement en fait : http://www.subsynchro.com/tous-les-film ... asc/nb/50/

PS : Je viens de voir que mon url rewriting ne marche pas !

Re: Pagination et script

par yoann38 » 29 juil. 2014, 23:28

Salut j'ai regardé le code d'ailleurs merci parceque ça du prendre un peu de temps quand même.
Celui ci à les memes fonctions que le mien mais en + court.
Mon code à "l'avantage" d'être déjà à ma convenance, les dates, taille du descriptif, liens établies.... et ça m'évite de tout reprendre, ceci dit
ce que je recherche moi c'est solutionner mon problème de pagination.

La pagination içi dans ma page news.php ( marche sur la page quand l'utilisateur arrive mais dès qu'il clik sur un filtre ça ne marche plus ). donc je pense au problème js
   <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>  

Le JS ou il faut intégrer je pense:
[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,
// 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 += '<a href="annonce_zoom.php?id='+sorties.id_loisirs+'"><input class="look pull-right" type="button" value="CONTINUER"></a></div></div></div>';

// la on integre la pagination...mais comment ?
// On ajoute l'HTML préparé à la page
$('#bloc_page').append(html);
}
}
});
}
</script>
[/javascript]

Re: Pagination et script

par Elie » 29 juil. 2014, 22:25

Déjà je fais les boutons au propre parce que on est moderne !
<ul class="nav nav-tabs">
 <li class="active"><a href="#home" data-du="" data-au="" data-toggle="tab" >Toutes</a></li>
 <li><a href="#profile" data-du="<?php echo date('Y-m-d'); ?>" data-au="<?php echo date('Y-m-d'); ?>" data-toggle="tab">Aujourd'hui</a></li>
 <li><a href="#messages" data-du="<?php echo date('Y-m-d', strtotime('+1 day')); ?>" data-au="<?php echo date('Y-m-d', strtotime('+1 day')); ?>" data-toggle="tab">Demain</a></li>
 <li><a href="#settings" data-du="<?php echo date('Y-m-d', strtotime('Saturday')); ?>" data-au="<?php echo date('Y-m-d', strtotime('Sunday')); ?>" data-toggle="tab">Ce week-end</a></li>
</ul>
On simplifie le JS :

[javascript]$(document).ready(function(){

// On donne une action dès qu'on clique sur un lien des nav
$('.nav-tabs li a').on('click', function(e) {

e.preventDefault(); // On annule le fait d'avoir cliqué sur le lien.

var du = $(this).attr('data-du');
var au = $(this).attr('data-au');

$.ajax({
type: 'GET',
url: 'include/rechercheAjax.php',
data: 'du='+du+'&au='+au,
processData: true,
async: false,
success: function (data) {
$('#bloc_page').html(data);
}
});
});

});[/javascript]

Et on gère l'affichage des informations dans la page recherche
<?php

	// Il faut rajouter ici les identifiants de connexion

	$requete = "SELECT * FROM `loisirs` WHERE `date_fin_sortie` > NOW() AND `valide` = 1";
	$requete .= !empty($_GET['du']) && !empty($_GET['au']) ? " AND DATE_FORMAT(`date_debut_sortie`, '%Y-%m-%d')	BETWEEN '".$_GET['du']."' AND '".$_GET['aud']."'" : NULL;
	$req = mysql_query($requete);
    while($line = mysql_fetch_array($req)){	
	
echo '<div class="col-md-4 col-sm-6 marg15">
 <div class="wrap"><a href="add_favoris.php?idfav='.$line['id_loisirs'].'" >
  <div class="corner">FAVORIS</div></a>
  <a href="annonce_zoom.php?id='.$line['id_loisirs'].'">'."\n";
echo !empty($line['photo']) ? '  <img class="img-responsive" src="img/annonce/'.$line['photo'].'" ></a>'."\n" : NULL;
echo '  <h3>'.$line['titre'].'</h3>
   <p class="desc">'.$line['description'].'</p>
   <hr><div class="utiles">
   <p class="pull-right pad10">'.$line['date_debut_sortie'].'</p>
   <p class="city pull-left pad10"><i class="fa fa-map-marker"></i> '.$line['city'].'</p></div>
   <input class="look pull-right" type="button" value="CONTINUER"><a href="annonce_zoom.php?id='.$line['id_loisirs'].'"></a>
  </div>
 </div>
</div>'."\n";

	}
	
?>
Je m'arrete deja la pour te montrer ma logique car sans acces à la source reelement c'est un peu compliqué !

Re: Pagination et script

par yoann38 » 29 juil. 2014, 12:56

Bonjour Elie,
Grand merci à toi si tu est allé sur mon site pour voir du coup le problème de pagination et que tu as trainé un peu dessus, tu as du voir que j'ai juste ce petit soucis à régler afin de pouvoir mettre mon site en ligne.
Grand merci à toi.
Je répond rapidement je suis non stop sur le fofo car j'atends avec impatience la solution, je suis au bout du rouleau la :/

Si tu a besoin des fichiers pour voir ça fait le moi savoir et on verra via skype ou email, si il le faut, merci encore

Re: Pagination et script

par Elie » 29 juil. 2014, 12:15

Je gèrerai l'affichage html dans le fichier PHP plutôt...
Je vais regarder ça en détail ce soir

Re: Pagination et script

par yoann38 » 29 juil. 2014, 10:44

Donc en fait je pensé rajouté quelque chose comme:

[javascript]html += '<div class="pagination"></div>';[/javascript]
Mais comme qui dirai il manque un je ne sais quoi, je suis vraiment bloqué merci encore pour votre aide à tous ;)

dans mon script:
[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>';
html += '<div class="pagination"></div>';


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

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

Re: Pagination et script

par yoann38 » 26 juil. 2014, 11:05

Vu que le sujet est ouvert je ne sais pas trop sur lequel répondre mais voici l'adresse comme demandé:
http://lasortie.fr/sortie.php?region=22

Re: Pagination et script

par xTG » 25 juil. 2014, 13:03

Le sujet initial est ici : php-debutant/pagination-t271637.html
Son problème étant plutôt du javascript je lui ai conseillé de poster ici.

Il intègre en fait deux scripts.
L'un qui affiche les news avec pagination PHP. (fonctionnel à priori)
Et l'autre qui filtre les news en les récupérant via Ajax mais qui ne possède pas de pagination.
Et il souhaiterai garder la pagination malgré le système de filtres.

Re: Pagination et script

par Elie » 25 juil. 2014, 12:10

Hello,

Tu peux mettre la page en ligne, je vais te dire si ca vient du javascript :)

Pagination et script

par yoann38 » 24 juil. 2014, 17:39

Salut.
Je vais tacher d'être explicite dans mon problème. Je n'arrive pas à afficher ma pagination au seins des mes pages.
Je pense que le problème vien du js il faut intégrer la pagination ds le JS mais la je suis perdu. merci pour le coup de main.
Sinan il y a ce système mais faire les links ça va faire en sorte que ça marche c'est autre chose. http://flaviusmatis.github.io/simplePagination.js/

J'ai une page avec la pagination (recherche.php)
<?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);
?>
J'ai une page qui me permet d'afficher les news (news.php)
Dans la page news.php
J'appele ma pagination avec
<?php include("include/recherche.php"); ?>
La partie JS qui nous permet de traiter et d'analyser le bouton sur lequel à cliqué l'utilisateur ( test1,test2,...)
[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,
// 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 bouton du js:
[javascript]
<ul class="nav nav-tabs">
<li class="active"><a href="#home" onclick="javascript:chargerDonnees(0);" data-toggle="tab" >Toutes</a></li>
<li><a href="#profile" onclick="javascript:chargerDonnees(1);" data-toggle="tab">Aujourd'hui</a></li>
<li><a href="#messages" onclick="javascript:chargerDonnees(2);" data-toggle="tab">Demain</a></li>
<li><a href="#settings" onclick="javascript:chargerDonnees(3);" data-toggle="tab">Ce week - end</a></li>
</ul>
[/javascript]

Et la j'affiche les news ainsi que le script de la 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> 
Et là, la partie rechercheajax.php
<?php

switch($_GET['bouton']) {
	case 0:
		//Si l'utilisateur clique sur "Toutes les annonces", il n'y a pas de filtres
		$requete = "SELECT * FROM loisirs where date_fin_sortie > NOW() and valide = 1";
		break;
	case 1:
		//Si l'utilisateur clique sur "Aujourd'hui", on n'affiche que les sorties dont la date de début est celle du jour courant
		$date = new DateTime();
		//Pour que les sorties soient retournées quelle que soit l'heure prévue, on formate la date en s'arrêtant au niveau du jour
		$requete = "SELECT * FROM loisirs WHERE date_format( `date_debut_sortie`, '%Y-%m-%d' ) = '".$date->format('Y-m-d')."' and valide = 1";
		break;
	case 2:
		//Si l'utilisateur clique sur "Demain", on n'affiche que les sorties dont la date de début est celle de demain
		$date = new DateTime();
		//On ajoute un jour
		$date->add(new DateInterval('P1D'));
		//Pour que les sorties soient retournées quelle que soit l'heure prévue, on formate la date en s'arrêtant au niveau du jour
		$requete = "SELECT * FROM loisirs WHERE date_format( `date_debut_sortie` , '%Y-%m-%d' ) = '".$date->format('Y-m-d')."' and valide = 1";
		break;
	case 3:
		$date = new DateTime();
		$date2 = new DateTime();
		$jour = (int)$date->format('w');
		$date->add(new DateInterval('P'.(6-$jour).'D'));
		$date2->add(new DateInterval('P'.(6-$jour+1).'D'));
		$requete = "SELECT * FROM loisirs WHERE date_format( `date_debut_sortie` , '%Y-%m-%d' ) between '".$date->format('Y-m-d')."' and '".$date2->format('Y-m-d')."' and valide = 1";
		// On calcule la date de ce week-end
		break;
	default:
		$requete = "SELECT * FROM loisirs where date_fin_sortie > NOW() and valide = 1";
		break;
}