Méthode ['query_string']

Répondre
Jac
le 07/08/2003 à 20:53
Jac
Bonjour.


Je vous détaille en 2 mots la procédure que je tente de finaliser

(tout se passe dans la même page)

-----------------------------
1)-selon le choix effectué dans un sélect de mon formulaire, clause Where sur le champ correspondant de
la requête (ou tout si aucun choix)


if (isset($HTTP_GET_VARS['choix']))
{
if ($HTTP_GET_VARS['choix']<>0) {
$tri=$HTTP_GET_VARS['choix'];
}else{
$tri='%';
}
}else{
$tri='%';
}
NB ... la fin de la requête plus loin "WHERE theme_declar.id_theme LIKE '$tri'

--------------------------------

2) a partir de cet affichage, possibilité de différent tri (chronologique Asc et Desc ...)


if($sort=="dateasc") { $order="order by theme_declar.date_an ASC, theme_declar.date_mois ASC";}

NB pour la requête ... WHERE theme_declar.id_theme LIKE '$tri' $order...


------------------------------------

3) sélection pour l'affichage page par page

fin de requête ....WHERE theme_declar.id_theme LIKE '$tri' $order LIMIT $debut,$nb_affichage_par_page";

-------------------------


La requête ainsi constituée réagit parfaitement à cette exception près :

les liens permettant l'affectation de sort (2) sont construits ainsi :
$ch=$HTTP_SERVER_VARS['QUERY_STRING'];
...
<a href="<?php print($PHP_SELF);?>?sort=dateasc<?php echo "&".$ch;?>"><img border......>
et donne la première fois à l'affichage : ...declar.php?sort=dateasc&choix=0&envoie=Afficher
ce qui est le résultat attendu

par contre, et c'est là que la méthode n'est plus bonne,
si je souhaite (sans changer le sélect) modifier l'ordre de tri ... le [query_string'] ne va plus car il se "cumule" au précédent
et donne ... declar.php?sort=dateasc&sort=dateasc&choix=1&envoie=Afficher

J'en conclus que je n'utilise pas la bonne méthode pour le réaffichage de ma mage qui doit tenir compte:
- du choix de mon sélect $tri
- du n° de page
- et de l'ordre de tri $sort

J'étais pourtant content de cette construction ...
Je vous remercie de vos conseils avisés et espère avoir été suffisamment clair.

Jacques
LA GLOBULE
le 07/08/2003 à 23:19
LA GLOBULE
Ton probleme est simple.
Tu l'as toi meme trouvé.

Quand tu affiches les liens permettant l'affichage des autres pages, tu reecris à chaque fois le QUERY_STRING dans les arguments passés par l'URL : <?php echo "&".$ch;?>

A la premiere utilisation, tout se passe bien : normal, ton QUERY_STRING est vide.

Mais à la page suivante, tu recopies le QUERY_STRING derriere les variables que tu viens de passer en parametres au script.
Ce qui fait que tes parametres arrivent en double pour l'URL.

Sinon, je te conseille de regarder le "comment faire" sur l'affichage page par page. Il dispose d'une fonction relativement simple d'utilisation qui permet justement de faire des affichages page par page smiley

Tu trouveras ce cours ici.

Note : tu peux aussi etudier le code de cette fonction afin de "debugger" ton propre script.
Jac
le 07/08/2003 à 23:45
Jac
Merci d'avoir répondu.
Si j'ai compris la méthode, il faut que je vérifie la valeur de 'QUERY_STRING' tel que tu le fais dans la fonction de barre de navigation pour ne garder que le dernier paramètre [ou groupe de paramètres]passé ?


.....if ($_SERVER['QUERY_STRING'] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1) {
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else {
if ($tableau[0] == "") {
$query = $_SERVER['PHP_SELF'].'?debut='................
...............$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';


Alors là, faut que je regarde en détail parce que je n'ai pas encore tout compris :(
.... mais je ne désespère pas.

Pour finir, je trouve ta fonction 'page par page' EXCELLENTTTTTTE !

A+
LA GLOBULE
le 08/08/2003 à 00:02
LA GLOBULE
Oui, tu as tout compris : la fonction regarde tout d'abord ce qu'il y a dans le QUERY_STRING.
Et en fonction de ca, elle cree un nouveau QUERY_STRING smiley
Jac
le 08/08/2003 à 00:12
Jac
Je te remercie beaucoup de m'avoir aiguillé.

Je parcours souvent en visiteur les sites et les forums de prog PHP et je voudrais ici remercier sincèrement toutes les personnes qui, comme toi, nous apportent leur connaissance sans arrière pensée ni contre-partie, si ce n'est la satisfaction (je pense) d'avoir été utile à ouvrir une porte ou à montrer la voie.

Il y ainsi des jours où je trouve que le monde est formidable :)

A bientot.
LA GLOBULE
le 08/08/2003 à 00:14
LA GLOBULE
C'est gentil de dire çà smiley

Et nous, de notre cote, c'est les gens comme vous qui nous poussent à continuer d'ecrire des cours, des astuces, etc...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours