Affichage page par page

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 16 mars 2006 à 09:31
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 16 mars 2006 à 13:16
Bonjour a tous,





Voila je ne suis pas un expert en programmation PHP


et je rencontre actuellement un soucis avec un script


que j'ai écrit


ce script a pour fonction de faire un affichage page par page dans un tableau HTML d'une requete SQL


et il affiche des liens de 1 à10 avec << et>> pr accéder aux 10 suivants et précédents





jusque la je m'en suis sorti


mais j'ai essayer de rajouter une fonction de tri pr l'utilisateur


afin qu'il puisse chercher dans ma table MySQL ce qu'il cherche suivant la valeur d'un champ





ce tri s'effectue bien et les liens s'affichent correctement mais lorsque je clique sur ces liens


par exemple pr avoir la page 2(triée) il m'affcihe la page2(non triée) celle avec une requete de base sans tri...





je crois que le probleme est de passer dans l'url le tri mais je ne sais pas exactement quoi faire passer:

voici mon code pour la barre de navigation :

$res = mysql_query($requete, $dbconnect) or die(mysql_error());

mysql_close($dbconnect);

$nb_enreg = mysql_num_rows($res);

//on calcule le nb de pages

$nb_pg_rounded = ceil( $nb_enreg / $enreg_par_pg );//arrondi au nb supérieur



//definition du minimum et du maximum

$min= $pg-(($pg-1)%10);



if($nb_pg_rounded<$min+9) {

$max= $nb_pg_rounded;

} else {

$max= $min+9;

}



// si on est pas au début, on est au moins en 11, on peut donc reculer de 10

if($min!=1) {

echo " &lt;&lt;\n";

}

$i= $min;

do{

//si $i n'est pas egal au numero de la page sur laquelle se trouve l'utilisateur...

if($i != $pg){

//...on affiche un lien vers cette page

echo " $i\n";

}else{


//...sinon on affiche simplement le n° de la page actuelle

echo " $i ";

}

$i++;

//on recommence tant que $i n'atteint pas le numero de la derniere page

}while($i <= $max);

// si le maximum affiché n'est pas la fin

if($max<$nb_pg_rounded) {

// si la page+10 existe on avance de 10

// sinon, on se positionne sur la fin

if($pg+9<$nb_pg_rounded) {

echo
" &gt;&gt;\n";

} else {

echo
" &gt;&gt;\n";

}

}

et voici la partie du code que je modifie suivant les choix de l'utilisateur:(modif de la requete):

if(isset($_POST["bouton"])&& $_POST["bouton"]=="TRIER")

{

$sdate = $_POST['sdate']." 00:00:00";

$edate = $_POST['edate']." 00:00:00";

if(isset($_POST["sev"])&& is_numeric($_POST["sev"]))

{

$requete2 = sprintf("SELECT *
FROM shalmlis WHERE SEV=".$_POST['sev']." ORDER BY TIM DESC LIMIT
$limit, $enreg_par_pg ");

if(isset($_POST["nbt"])&& is_numeric($_POST["nbt"]))

$requete2 = sprintf("SELECT *
FROM shalmlis WHERE SEV=".$_POST['sev']." AND NBT=".$_POST['nbt']."
ORDER BY TIM DESC LIMIT $limit, $enreg_par_pg ");


if(isset($_POST["sdate"])&&isset($_POST["edate"])&&
$_POST["sdate"]!="date start" && $_POST["edate"]!="date end")

$requete2 = sprintf("SELECT *
FROM shalmlis WHERE SEV=".$_POST['sev']." AND NBT=".$_POST['nbt']." AND
TIM >='$sdate' AND TIM <'$edate' ORDER BY TIM DESC LIMIT $limit,
$enreg_par_pg ");

}

else if(isset($_POST["nbt"])&& is_numeric($_POST["nbt"]))

{

$requete2 = sprintf("SELECT *
FROM shalmlis WHERE NBT=".$_POST['nbt']." ORDER BY TIM DESC LIMIT
$limit, $enreg_par_pg ");


if(isset($_POST["sdate"])&&isset($_POST["edate"])&&
$_POST["sdate"]!="date start" && $_POST["edate"]!="date end")

$requete2 = sprintf("SELECT *
FROM shalmlis WHERE SEV=".$_POST['sev']." AND NBT=".$_POST['nbt']." AND
TIM >='$sdate' AND TIM <='$edate' ORDER BY TIM DESC LIMIT $limit,
$enreg_par_pg ");

}

else
if(isset($_POST["sdate"])&&isset($_POST["edate"])&&
$_POST["sdate"]!="date start" && $_POST["edate"]!="date end")

{

$requete2 = sprintf("SELECT *
FROM shalmlis WHERE SEV=".$_POST['sev']." AND NBT=".$_POST['nbt']." AND
TIM>='$sdate' AND TIM<='$edate' ORDER BY TIM DESC LIMIT $limit,
$enreg_par_pg ");

}

else {?><script type="text/javascript">

alert("PB: Veuillez au moins remplir un champ ou remplir la date de depart ET la date de fin !");

</script>

<?php

$requete2 = sprintf("SELECT * FROM shalmlis ORDER BY TIM DESC LIMIT $limit, $enreg_par_pg ");

}

}else//affichage normal : pas de tri

{

$requete2 = sprintf("SELECT * FROM shalmlis ORDER BY TIM DESC LIMIT $limit, $enreg_par_pg ");

}



$reponse = mysql_query($requete2, $dbconnect) or die(mysql_error());



je pense donc que le probleme se situe sur les liens , mais étant un
peu perdu je ne sais pas quoi passer par l'url exactement pr que chaque
page garde l'ordre de tri....

est ce que quelqu'un pourrait m'aider sur ce sujet?


merci d'avance



je suis ouvert a toute proposition MERCI

8 réponses

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
16 mars 2006 à 11:04
heu personne n'a jamais fait un truc du genre?

avec un tri ?

je serais tres reconnaissant envers mon futur sauveur...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 mars 2006 à 11:07
Si, mais ton script est bordélique, c'est chiant à lire ;-)
Un conseil : utilise les sessions, et garde les critères de tri/filtre en session. Tu te feras moins chier...
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
16 mars 2006 à 11:12
merci, et je sais que c'est bordélique désolé ...

ouais ou on pourrait utiliser une variable d'environnement a ce que j'ai vu



mais je ne vois pas bien comment ca se ferait:

qu'est ce que je mets ds cette variable (SESSION ou ENV)?concrétement?



en fait il me faudrait un mini exemple si possible

je ne vois pas bien le cheminement du code que ca fera...
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
16 mars 2006 à 11:33
si je fais de la maniere que tu preconises

est ce que je garde mon code pr la requete ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
16 mars 2006 à 11:51
malalam toi tu me dis de faire ca en gros:


if (!isset($_ENV['ordre_tri'])) { // Si la variable $_ENV['ordre_tri'] n'est pas définie



$_ENV['ordre_tri'] = "TIM"; // Valeur par défaut



} else {



if (isset($_GET['modif_ordre_tri'])) { // Si on a
passé par la méthode GET une variable appelée modif_ordre_tri
(l'utilisateur a demandé à modifier l'ordre de tri)


$_ENV['ordre_tri'] =
$_GET['modif_ordre_tri']; // on affecte cette
valeur à notre variable d'environnement



}



}



$requete2 = sprintf("SELECT * FROM shalmlis ORDER BY ".$_ENV['ordre_tri']." DESC LIMIT $limit, $enreg_par_pg ");


et en fait $_ENV serait l'équivalent du bout de code qui est modifié par le choix de l'utilisateur?c'est ca?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 mars 2006 à 12:02
Non, je pensais déjà à $_SESSION... ;-)
Ensuite, je pensais simplement passer le critère de tri codifié en fonction de tes champs.
Par exemple : sort=date et stocker : $_SESSION['sort'] = $_GET['sort'];

ensuite, quand tu affiches, tu affiches en fontion du crière de tri :
ORDER BY $_SESSION['sort']
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 mars 2006 à 12:03
Heu sinon oui, j'ai dit non, mais le principe est celui-là oui.

Et SI $_SESSION['sort'] n'existe pas, tu lui donnes une valeur par défaut. Evidemment.
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
16 mars 2006 à 13:16
ok je vais essayer ca et du coup ca va surement simplifier un peu ce bordel...
0
Rejoignez-nous