en progrès mais peu mieux faire

Répondre
Philippe GUEGAN
Messages : 108
Enregistré le : jeu. oct. 31, 2002 11:51 am
Localisation : Breizh
Contact :

en progrès mais peu mieux faire

Message par Philippe GUEGAN » mar. oct. 11, 2005 5:13 pm

Bon j'ai bien travaillé ta méthode, j'avais aussi regardé ce que je trouvais sur le net mais je suis bien obligé de revenir à ce que tu fais, il y a une certaine logique!!

J'arrive bien à séparer mes pages et a avoir 20 enre. par page.

Mais là ou ça se corse, c'est pour la 2ème page.

en fait, j'ai une première page avec un formulaire ou je choisis le prix.
Elle ouvre sur la page ou je travaille et je passe ma variable avec un $_post, ce qui me permet de faire une selection sur ma base.

Mais quand j'appuie sur le bouton suivant, il ne reconnait plus le $_post, et me recalcule la 2ème page de l'ensemble de la base . De plus il me rajoute à chaque fois qu'il le trouve:
Notice: Undefined index: ftot1 in c:\program files\easyphp1-7\www\vente\script\result11.php on line 13

Ce qui est assez logique et que je comprend :oops:
Mais je ne sais comment faire pour en fait transmettre la variable sur la nouvelle page.

Je te met mon code tout neuf
Philippe

*****************************************
T'as vu je commence à mettre des commentaires
*****************************************
<?php /* Date de création: 21/06/05 */
include_once ("globals.inc.php");
include_once ("fonctions.inc.php");
mysql_connect($serveur,$login,$motpasse) or die ("erreur de connexion au serveur ".mysql_error());
mysql_select_db($base) or die ("erreur de connexion a la base de données ".mysql_error());

$i=0;

//*********************************************
//Tous les enregistrements
//*********************************************
if ($_POST['ftot1'] == 0)
{

$que = " SELECT * FROM `biens_fr`" ;
$que1 = mysql_query($que) or die ("Requête incorrecte ".mysql_error());
$nbretotal = mysql_num_rows($que1);

$nbre=$nbrerecordpage; // Nbre d'enregistrements par page
if (!isset($pos)) $pos = 0; // Suit la position dans le fichier
if (!isset($sens)) $sens = "d"; // Suit le sens de naviguation

switch ($sens) {
case "d" :
if ($pos >= $nbre) $pos = $pos - $nbre;
else $pos = 0;
break;
case "f" :
if ($nbretotal > $nbre) $dernpage = $nbretotal - $nbre;
else $dernpage = 0;
if ($pos < $dernpage) $pos = $pos + $nbre;
break;
}
$que = " SELECT * FROM `biens_fr`" ;
$query_4 = " ORDER BY ref ASC LIMIT $pos , $nbre";
$klask = $que.$query_4 ;
$result = mysql_query($klask) or die ("Requête incorrecte ".mysql_error());

}

//********************************************************
//les biens dont le prix est inférieur à 50.000 euros
//********************************************************
if ($_POST['ftot1'] == 1)
{

$query = " SELECT * FROM `biens_fr` WHERE (tot1) <= 50000";
$que1 = mysql_query($query) or die ("Requête incorrecte ".mysql_error());
$nbretotal = mysql_num_rows($que1);

$nbre=$nbrerecordpage; // Nbre d'enregistrements par page
if (!isset($pos)) $pos = 0; // Suit la position dans le fichier
if (!isset($sens)) $sens = "d"; // Suit le sens de naviguation

switch ($sens) {
case "d" :
if ($pos >= $nbre) $pos = $pos - $nbre;
else $pos = 0;
break;
case "f" :
if ($nbretotal > $nbre) $dernpage = $nbretotal - $nbre;
else $dernpage = 0;
if ($pos < $dernpage) $pos = $pos + $nbre;
break;
}
$query = " SELECT * FROM `biens_fr` WHERE (tot1) <= 50000";
$query_4 = " ORDER BY ref ASC LIMIT $pos , $nbre";
$klask = $query.$query_4 ;
$result = mysql_query($klask) or die ("Requête incorrecte ".mysql_error());

}

// Fermer la connexion

mysql_close();

Entete();



echo("| ");
TitreMenu("Précédents","result11.php?sens=d&pos=$pos","");
echo(" | ");
TitreMenu("Suivants","result11.php?sens=f&pos=$pos","");
echo(" | ");
echo("$nbretotal enregistrement(s) (affichage par tranche de $nbre)\n");

echo "<table>\n\n";
$build_fichier = "<table>\n<tr>\n";
while($row = mysql_fetch_array($result))
{
$colonne ="<TD><DIV ALIGN=\"center\">Rf $row[ref]</DIV><DIV ALIGN=\"center\">".
"<A HREF=\"detail5.php?trans=$row[ref]\"><IMG SRC=\"../photos/photofr/i$row[ref].jpg\" BORDER=0 WIDTH=125 HEIGHT=85></A><BR>".
"<DIV ALIGN=\"center\"><FONT COLOR=\" #FF0033\">$row[tot1]€ </FONT></DIV>&nbsp;</TD>";
if ($i%5==0)
{
echo "\n<tr>\n"; // on commence une ligne du tableau
$build_fichier .= "\n<tr>\n";
}
if($i %5 !=0 OR $i %5 == 0)
{

echo "$colonne"; // on affiche une colonne
$build_fichier .="$colonne";
}
$i++; // on incrémente le compteur

// puisque $i a été incrémenté une ligne plus haut, la condition
// ci-dessous recevra une valeure de $i différente du début de la
// boucle, donc on peut fermer la ligne
if ($i%5==0)
{
echo "\n</tr>\n";
$build_fichier .= "\n</tr>\n";
}
}
echo "\n</table>"; // on ferme le tableau
$build_fichier .= "\n</table>";

?>
:lol:

Philippe GUEGAN
Messages : 108
Enregistré le : jeu. oct. 31, 2002 11:51 am
Localisation : Breizh
Contact :

Message par Philippe GUEGAN » mar. oct. 11, 2005 5:36 pm

En fait je pense que je dois transmettre ma variable au niveau du bouton suivant et précédent, mais je devrais peut être lui donner un autre nom dans le programme du style $machin = $_POST[ftot1]

Philippe :roll:

Côme
Site Admin
Messages : 855
Enregistré le : sam. sept. 14, 2002 10:41 pm
Localisation : Igny (Essonne)

Message par Côme » mar. oct. 11, 2005 10:21 pm

Bonsoir Philippe

Le tableau $_post ne fonctionne que pour les variables passées en Post (via les formulaires). Pour une variable passée en GET (dans l'url) tu peux utiliser $_get ou pour te simplifier la vie n'utiliser que le tableau superglobal $_request qui lui contient les 2 (get,post,files...) ! Je pense que cela peut résoudre ton souci de variable.

Bon sinon tu compliques un peu car avec le découpage de la requête tu pourrais simplement adapter $query_1 (le SELECT) en fonction des choix utilisateurs, le reste du code étant identique quelle que soit la recherche.

Enfin pour la première requête qui sert à déterminer le nombre de records il faut éviter le SELECT * très couteux pour un simple SELECT clé_primaire ou un SELECT COUNT(*)...

On touche au but :D

Répondre