IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Système de pagination avec date dans l'URL.


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut Système de pagination avec date dans l'URL.
    Bonsoir,

    Je créer un script de pagination en PHP reprenant ceci : http://www.lesgourmetsexplorateurs.com/degustation.php

    Comme vous pouvez le voir, les flèches droite et gauche permettent de passer aux évènement suivants ou précédents.

    Autre chose, si jamais je me trouve sur la page suivante : http://www.lesgourmetsexplorateurs.c...tion_10-12.php

    On sera sur la dégustation du 10 décembre. Si l'envie me prend de cliquer sur à l'affiche, je suis toujours sur la même dégustation du 10 décembre.

    J'avais fait une première version d'un script de pagination qui remplissait parfaitement la première condition. Sauf que je n'avais pas prévu que le faite d'intégrer la deuxième condition à mon script le ferait totalement modifié. :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    require 'config.php';
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);
     
    $page = basename($_SERVER["SCRIPT_NAME"]);
     
    $nombre_news = mysql_query('SELECT COUNT(*) AS total FROM news WHERE categorie="'.$page.'"');
    $retour = mysql_fetch_assoc($nombre_news);
     
    $news_par_page = 1;
     
    if(isset($_GET['num_page'])){
    	$num_page = $_GET['num_page'];
    }
    else{
    	$num_page = 0;
    }
     
    $lecture = mysql_query('SELECT * FROM news WHERE categorie="'.$page.'" ORDER BY date DESC LIMIT '.$num_page.','.$news_par_page.'');
    while($row = mysql_fetch_assoc($lecture)){
    	$tableau_date = explode('-',$row['date']);
    	$timestamp = mktime(0,0,0,$tableau_date[1],$tableau_date[2],$tableau_date[0]);
     
    	$date = date('l j F Y',$timestamp);
     
    	$cible = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday','January','February','March','April','May','June','July','August','September','October','November','December');
    	$rempl = array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche','janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobtre','novembre','décembre',);
     
    	$date = str_replace($cible,$rempl,$date);
    	?>
            // Partie HTML [...]
    			<?php
    			if($num_page >= 0 && $num_page < $retour['total']-1){
    				$suivant = $num_page+1;
    				echo '<a href="'.$page.'?num_page='.$suivant.'" class="fleche_gauche"><img src="Boutons/Icone/pre.png" border="0" /></a>';
    			}
    			if($num_page > 0 && $num_page < $retour['total']){
    				$precedent = $num_page-1;
    				echo '<a href="'.$page.'?num_page='.$precedent.'" class="fleche_droite"><img src="Boutons/Icone/sui.png" border="0" /></a>';
    			}
    			?>
    	// Partie HTML [...]
    <?php
    }
    ?>
    Dans là seconde version, il me faudrait des dates à la place de numéros. J'ai testé pas mal de chose mais rien ne fonctionne...

    Si quelqu'un pourrait m'éclairer.

    Merci d'avance.

  2. #2
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    Hello, je n'ai pas trop compris la question :

    des dates à la place des numéros ? pk ?

    Ayant rapidemment lu le code, j'ai remarqué qu'il y'avait une conversion de format de dates en francais.
    Ca me parait pas optimal la facon de faire vu qu'il y'a des fonctions toutes prêtes pour ca :

    vu sur http://php.net/manual/en/function.date.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    To format dates in other languages, you should use the setlocale() and strftime()  functions instead of date().
    Si je vais sur http://www.lesgourmetsexplorateurs.c...tion_10-12.php et que je clique sur la banière, je reviens à l'index.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    Plop,

    Enfaite je dois réunir trois conditions dans la pagination :
    - Un bouton précédent et suivant afin de passer au évènement précédent et suivant...
    - Si l'envie me prend d'aller sur une autre page, on doit toujours rester sur la même date.
    - Et je veux que les pages soient identifiables par les URL lors de la transmission d'adresse par mail par exemple.

    Pour la fonction date, j'ai testé cette regex. Mais j'ai vu sur pas mal de forum qu'elle était bourré de bug suivant les hébergeurs. Et moi en local elle ne fonctionne pas.

    Merci.

    Edit : C'est pas la bannière où il faut cliquer mais sur une des 4 icônes de la roues.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    J'ai refais un script qui devrait fonctionner. Mais il ne fonctionne pas. :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <?php
    require 'config.php';
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);
     
    $page = basename($_SERVER["SCRIPT_NAME"]);
     
    if(isset($_GET['date'])){
    	$lecture = mysql_query('SELECT * FROM news WHERE categorie="'.$page.'" AND date="'.$_GET['date'].'" ORDER BY date ASC');
    }
     
    else{
    	$lecture = mysql_query('SELECT * FROM news WHERE categorie="'.$page.'" ORDER BY date ASC');
    	while($row = mysql_fetch_array($lecture)){
    		$tableau_date = explode('-',$row['date']);
    		$timestamp = mktime(0,0,0,$tableau_date[1],$tableau_date[2],$tableau_date[0]);
     
    		$date = date('l j F Y',$timestamp);
     
    		$cible = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday','January','February','March','April','May','June','July','August','September','October','November','December');
    		$rempl = array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche','janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobtre','novembre','décembre',);
     
    		$date = str_replace($cible,$rempl,$date);
    		?>
    		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    		<html xmlns="http://www.w3.org/1999/xhtml">
    		<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    		<title>Les Gourmets Explorateurs</title>
    		</head>
     
    		<body>
    			<div id="body2">
    				<a href="index.php" class="index"> </a> 
    				<div id="calendrier"><center>
    				<font face="Comic sans MS" size="2" color="#CC0000"><b><?php echo nl2br($date); ?></b></font>
    				</center></div>
    				<?php
    				if($row['date'] > reset($row)){
    					$precedent = prev($row['date']);
    					echo '<a href="'.$page.'?date='.$precedent.'" class="fleche_gauche"><img src="Boutons/Icone/pre.png" border="0" /></a>';
    				}
    				if($row['date'] < end($row)){
    					$suivant = next($row['date']);
    					echo '<a href="'.$page.'?date='.$suivant.'" class="fleche_droite"><img src="Boutons/Icone/sui.png" border="0" /></a>';
    				}
    				?>
    				<div id="titre">
    				<font face="Tahoma" size="3" color="#000066"><b></i></b>
    				<div id="textebas"><b><?php echo $row['titre']; ?></b></div>
    				</font>
    				</div>
    				<div id="cadre"  class="auto">
    				<font face="Tahoma" size="2" color="#000066"><br />
    				<?php echo nl2br($row['contenu']); ?>
    				</font>
    				</div>
    				<span class="Roue"><img src="Boutons/Roue/roue.png" /></span>
    				<a href="degustation.php" class="menu"></a>
    				<?php echo '<a href="degustation.php?date='.$row['date'].'"><img src="Boutons/Police/menu.png" id="Menu" border="0" /></a>' ?>
    				<a href="affiche.php" class="Affiche"> </a>
    				<a href="affiche.php"><img src="Boutons/Police/affiche.png" id="Affiche" border="0" /></a>
    				<a href="interview.php" class="inter"></a>
    				<a href="interview.php"><img src="Boutons/Police/interview.png" id="inter" border="0" /></a>
    				<a href="reservation.php" class="reservation"></a>     
    				<a href="#"><img src="Boutons/Police/reservation.png" id="Reservation" border="0" /></a>
    				<div id="DE"><img src="Boutons/Roue/de.png" /></div>
    				<div id="ED"><img src="Boutons/Roue/ed.png" /></div>
    				<div id="DA"><img src="Boutons/Roue/da.png" /></div>
    				<div id="AD"><img src="Boutons/Roue/ad.png" /></div>
    				<?php echo '<a href="pdf/'.$row['pdf'].'" class="pdf"> </a>'; ?>
    				<a href="index.php" class="Home" /> </a>
    				<a href="http://www.facebook.com/pages/Les-gourmets-explorateurs-de-Slow-Food-Paris-Mouffetard/208788453944?ref=search&sid=1033789250.2599145647..1" class="Reseau" /> </a>
    				<a href="degustation-construction.php" class="Thematique" /> </a>
    				<a href="pdf/recetteFromage1sf_ge.pdf" class="Carnet" /> </a>
    				<a href="degustation-construction.php" class="Evenements" /> </a>
    				<a href="degustation-construction.php" class="Dos" /> </a>
    			</div>
    		</body>
    		</html>
    	<?php
    	}
    }
    ?>
    Les flèchent ne s'affiche jamais.

    J'ai tenté de remplacer $row par $row['date'] ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    				<?php
    				if($row['date'] > reset($row)){
    					$precedent = prev($row['date']);
    					echo '<a href="'.$page.'?date='.$precedent.'" class="fleche_gauche"><img src="Boutons/Icone/pre.png" border="0" /></a>';
    				}
    				if($row['date'] < end($row)){
    					$suivant = next($row['date']);
    					echo '<a href="'.$page.'?date='.$suivant.'" class="fleche_droite"><img src="Boutons/Icone/sui.png" border="0" /></a>';
    				}
    				?>
    Les flèches s'affichent, mais j'ai ce message d'erreur qui s'affiche :


    Warning: reset() expects parameter 1 to be array, string given in D:\wamp\www\GourmetPHP\degustation.php on line 35

    Warning: end() expects parameter 1 to be array, string given in D:\wamp\www\GourmetPHP\degustation.php on line 39


    Et quand je clique sur une flèche, voilà l'url : degustation.php?date=

    Merci.

  5. #5
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    next, prev sont fait pr travailler avec des arrays, ils bougent la position du curseur dans l'array. $row est surement un array mais $row['date'] ne l'est pas.
    As-tu déja testé ta requête ? ds phpmyadmin pr exemple?. Ptet que la première erreur est là.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    Oui la requête fonctionne très bien.

    Tu sais comment faire pour prendre la date précédente ou suivante, si je ne peux pas utiliser next et prev ?

    Merci.

Discussions similaires

  1. Calculer l'âge avec dates dans Excel
    Par crosse9 dans le forum Excel
    Réponses: 9
    Dernier message: 06/01/2011, 14h52
  2. Comparaison Date avec Date dans une table avec Dlookup
    Par adrien.gendre dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/07/2007, 17h55
  3. Récupération de la date dans l'url
    Par sissi25 dans le forum ASP
    Réponses: 6
    Dernier message: 26/06/2006, 11h10
  4. Problème avec date dans requête
    Par alain94 dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2006, 07h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo