damned recoinced

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

damned recoinced

Message par Philippe GUEGAN » jeu. oct. 06, 2005 5:53 pm

J'ai beau reprendre les scripts que nous avions fait, ensemble, je n'arrive pas à sortir le d"coupage d'enregistrement.

Si par exemple je selectionne tous les prix, et que je veux les maisons par 20, il n'y a rien à faire il me les sort toutes :?

C'est l'angoisse.
Je te montre mes deux scripts un en tableau normal l'autre en vignette mais dans les deux cas le pb est le même.

Il semble en plus que la variable $_post pose un problème pour passer à la page suivante

Ya des jours c'est l'angoisse.

Philippe :(

Colonnes:

<?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());
echo$_POST['ftot1'];








$que = " SELECT * FROM `biens_fr`" ;
$query = " SELECT * FROM `biens_fr` WHERE (tot1) <= 50000";
$query_1 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 50000 AND (tot1) <= 100000 LIMIT 0 , 30";
$query_2 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 100000 AND (tot1) <= 150000 LIMIT 0 , 30";
$query_3 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 150000";


$i=0;

if ($_POST['ftot1'] == 0)
{
$result = mysql_query($que) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 1)
{
$result = mysql_query($query) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 2)
{
$result = mysql_query($query_1) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 3)
{
$result = mysql_query($query_2) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 4)
{
$result = mysql_query($query_3) or die ("Requête incorrecte ".mysql_error());
}

$nbretotal = mysql_num_rows($result);

// Découpage par page

$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_4 = " ORDER BY T1.ref ASC LIMIT $pos , $nbre";

// Fermer la connexion

mysql_close();

Entete();



echo("| ");
TitreMenu("Précédents","result5.php?sens=d&pos=$pos","");
echo(" | ");
TitreMenu("Suivants","result5.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))
{

echo("<tr>\n");
echo("<td class=\"fc\">$row[ref]</td>\n");
echo("<td class=\"fc\">\"<A HREF=\"detail5.php?trans=$row[ref]\"><IMG SRC=\"../photos/photofr/i$row[ref].jpg\" BORDER=0 WIDTH=125 HEIGHT=85></A><BR>\".</td>\n");
echo("<td class=\"f\">$row[tot1]€</td>\n");
}

echo "</table>\n\n";


echo("</div>\n");



?>

Script 2
<?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());
echo$_POST['ftot1'];


$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 = " SELECT * FROM `biens_fr` WHERE (tot1) <= 50000";
$query_1 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 50000 AND (tot1) <= 100000 LIMIT 0 , 30";
$query_2 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 100000 AND (tot1) <= 150000 LIMIT 0 , 30";
$query_3 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 150000";
$query_4 = " ORDER BY ref ASC LIMIT $pos , $nbre";

$i=0;

if ($_POST['ftot1'] == 0)
{
$result = mysql_query($que) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 1)
{
$result = mysql_query($query) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 2)
{
$result = mysql_query($query_1) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 3)
{
$result = mysql_query($query_2) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 4)
{
$result = mysql_query($query_3) or die ("Requête incorrecte ".mysql_error());
}

$nbretotal = mysql_num_rows($result);



// Fermer la connexion

mysql_close();

Entete();



echo("| ");
TitreMenu("Précédents","result4.php?sens=d&pos=$pos","");
echo(" | ");
TitreMenu("Suivants","result4.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><B><DIV ALIGN=\"center\">Rf $row[ref]</DIV></B><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\"><B><FONT COLOR=\" #FF0033\">$row[tot1]€ </FONT></B></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>";

?>

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

Message par Côme » dim. oct. 09, 2005 10:44 pm

Salut Philippe :wink:

Courage, tu vas y arriver...
Bon le principe que j'utilise pour le découpage est le suivant :

- calculer d'abord le nombre d'enregistrements total que va me retourner la requête construite par le visiteur, en fonction des critères qu'il me donne. J'obtiens ainsi, par exemple, un : $nbretotal = mysql_num_rows($result);

Pour tenter de minimiser le coût de cette première requête je ne prends que la clé primaire dans mon SELECT. (Une autre approche est d'utiliser un COUNT dans le SELECT)

- une fois ce nombre obtenu je vais préparer mon découpage avec un code proche de :

// Découpage par page

$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_3 = " ORDER BY T1.ref ASC LIMIT $pos , $nbre";

J'ai pris l'habitude de construire mes requêtes par étage :
$query_1 => le SELECT ... FROM
$query_2 => le WHERE ...
$query_3 => le ORDER BY ... et le LIMIT qui permet justement le découpage.

La suite logique à ce stade est donc de reconstituer la requête définitive par un :

$query=$query1.$query2.$query3;
$result = mysql_query($query) or die ("Requête incorrecte ".mysql_error());

C'est cela que je n'ai pas trouvé dans ton code. Tu n'intègres pas dans ta requête finale les paramètres que tu as calculé. J'espère que ceci pourra t'aider. Bon si tu sèches trop, dis le. J'essaierai d'être plus précis.

A bientôt, Côme

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

Message par Philippe GUEGAN » mar. oct. 11, 2005 7:19 am

Bon je regarde ça cette semaine.
C'est le point principal pour moi, après ça je n'ai plus que le design à faire

Oui oui je vais y arriver mais bon dès fois on reste un peu coincé et c'est long.

A +

Philippe

Répondre