Erreur code pagination

teler Messages postés 93 Statut Membre -  
teler Messages postés 93 Statut Membre -
Bonjour,

voilà je débute en php, je fais un site immobilier dans lequel pour l'internaute, il y a un formulaire de recherche d'annonces immobiliere pour l'internaute.

Une fois remplis, l'internaute arrive sur une autre page qui traite la recherche et affiche les annonces.

jusque là tout est ok, sauf que je veux limiter mes resultats d'annonces à un certain nombre et faire un systeme de pagination pour les annonces qu'il a. j'ai adapter mon code par rapport à un code que j'ai trouvé sur un tutoriel mais ça marche partiellement. Sur la premiere page d'affichage des reponses pas de soucis, en bas il m'indique que la totalité des annonces tiens sur trois pages par exemple. Et quand je click pour aller page 2. il me met cette erreur:

Notice: Undefined index: trans in C:\Users\nicolas\Desktop\apprentissage php\traitementBIS.php on line 73

Notice: Undefined index: choix in C:\Users\nicolas\Desktop\apprentissage php\traitementBIS.php on line 74

Notice: Undefined index: nombre in C:\Users\nicolas\Desktop\apprentissage php\traitementBIS.php on line 75

Notice: Undefined index: mini in C:\Users\nicolas\Desktop\apprentissage php\traitementBIS.php on line 77

Notice: Undefined index: maxi in C:\Users\nicolas\Desktop\apprentissage php\traitementBIS.php on line 78

Notice: Undefined index: mini2 in C:\Users\nicolas\Desktop\apprentissage php\traitementBIS.php on line 80

Notice: Undefined index: maxi2 in C:\Users\nicolas\Desktop\apprentissage php\traitementBIS.php on line 81

Notice: Undefined index: animal in C:\Users\nicolas\Desktop\apprentissage php\traitementBIS.php on line 84

ça correspond à mes valeurs en haut de mon code. ( si le tel champs est remplis etc)

j'en conclu donc que sur mon lien de pagination en bas de page je dois transmettre des données.



voici mon code si quelqu'un peut m'aider. merci


<?php
$mareq = 'WHERE 1';


$trans = $_POST['trans'];
$choix = $_POST['choix'];
$nombre = $_POST['nombre'];

$surfmini = $_POST['mini'];
$surfmaxi = $_POST['maxi'];

$prixmini = $_POST['mini2'];
$prixmaxi = $_POST['maxi2'];


$animal = $_POST['animal'];



if($trans != null) $mareq.=" AND idtrans = ".$trans;

if($choix != null) $mareq.=" AND catbat = ".$choix;
if($nombre != null) $mareq.=" AND nbre = ".$nombre;

if($surfmini != null) $mareq.=" AND surf >= ".$surfmini;
if($surfmaxi != null) $mareq.=" AND surf <= ".$surfmaxi;


if($prixmini != null) $mareq.=" AND prix >= ".$prixmini;
if($prixmaxi != null) $mareq.=" AND prix <= ".$prixmaxi;

if($animal != null) $mareq.=" AND type LIKE '%".$animal."%'";



$messagesParPage=1; //Nous allons afficher 5 messages par page.

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM produits '.$mareq); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.


//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page']))
// Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']&&$_GET['trans']&&$_GET['choix']&&$_GET['nombre']&&$_GET['surf']&&$_GET['prix']&&$_GET['animal']);

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

// La requête sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT * FROM produits '.$mareq.' ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($data=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
{
//Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
//De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
echo
'<div class="hautmarge"></div><div class="bas2"><div style="padding-bottom:20px"></div>
<form method="post" action="traitement.php" class="formulaire">
<table width="370" height="140">
<tr>
<td>'.$data['type'].'</td>
<td></td>
</tr>
<tr>
<td>'.$data['nbre'].' pièces '.$data['surf'].' m2</td>
<td align="right">'.$data['prix'].' €</td>
</tr>


<tr>
<td><a href="annonce.php?ref='.$data['id'].' &prix='.$data['prix'].' &photo='.$data['photo'].' &photo2='.$data['photo2'].' &photo3='.$data['photo3'].'&photo4='.$data['photo4'].' &type='.$data['type'].' &surf='.$data['surf'].' &nbre='.$data['nbre'].' &description='.$data['description'].'">'.$data['description'].'</a></td>
<td align="right"> <a href="photos_annonces/'.$data['photo'].'" rel="shadowbox" title="'.$data['nbre'].' pièces, '.$data['surf'].' m2" >
<img height="100px" class="no_cadre" src="photos_annonces/' .$data['photo']. '"/></a></td>
</tr>
<tr><td></td><td align="right">réf : '.$data['id'].'</td></tr>
</table></form></div><div style="padding-bottom:20px"></div>';

}





echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="traitementBIS.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';


?>
A voir également:

2 réponses

Utilisateur anonyme
 
Salut,
Bon j'ai pas tout lu ton code mais suivant ce que tu as dit tu ne recupere pas tes variables :
$trans = $_POST['trans'];
$choix = $_POST['choix'];
$nombre = $_POST['nombre'];

$surfmini = $_POST['mini'];
$surfmaxi = $_POST['maxi'];

$prixmini = $_POST['mini2'];
$prixmaxi = $_POST['maxi2'];


$animal = $_POST['animal'];
dans la page suivante ce qui est normal.
Les variables $_POST servent pour la recuperation de data depuis un formulaire. Donc si tu les mets comme ca dans ta page c'est pas trop top. Il faudrait plutot faire :
if (!empty($_POST)) //verification de postage de formulaire
{
//mettre les variables recuperer par post de form
$trans = $_POST['trans'];
$choix = $_POST['choix'];
$nombre = $_POST['nombre'];
$surfmini = $_POST['mini'];
$surfmaxi = $_POST['maxi'];
$prixmini = $_POST['mini2'];
$prixmaxi = $_POST['maxi2'];
}
else
{
//mettre l'initialisation des variables
$trans="";$choix="";
}
Apres comme tu me dis que tu n'arrive pas a passer sur la deuxieme page c'est normal car tes variable ($trans,...) sont vides. Pour regler ca tu dois lorsque tu recupere les informations en postage de formulaire les mettre dans les session :
if (!empty($_POST))
{
//mettre les variables recuperer par post de form
$trans = $_POST['trans'];
$choix = $_POST['choix'];
$nombre = $_POST['nombre'];
$surfmini = $_POST['mini'];
$surfmaxi = $_POST['maxi'];
$prixmini = $_POST['mini2'];
$prixmaxi = $_POST['maxi2'];
$_SESSION["trans"] = $trans;
$_SESSION["choix"] = $choix; //ainsi de suite avec toutes les variables
}
else
{
//mettre l'initialisation des variables
$trans="";$choix="";
}

Enfin tu a besoin que dans la page deux il y ait une initialisation des variables a la valeur de la session
if (!empty($_POST))
{
//mettre les variables recuperer par post de form
$trans = $_POST['trans'];
$choix = $_POST['choix'];
$nombre = $_POST['nombre'];
$surfmini = $_POST['mini'];
$surfmaxi = $_POST['maxi'];
$prixmini = $_POST['mini2'];
$prixmaxi = $_POST['maxi2'];
$_SESSION["trans"] = $trans;
$_SESSION["choix"] = $choix; //ainsi de suite avec toutes les variables

}
else
{
//mettre l'initialisation des variables
$trans="";$choix="";
//je verifie que les sessions ne sont pas vides
if (!empty($_SESSION))
{
$trans = $_SESSION["trans"]; //ainsi de suite.
}
}

Voila bon courage
0
teler Messages postés 93 Statut Membre 5
 
Merci ton code marche, seulement avant j'avais un code qui me permettait de trier ma requette sql selon la recherche spécifier sur le formulaire.

à savoir :


$mareq = 'WHERE 1';


$trans = $_POST['trans'];
$choix = $_POST['choix'];
$nombre = $_POST['nombre'];

$surfmini = $_POST['mini'];
$surfmaxi = $_POST['maxi'];

$prixmini = $_POST['mini2'];
$prixmaxi = $_POST['maxi2'];


$animal = $_POST['animal'];



if($trans != null) $mareq.=" AND idtrans = ".$trans;

if($choix != null) $mareq.=" AND catbat = ".$choix;
if($nombre != null) $mareq.=" AND nbre = ".$nombre;

if($surfmini != null) $mareq.=" AND surf >= ".$surfmini;
if($surfmaxi != null) $mareq.=" AND surf <= ".$surfmaxi;


if($prixmini != null) $mareq.=" AND prix >= ".$prixmini;
if($prixmaxi != null) $mareq.=" AND prix <= ".$prixmaxi;

if($animal != null) $mareq.=" AND type LIKE '%".$animal."%'";

et plus bas

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM produits '.$mareq); //



vu que je ne suis pas bon en php, avec ton code je ne sais pas comment adapter le mien pour trier la requette.

Voilà je sent que j'y suis presque mais bon je bloque.
Si t'as le temps de jeter un oeil! merci en tt cas!
0