Header (paralysant...)

Eléphant du PHP | 124 Messages

15 mai 2006, 13:40

Salut a tous :D

Voila je bloque sur un etrange probleme:

Soit un bouton 'valider'...
if ($_POST['valider'])
{$sql= "INSERT INTO matable(champ1, champs2, champs3...) VALUES('".$1."','".$2."','".$3."'...)";
$req = mysql_query($sqlinsert) or die(mysql_error()); 
Jusque là pas trop de soucis, tout fonctionne bien. Par contre ça se complique si je rajoute une redirection en haut de la page :
if ($_POST['valider']) {header ("Location: mapage.php");}
Pourtant je l'ai déjà fait des centaines de fois et y'avait aucun de probleme !! La ça me fait bien la redirection mais la requète ne s'éxecute pas...
question: POURQUOI ?

Eléphant du PHP | 124 Messages

15 mai 2006, 14:36

Petite précision:
J'ai sur ma page une liste déroulante qui recharge la page lorsque l'on change sa valeur...

si je n'y touche pas, le bouton valider effectue bien ses deux opérations. Si j'y touche, seule la redirection se fait et la requete ne s'éxecute pas...

Le probleme reste entier je ne voi pas pourquoi le fait que la page soit rechargée désactive ma requete..!

Mammouth du PHP | 1353 Messages

15 mai 2006, 14:53

Si tu rappelles ta page, il n'y a plus de POST si ce n'est pas validé par le formulaire, donc ta page ne rentre plus dans le IF.

Tu dois avoir un message d'erreur te disant que la variable n'est pas définie non ?

Eléphant du PHP | 124 Messages

15 mai 2006, 15:01

hmm.. Non je n'ai pas de message d'erreur mais pourrais tu etre un peu plus précis j'ai pas tout bien compris...

A propos si je n'ai pas le header mais que je recharge ma page avec ma liste déroulante toutes les variables sont définies et ma requete fonctionne..

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

15 mai 2006, 15:33

La commande header renvoi l'utilisateur sur une autre page mais ne fait absolument pas suivre les infos qui ont été saisies. En résumé, dès le moment où tu fais le header, aucune des informations passée en POST ne seront transférées.

Si tu en as besoin, il faut soit le faire manuellement en passant tes variables dans l'url (elles seront alors à récupérées en get), soit tout simplement appeller la page directement qui va traiter les données depuis le formulaire (action=).

Eléphant du PHP | 124 Messages

15 mai 2006, 15:52

non non je n'ai pas dit que je comptait sur header pour transférer les données vers ou que ce soit. J'ai di que deux action sont associées au bouton valider, d'abord le insert into puis le header, qui renvoi vers une page qui dit que les données ont bien été enregistrées dans la base.

Je l'ai déja fait plein de fois mais la avec cette fameuse liste déroulante qui recharge la page pas moyen d'utiliser les deux actions pour le meme bouton.

Mammouth du PHP | 1353 Messages

15 mai 2006, 17:05

je pense que l'on va avoir besoin d un peu plus de code pour t aider

Eléphant du PHP | 124 Messages

15 mai 2006, 17:13

Bon ben je vois que ça inspire pas beaucoup de monde...

autre chose qui pourrait me permettre de contourner le probleme:
est ce que vous savez pourquoi ma redirection onclick marche pas:

Code : Tout sélectionner

<input name="valider" type="submit" id="valider" onclick="document.location='http://www.google.com'"value="Valider" />

Eléphant du PHP | 124 Messages

16 mai 2006, 11:51

Je reposte pas un nouveau message mais j'ai une nouvelle question en rapport avec ce que j'ai écrit ci-dessus:

j'ai une liste déroulante:

<select name="toto" id="toto" onchange="document.forms['titi'].submit();">

Donc comme vous pouvez le voir elle me recharge ma page a chaque fois qu'on la modifie. Mais le probleme c'est que ça recharge sans garder les parametres URL.

Y a t'il moyen de les conserver???

Euh..je sais que c'est pas poli mais...REPONSE URGENTE SOUHAITEE :!: :!:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 mai 2006, 11:52

peut-être avec un .reload plutot qu'un .submit :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 124 Messages

16 mai 2006, 11:56

Ben je viens de faire
<select name="region" id="region" onchange="document.forms['titit'].reload();">
Mais ça marche pas du tout au contraire le chargement se fait meme pas...

Syntaxe??

Avatar du membre
ViPHP
ViPHP | 3008 Messages

16 mai 2006, 11:59

titit ou titi...?

Eléphant du PHP | 124 Messages

16 mai 2006, 12:00

va pour titi :wink:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

16 mai 2006, 12:03

essaies de rajouter un .location dans ton onchange. document.location...etc

Eléphant du PHP | 124 Messages

16 mai 2006, 12:08

<select name="region" id="region" onchange="document.location.forms['grosminet'].submit();">.... :wink:

Marche pas.
Mais alors pas du tout. :-k