Traitement avant un post

Eléphanteau du PHP | 42 Messages

07 nov. 2011, 19:24

Bonjour à vous,

J'ai un petit formulaire comme ceci:
<form action="admin.php" method="post">
<input type="hidden" name="action" value="add">  
<select name="categories">  
<?php
while ($result = mysql_fetch_array($requete)) {
echo '<option value="'.$result['ID_categorie'].'">'.$result['nom_categorie'].'</option>';
}
?>
</select> 

<input name="valider" type="submit" value="Valider">

</form>
Mon soucis, c'est qu'avant le post, j'aimerais faire une vérification sur ma bdd, pour récupérer un paramètre ( en fonction de la catégorie choisie),
et envoyer mon utilisateur sur une page différente en fonction du paramètre récupéré.
( Avec les mêmes paramètres en post )

Comment je peux faire pour que le traitement ne se fasse pas tout de suite vers admin.php.
J'ai besoin que la personne clique sur valider, mais pas que cela parte tout de suite.
En gros, je vais post sur une page différente selon ce que je vais récupérer.

ViPHP
xTG
ViPHP | 7331 Messages

07 nov. 2011, 19:43

Soit tu fais ton formulaire en deux étapes, l'une avec uniquement la valeur relative à ta requête BDD et la seconde avec le reste.
Donc :
- affichage d'un formulaire en vue de sélectionner correctement les informations en BDD
- réception du formulaire, récupération en BDD, affichage du second formulaire
- réception du formulaire final sur admin.php

Ou bien avec de l'Ajax, lors du changement de valeur d'un champ de ton formulaire tu exécutes une requête Ajax appelant un script PHP qui effectue la requête en BDD et qui retourne les valeurs dont tu as besoin pour modifier ton formulaire. Cela devient donc un couple Javascript / PHP pour cette partie. :)

Eléphanteau du PHP | 42 Messages

07 nov. 2011, 19:51

Ben en fait c'est justement ça qui doit changer, grosso modo, à la validation, j'enverais les résultats de
mon post sur admin.php ou admin2.php selon le résultat d'un champ de la base contenant la catégorie sélectionnée.

Tu pourrais m'auguiller sur comment faire ?
J'avoue ne pas avoir compris ton explication :oops:
La personne doit remplir deux formulaires du coup ?

ViPHP
xTG
ViPHP | 7331 Messages

07 nov. 2011, 20:10

Ah ok je cible mieux.
Dans ce cas modifies la valeur de l'attribut action de la balise form grâce au javascript.
Ta liste de catégorie est je suppose chargée dans une balise select, tu peux donc lui attribuer une fonction onchange.

onchange : http://bernard.quevillier.pagesperso-or ... change.htm
l'accès à l'attribut action : document.forms['nom_formulaire'].action

Eléphanteau du PHP | 42 Messages

07 nov. 2011, 20:30

Oulala, merci beaucoup pour la réponse.

Malheureusement, je n'ai qu'un tout petit niveau, je n'arrive pas à adapter cela à mon soucis.

Il n'y a pas une solution pour noob ? lol

ViPHP
xTG
ViPHP | 7331 Messages

07 nov. 2011, 21:11

Une solution pour noob ? Tu postes un message dans la catégorie "Entraides / Projets collaboratifs" et tu pries que quelqu'un te propose de faire le boulot. :lol:

Il n'y a pas de solution de programmation plus simple que ce que je t'ai proposé, en t'y penchant sérieusement quittes à poser des questions sur les fonctions que tu ne comprends pas tu devrais y arriver. ;)

Eléphanteau du PHP | 42 Messages

07 nov. 2011, 21:14

Je ne sais pas si j'ai le niveau mais bon...

Je vais m'y pencher un peu plus, merci à toi en tout cas.

ViPHP
xTG
ViPHP | 7331 Messages

07 nov. 2011, 21:17

Je ne sais pas si j'ai le niveau mais bon...
C'est à la portée de tout débutant en Javascript. M'enfin je sais pas si c'est pour te rassurer. ^^

Eléphanteau du PHP | 42 Messages

07 nov. 2011, 21:18

J'ai l'air rassuré ? lol ;)

Eléphant du PHP | 184 Messages

08 nov. 2011, 10:12

Moi j'ai eu le même problème, je ne sais pas que ce que ça vaut, mais j'ai fait cela:
header ("Location: $type?ID_categorie=".$result_type['ID_categorie']);
$type étant l'url de la page, en fonction de ce qu'aura retourné le test après le post.
Ensuite je récupère avec un $GET.