Page 1 sur 1

Traitement avant un post

Posté : 07 nov. 2011, 19:24
par Solar13
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.

Re: Traitement avant un post

Posté : 07 nov. 2011, 19:43
par xTG
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. :)

Re: Traitement avant un post

Posté : 07 nov. 2011, 19:51
par Solar13
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 ?

Re: Traitement avant un post

Posté : 07 nov. 2011, 20:10
par xTG
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

Re: Traitement avant un post

Posté : 07 nov. 2011, 20:30
par Solar13
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

Re: Traitement avant un post

Posté : 07 nov. 2011, 21:11
par xTG
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. ;)

Re: Traitement avant un post

Posté : 07 nov. 2011, 21:14
par Solar13
Je ne sais pas si j'ai le niveau mais bon...

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

Re: Traitement avant un post

Posté : 07 nov. 2011, 21:17
par xTG
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. ^^

Re: Traitement avant un post

Posté : 07 nov. 2011, 21:18
par Solar13
J'ai l'air rassuré ? lol ;)

Re: Traitement avant un post

Posté : 08 nov. 2011, 10:12
par TRUNCKS
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.