Variables, formulaire et $PHP_SELF

Petit nouveau ! | 5 Messages

14 sept. 2011, 19:58

Bonjour et merci de me lire, je vous décris l'environnement et ce qui m'amene à vous.
J'ai une page unique index.php, j'affiche le résultat d'une requête SQL par lot de 25, je navigue de 25 en 25 par un <A href=\"$PHP_SELF?suivant=mavariable+25 >.
Tout fonctionne parfaitement. Mais le nombre d'enregistrement de ma base m'oblige à mettre en place un filtre.
Losque je déclare une variable en dur $filtre="référence" tout va bien et je navigue de 25 en 25 sur le résultat du filtre.
Je met donc en place un formulaire <Form method="post" action="<?$PHP_SELF;?>" qui ne contient qu'un seul champ input et qui va renseigner $filtre.
Je valide le formulaire, les 25 premiers enregistrement s'affichent, mais la navigation ne fonctionne plus et se fait sur l'intégralité de mes enregistrement.
Forcément, champ input est vide, donc lorsque passe mon $filtre=$_POST['MonChampFormulaire'] et bien c'est vide et donne la totalité des enregistrements... plus de filtre.
J'ai essayé $_SESSION['filtre']= $_POST['MonChampFormulaire'] mais c'est pareil, je tourne et retourne en rond.
Voila toutes idées sur la méthode à mettre en oeuvre sont les biens venues.
J'espère avoir été clair, et vous remercie d'avance.
Merci, vos réponses m'ont permis de venir à bout de mes interrogations, et d'enrichir mes connaissances. =D> à vous.
Modifié en dernier par FranckW le 16 sept. 2011, 19:07, modifié 2 fois.

ViPHP
xTG
ViPHP | 7331 Messages

14 sept. 2011, 20:57

Ton filtre est un input ? Que tu transites par $_POST.
Rajoutes ce filtre dans l'url de tes liens de pagination ?

Et il ne faudra plus tester que $_POST['filtre'] mais aussi $_GET['filtre'].

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 sept. 2011, 21:40

salut,

a la validation du formulaire tu peux effectivement mettre la valeur du filtre en session et n'utiliser que la variable de session pour le reste.

en gros tu traite le formulaire s'il existe et dans ce cas place la variable de session
exemple
<?php
if (!isset($_POST['MonChampFormulaire'])) {
// tu vérifie que la valeur fournit existe bien et ensuite si c'est bon
$_SESSION['filtrerecherche'] = $_POST['MonChampFormulaire'];
}
// pour l'utilisation du filtre
if ( !isset($_SESSION['filtrerecherche'])) {
$_SESSION['filtrerecherche'] = 'valeur par défaut du filtre';
}

$sql = 'la requete sql qui va bien et qui utilisela variable de session';
?>
n'oublie pas le session_start au début


@+
Il en faut peu pour être heureux ......