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 :

Problème de pagination


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut Problème de pagination
    Bonjour ,
    j'ai un problème pour faire une pagination , j'ai codé un moteur de recherche php / xml qui recupere des annonces , j'arrive a limité le nombre d'annonce par page et a crée les liens vers les autres page mais le probleme lorsque je clic sur la page suivante("http://localhost/tests/recherche.v06.php?page=2" ) j'ai ce message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Notice: Undefined index: codepostal in C:\wamp\www\tests\recherche.v06.php on line 28
     
    Notice: Undefined index: budget_min in C:\wamp\www\tests\recherche.v06.php on line 29
     
    Notice: Undefined index: budget_max in C:\wamp\www\tests\recherche.v06.php on line 30
     
    Notice: Undefined index: choix in C:\wamp\www\tests\recherche.v06.php on line 31
     
    Notice: Undefined index: surface_min in C:\wamp\www\tests\recherche.v06.php on line 32
    les lignes correspondantes sont celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $codepostal_ville = strtoupper($_POST['codepostal']);
    $budget_min = $_POST['budget_min'];
    $budget_max = $_POST['budget_max'];
    $surface_min = $_POST['surface_min'];

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    C'est normal car tu ne dois pas remettre les données dans un formulaire avant de passer à la page suivante donc tu perds les données contenues dans $_POST.

    Le plus simple c'est peut-être d'utiliser des variables de session : au chargement de ta première page tu récupères tes données en POST et tu les mets dans la SESSION, ensuite quand tu navigueras entre tes pages les données seront persistantes dans l'objet SESSION.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    J'ai essayé de creer une session pour mes variable sa me fait meme message d'erreur j'arrive vraiment pas a transmettre vers l'autre page je poste mon code au cas ou
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    <?php
     
    $doc = new DOMDocument();
    $doc->Load("Ludwig6.XML");
     
    //creation d'un objet xpath, utiliser pour la requete xpath
    $xpath = new DOMXPath($doc);
     
     
    //declaration des variables
    $codepostal_ville = strtoupper($_POST['codepostal']);
    $budget_min = $_POST['budget_min'];
    $budget_max = $_POST['budget_max'];
    $choix = $_POST['choix'];
    $surface_min = $_POST['surface_min'];
     
    $nbResultat = 0;
    $i = 0 ;
    $resultat_categorie;
    $resultat_prix;
     
     
    if($codepostal_ville != NULL)
    {
    	$query = "/BIENS/BIEN";
     
    	if($choix == "vente")
    	{
    		if($budget_max != NULL )
    		{
    			$query = $query."[PRIX <= $budget_max]";
    		}
     
    		else if($budget_min != NULL)
    		{
    			$query = $query."[PRIX >= $budget_min]";
    		}
    		else
    		{
    			$query = "/BIENS/BIEN[PRIX]";
    		}
     
    		if($surface_min != NULL)
    		{
    			$query = $query."[SURF_HAB >= '$surface_min' ]";
    		}
     
    		//execute la requete
    		$noeuds_resultats = $xpath->query($query);
     
    		//parcours les resultats
    		foreach ($noeuds_resultats as $noeud)
    		{
    			unset($results);
    			foreach($noeud->childNodes as $noeud_courant)
    			{
    				if ($noeud_courant->nodeType == XML_TEXT_NODE) continue;
    				$results[$noeud_courant->nodeName] = $noeud_courant->nodeValue;
     
     
    			}
     
    			$resultat_categorie = strtoupper($results['CATEGORIE']); //On passe en majuscule toute les categories // OK
    			$resultat_prix = $results['PRIX'];  // OK
    			$resultat_cpoffre = $results['CP_OFFRE'];// OK
    			$resultat_surfhab = $results['SURF_HAB']; // OK
    			$resultat_textfr = $results['TEXTE_FR'];// OK
    			$resultat_nbpiece = $results['NB_PIECES'];// OK
    			$resultat_nbchambre = $results['NB_CHAMBRES'];// OK
    			$resultat_ville = strtoupper($results['VILLE_OFFRE']);
    			//AFFICHAGE PHOTO => CODE SOCIETE-CODE SITE-NO ASP-a.jpg
    			$resultat_codesociete = $results['CODE_SOCIETE'];
    			$resultat_codesite = $results['CODE_SITE'];
    			$resultat_n0asp = $results['NO_ASP'];
     
    			$resultat_cuisine = $results['CUISINE'];
    			$resultat_salledebain = $results['NB_SDB'];
    			$resultat_etage = $results['NB_ETAGES'];
    			$resultat_anneeconst = $results['ANNEE_CONS']; 
    			$resultat_salledeau = $results['NB_SE']; 
    			$resultat_photo = "$resultat_codesociete-$resultat_codesite-$resultat_n0asp-a.jpg"; //PREMIER PHOTO DU DOSSIER$
    			$resultat_date = $results['DATE_OFFRE'];
     
     
    			$categorie_encode = urlencode($resultat_categorie);
    			$ville_encode = urlencode($resultat_ville);
    			$annonce_encode = urlencode($resultat_textfr);
    			$cuisine_encode = urlencode($resultat_cuisine);
     
     
    			foreach($_POST['mon_champ'] as $position=>$value ) //RECHERCHE PAR CATEGORIE 
    			{
    				if(isset($_POST['ma_piece']))
    				{
    					foreach($_POST['ma_piece'] as $position=>$value_mapiece) //RECHERCHE PAR PIECE
    					{
    						if(isset($_POST['ma_chambre']))
    						{
    							foreach($_POST['ma_chambre'] as $position=>$value_machambre) //RECHERCHE PAR CHAMBRE
    							{
    								/*RECHERCHE PAR CODE POSTAL & PAR CATEGORIE PAR MOT CLE*/
    								if(substr_count($resultat_cpoffre,$codepostal_ville)>0 && substr_count($resultat_categorie,$value)>0 && substr_count($resultat_nbpiece,$value_mapiece)>0 && substr_count($resultat_nbchambre,$value_machambre)>0)
    								{
     
    									$lien2[$nbResultat]= "<div id=gras>$resultat_ville($resultat_cpoffre) $resultat_categorie $resultat_nbpiece piece de $resultat_surfhab cm&sup2 env<div id=prix> $resultat_prix &euro F.A.I </div></div> <br /><br /> <img src=./photo/$resultat_photo> <p>$resultat_textfr</p> <br /> <div id = date > mise a jour le : $resultat_date </div><br/><br /><br />";				
    									$nbResultat++;
    								}
    							}
    						}	
    					}
    				}
    			}
    		}
    	}
    	$messagesParPage=5;
    	$nombreDePages=ceil($nbResultat/$messagesParPage);
    	if(isset($_POST['page'])) // Si la variable $_POST['page'] existe...
    	{
    		 $pageActuelle=intval($_POST['page']);
     
    		 if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
    		 {
    			  $pageActuelle=$nombreDePages;
    		 }
    	}
    	else // Sinon
    	{
    		 $pageActuelle=1; // La page actuelle est la n°1    
    	}
    	$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
     
     
    	for($i = $premiereEntree ; $i < ($pageActuelle*$messagesParPage) ; $i++)
    	{	
    		echo"<div id=tableau>";		
    		echo $lien2[$i];
    		echo"</div>";
     
    	}
     
    	echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    	for($n=1; $n<=$nombreDePages; $n++) //On fait notre boucle
    	{
    		 //On va faire notre condition
    		 if($n==$pageActuelle) //Si il s'agit de la page actuelle...
    		 {
    			 echo ' [ '.$n.' ] '; 
    		 }	
    		 else //Sinon...
    		 {
    			  echo ' <a href="recherche.v06.php?page='.$n.'">'.$n.'</a> ';
    		 }
    	}
    	echo '</p>';
     
    		if($nbResultat == 0)
    		printf("Pas de résultat");
     
     
     
    }

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Et quelle est cette erreur ?

    Dans ton code je ne vois pas d'utilisation de $_SESSION ni de session_start() au début du code c'est normal ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    j'ai regarder un peu sur internet comment résoudre le problème apparemment lorsque je passe a la page 2 il oublie tous ce qu'il y a dans mes $_POST et donc ils utilisent des $_REQUEST a la place des $_POST j'ai essayé mais j'ai toujours le même problème a ma page 2

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par misakilou Voir le message
    j'ai regarder un peu sur internet comment résoudre le problème apparemment lorsque je passe a la page 2 il oublie tous ce qu'il y a dans mes $_POST
    oui c'est ce que j'ai déjà répondu plus haut

    $_REQUEST remplace $_POST ou $_GET mais pas $_SESSION il me semble donc ça changera rien...

    Après si on te parle des $_SESSION et que tu veux pas t'en servir et que tu ne réponds pas aux questions on va pas pouvoir faire grand chose pour toi...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    voila mon code avec les session :

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    <?php
     session_start();//debut session
    $doc = new DOMDocument();
    $doc->Load("Ludwig6.XML");
     
    //creation d'un objet xpath, utiliser pour la requete xpath
    $xpath = new DOMXPath($doc);
     
     
    //declaration des variables
    $codepostal_ville = strtoupper($_POST['codepostal']);
    $budget_min = $_POST['budget_min'];
    $budget_max = $_POST['budget_max'];
    $choix = $_POST['choix'];
    $surface_min = $_POST['surface_min'];
     
    $_SESSION['codepostal'] = $codepostal_ville;
    $_SESSION['budget_min'] = $budget_min;
    $_SESSION['budget_max'] = $budget_max;
    $_SESSION['choix'] = $choix;
    $_SESSION['surface_min'] = $surface_min;
     
    $nbResultat = 0;
    $i = 0 ;
    $resultat_categorie;
    $resultat_prix;
     
     
    if($codepostal_ville != NULL)
    {
    	$query = "/BIENS/BIEN";
     
    	if($choix == "vente")
    	{
    		if($budget_max != NULL )
    		{
    			$query = $query."[PRIX <= $budget_max]";
    		}
     
    		else if($budget_min != NULL)
    		{
    			$query = $query."[PRIX >= $budget_min]";
    		}
    		else
    		{
    			$query = "/BIENS/BIEN[PRIX]";
    		}
     
    		if($surface_min != NULL)
    		{
    			$query = $query."[SURF_HAB >= '$surface_min' ]";
    		}
     
    		//execute la requete
    		$noeuds_resultats = $xpath->query($query);
     
    		//parcours les resultats
    		foreach ($noeuds_resultats as $noeud)
    		{
    			unset($results);
    			foreach($noeud->childNodes as $noeud_courant)
    			{
    				if ($noeud_courant->nodeType == XML_TEXT_NODE) continue;
    				$results[$noeud_courant->nodeName] = $noeud_courant->nodeValue;
     
     
    			}
     
    			$resultat_categorie = strtoupper($results['CATEGORIE']); //On passe en majuscule toute les categories // OK
    			$resultat_prix = $results['PRIX'];  // OK
    			$resultat_cpoffre = $results['CP_OFFRE'];// OK
    			$resultat_surfhab = $results['SURF_HAB']; // OK
    			$resultat_textfr = $results['TEXTE_FR'];// OK
    			$resultat_nbpiece = $results['NB_PIECES'];// OK
    			$resultat_nbchambre = $results['NB_CHAMBRES'];// OK
    			$resultat_ville = strtoupper($results['VILLE_OFFRE']);
    			//AFFICHAGE PHOTO => CODE SOCIETE-CODE SITE-NO ASP-a.jpg
    			$resultat_codesociete = $results['CODE_SOCIETE'];
    			$resultat_codesite = $results['CODE_SITE'];
    			$resultat_n0asp = $results['NO_ASP'];
     
    			$resultat_cuisine = $results['CUISINE'];
    			$resultat_salledebain = $results['NB_SDB'];
    			$resultat_etage = $results['NB_ETAGES'];
    			$resultat_anneeconst = $results['ANNEE_CONS']; 
    			$resultat_salledeau = $results['NB_SE']; 
    			$resultat_photo = "$resultat_codesociete-$resultat_codesite-$resultat_n0asp-a.jpg"; //PREMIER PHOTO DU DOSSIER$
    			$resultat_date = $results['DATE_OFFRE'];
     
     
    			$categorie_encode = urlencode($resultat_categorie);
    			$ville_encode = urlencode($resultat_ville);
    			$annonce_encode = urlencode($resultat_textfr);
    			$cuisine_encode = urlencode($resultat_cuisine);
     
     
    			foreach($_POST['mon_champ'] as $position=>$value ) //RECHERCHE PAR CATEGORIE 
    			{
    				if(isset($_POST['ma_piece']))
    				{
    					foreach($_POST['ma_piece'] as $position=>$value_mapiece) //RECHERCHE PAR PIECE
    					{
    						if(isset($_POST['ma_chambre']))
    						{
    							foreach($_POST['ma_chambre'] as $position=>$value_machambre) //RECHERCHE PAR CHAMBRE
    							{
    								/*RECHERCHE PAR CODE POSTAL & PAR CATEGORIE PAR MOT CLE*/
    								if(substr_count($resultat_cpoffre,$codepostal_ville)>0 && substr_count($resultat_categorie,$value)>0 && substr_count($resultat_nbpiece,$value_mapiece)>0 && substr_count($resultat_nbchambre,$value_machambre)>0)
    								{
     
    									$lien2[$nbResultat]= "<div id=gras>$resultat_ville($resultat_cpoffre) $resultat_categorie $resultat_nbpiece piece de $resultat_surfhab cm&sup2 env<div id=prix> $resultat_prix &euro F.A.I </div></div> <br /><br /> <img src=./photo/$resultat_photo> <p>$resultat_textfr</p> <br /> <div id = date > mise a jour le : $resultat_date </div><br/><br /><br />";				
    									$nbResultat++;
    								}
    							}
    						}	
    					}
    				}
    			}
    		}
    	}
    	$messagesParPage=5;
    	$nombreDePages=ceil($nbResultat/$messagesParPage);
    	if(isset($_POST['page'])) // Si la variable $_POST['page'] existe...
    	{
    		 $pageActuelle=intval($_POST['page']);
     
    		 if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
    		 {
    			  $pageActuelle=$nombreDePages;
    		 }
    	}
    	else // Sinon
    	{
    		 $pageActuelle=1; // La page actuelle est la n°1    
    	}
    	$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
     
     
    	for($i = $premiereEntree ; $i < ($pageActuelle*$messagesParPage) ; $i++)
    	{	
    		echo"<div id=tableau>";		
    		echo $lien2[$i];
    		echo"</div>";
     
    	}
     
    	echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    	for($n=1; $n<=$nombreDePages; $n++) //On fait notre boucle
    	{
    		 //On va faire notre condition
    		 if($n==$pageActuelle) //Si il s'agit de la page actuelle...
    		 {
    			 echo ' [ '.$n.' ] '; 
    		 }	
    		 else //Sinon...
    		 {
    			  echo ' <a href="recherche.v06.php?page='.$n.'">'.$n.'</a> ';
    		 }
    	}
    	echo '</p>';
     
    		if($nbResultat == 0)
    		printf("Pas de résultat");
     
     
     
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Struts-Layout] Problème de pagination
    Par Haplo2006 dans le forum Struts 1
    Réponses: 1
    Dernier message: 23/02/2007, 18h09
  2. Problème de pagination avec un GridView
    Par Perceuse-Killer dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/02/2007, 13h30
  3. [DisplayTag] Problème de pagination
    Par questionneuse dans le forum Taglibs
    Réponses: 6
    Dernier message: 21/08/2006, 16h54
  4. [MySQL] Problème de pagination dans un script.
    Par Scurz dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/08/2006, 12h47
  5. [SQL] Problème de pagination avec tableau
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/05/2006, 22h16

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