formulaire... renvoi dans la meme page puis dans une autre page...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : formulaire... renvoi dans la meme page puis dans une autre page...

par carbonara » 19 mars 2009, 22:50

Super ça marche....
Je sens que je vais devoir me mettre au Java :lol:
Merci beaucoup!
Affaire resolue! :P

par Invité » 16 mars 2009, 10:38

Salut Ryle,

J'essaie ca ce soir et je te dis!

Merci bcp!

par Ryle » 15 mars 2009, 19:17

Hmm... alors on va se la jouer en javascript et changer l'action du formulaire dynamiquement, uniquement lorsque l'utilisateur clique dur le bouton :)

Donc première étape, revenir à ton formulaire initial :

Code : Tout sélectionner

<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant">
Deuxième étape, modifier ton bouton pour soumettre le formulaire. Tout d'abord, on va le transformer en type button au lieu de submit. Puis on va modifier l'action du formulaire pour changer la destination et faire la soumission en javascript :
<input type="button" value="Search" 
  onclick="document.form_category.action = 'Search.php'; document.form_category.submit();" />

par carbonara » 15 mars 2009, 17:48

ok, merci Ryle,

Ce code a été testé hier et semblait correspondre a ce que je cherchais mais il s'avère qu'il y a encore des bugs.... Donc mon problème n'est pas réellement résolu!

Si je fais un choix dans le formulaire 1, ça me détermine ce qu'il y a dans les formulaire 2 et 3!

Or, si avant de valider tout ça en appuyant sur "search" je change ce qu'il y a dans le formulaire 1 (genre je me suis trompé), étant donné qu'il y a déjà quelque chose dans le formulaire 3 (op_area), il m'envoie directement sur l'autre page, la page Search.php, sans avoir eu le temps de rechanger le formulaire 2 et 3 !!

Je sais pas si j'ai été clair! :shock:

par Ryle » 15 mars 2009, 17:14

Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet :)

par carbonara » 15 mars 2009, 13:24

Merci

C'est la première fois que je post sur ce forum!!!

Comment met on "RESOLU" ??

par Aureusms » 15 mars 2009, 01:27

Tiens histoire d'optimiser un peu :
<form  <?php echo (isset($_POST["op_area"])) ? 'action="Search.php"' : 'action="index.php"'; ?> method="post" name="form_category" valign="middle" class="menuDeroulant">

<select name="category" size="1" class="menuDeroulant" onchange=submit();>
<option value="-1">-- Please select a type of service --</option>
<?php foreach ($array_category as $value){?>
<option value="<?php echo $value; ?>"<?php if ($category == $value ) { ?> selected="selected" <?php  }  ?>><?php echo $value; ?></option>
<?php } ?>
</select>
</div>
<div align="left" valign="middle" class="column_derowling_right">
<select name="under_categ" class="menuDeroulant">
<option value="-1">-- Please select an under category --</option>
<?php foreach ($array2 as $value){?> <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php }?> </select>
<?php }?> 
</div>
<div align="left" valign="middle" class="column_derowling_right">
<select name="op_area" class="menuDeroulant">
<option value="-1">-- Please select a geographic opearating area --</option>
<?php foreach ($array3 as $value){?> <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php }?> </select>
<?php }?> 
</div>
<div align="left" valign="middle" class="column_derowling_right">
<input type="submit

par Aureusms » 15 mars 2009, 01:24

pas de problème : oublie pas le [RESOLU] si tu es inscrit.

par carbonara » 14 mars 2009, 23:52

Super!!!!!!!!!!!

Merci pour ta patience Aureusms....

Ton aide ma permis de bein avancer et aussi de résoudre mon problème en ne faisant qu'un <form> et non 2 comme j'avais fait.... en incrémentant le if... C'est super!

Merci beaucoup

Le code si ça peut aider certains:

<?php if (isset($_POST["op_area"]))
{ echo '<form action="Search.php" method="post" name="form_category" valign="middle" class="menuDeroulant"> ';}
else
{ echo '<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant">';}
?>
<select name="category" size="1" class="menuDeroulant" onchange=submit();>
<option value="-1">-- Please select a type of service --</option>
<?php foreach ($array_category as $value){?>
<option value="<?php echo $value; ?>"<?php if ($category == $value ) { ?> selected="selected" <?php  }  ?>><?php echo $value; ?></option>
<?php } ?>
</select>
</div>
<div align="left" valign="middle" class="column_derowling_right">
<select name="under_categ" class="menuDeroulant">
<option value="-1">-- Please select an under category --</option>
<?php foreach ($array2 as $value){?> <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php }?> </select>
<?php }?> 
</div>
<div align="left" valign="middle" class="column_derowling_right">
<select name="op_area" class="menuDeroulant">
<option value="-1">-- Please select a geographic opearating area --</option>
<?php foreach ($array3 as $value){?> <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php }?> </select>
<?php }?> 
</div>
<div align="left" valign="middle" class="column_derowling_right">
<input type="submit" value="Search" /></form>

par Aureusms » 14 mars 2009, 23:12

C'est normal vu que dans le code que je t'ai envoyé le post n'existe pas donc
if (isset($_POST["under_category"]) or isset($_POST["category"])) sera toujours faux pour le premier post vu que $_POST["under_category"] n'existe pas encore....

essaye plutoôt l'inverse :
if (isset($_POST["op_area"]))
{
echo '<form action="Search.php" method="post" name="form_category" valign="middle" class="menuDeroulant">'
}
else
{
echo '<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant"> '; 
}
ainsi si op_area est posté : il affiche un formulaire vers search.php sinon vers index.php

vérifie bien si ton 3eme formulaire doit pointer vers search.php.

par carbonara » 14 mars 2009, 22:32

Merci Ryle, merci Aureusms,

Je sais pas si je m'exprime comme il faut car je début en PHP....

Je viens d'essayer de remplacer:
<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant"> 
Par:
if (isset($_POST["under_category"]) or isset($_POST["category"]))
{
echo '<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant"> ';
}
else
{
echo '<form action="Search.php" method="post" name="form_category" valign="middle" class="menuDeroulant">';
}
Mais ça me donne un message d'erreur et a voir ce code j'ai pas vraiment l'impression que ça correspond a ce que je recherche. :cry:

les formulaires sont des listes deroulantes:
liste déroulante 1 = category
liste déroulante 2 = under_categ
liste déroulante 3 = op_area

En gros j'ai l'impression qu'il y a 2 action:
la 1ere: je choisi dans la liste 1 => ce qui détermine ce qui y a dans la liste 2 et la liste 3
<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant">
<select name="category" size="1" class="menuDeroulant" onchange=submit();>
<option value="-1">-- Please select a type of service --</option>
<?php foreach ($array_category as $value){?>
<option value="<?php echo $value; ?>"<?php if ($category == $value ) { ?> selected="selected" <?php  }  ?>><?php echo $value; ?></option>
<?php } ?>
</select>
</form>
la 2eme: après avoir fait ma sélection dans la liste 2 et 3 je valide pour récupérer les valeurs des listes 1, 2 et 3 dans la page Search.php en appuyant sur le bouton search.
<div align="left" valign="middle" class="column_derowling_right">
<form action="Search.php?category=$value" method="get">
<select name="under_categ" class="menuDeroulant">
<option value="-1">-- Please select an under category --</option>
<?php foreach ($array2 as $value){?> <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php }?> </select>
<?php }?> 
</div>
<div align="left" valign="middle" class="column_derowling_right">
<select name="op_area" class="menuDeroulant">
<option value="-1">-- Please select a geographic opearating area --</option>
<?php foreach ($array3 as $value){?> <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php }?> </select>
<?php }?> 
</div>
<div align="left" valign="middle" class="column_derowling_right">
<input type="submit" value="Search" /></form>
Or, codé comme ça mais, je ne récupéré que les valeur de la liste 2 et 3...
Je ne sais pas comment récupérer la valeur de la liste 1 dans la page Search.php

Avec le code donné, des que je fais un choix dans la 1ere liste, il m'envoie sur la page search.php:
Je suis un peu dépité !!
<?php if (isset($_POST["category"]) or isset($_POST["under_category"]))
{
echo '<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant"> ';
}
else
{
echo '<form action="Search.php" method="post" name="form_category" valign="middle" class="menuDeroulant">';
} ?>
<select name="category" size="1" class="menuDeroulant" onchange=submit();>
<option value="-1">-- Please select a type of service --</option>
<?php foreach ($array_category as $value){?>
<option value="<?php echo $value; ?>"<?php if ($category == $value ) { ?> selected="selected" <?php  }  ?>><?php echo $value; ?></option>
<?php } ?>
</select>
</form>

</div>
<div align="left" valign="middle" class="column_derowling_right">
<form action="Search.php?category=$value" method="get">
<select name="under_categ" class="menuDeroulant">
<option value="-1">-- Please select an under category --</option>
<?php foreach ($array2 as $value){?> <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php }?> </select>
<?php }?> 
</div>
<div align="left" valign="middle" class="column_derowling_right">
<select name="op_area" class="menuDeroulant">
<option value="-1">-- Please select a geographic opearating area --</option>
<?php foreach ($array3 as $value){?> <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php }?> </select>
<?php }?> 
</div>
<div align="left" valign="middle" class="column_derowling_right">
<input type="submit" value="Search" /></form>
:? :shock:

par Aureusms » 14 mars 2009, 21:41

Ce que te dis Ryle est de changer action ici :
<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant">

utilise PHP pour le faire :
if (isset($_POST["formulaire_2"]) or isset($_POST["formulaire_1"]))
{
echo '<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant"> ';
}
else
{
echo '<form action="autre_page.php" method="post" name="form_category" valign="middle" class="menuDeroulant">';
}

par carbonara » 14 mars 2009, 20:14

Si je change le lien de mon action, la première action ne se produit plus!!

C'est a dire que les 2eme et 3eme menu ne se remplisse pas en fonction du 1er menu déroulant.

J'en suis arriv2 ici, ou j'arrive a récupérer les valeur du menu 2 et 3 mais pas du 1er

Code : Tout sélectionner

<form action="index.php" method="post" name="form_category" valign="middle" class="menuDeroulant"> <select name="category" size="1" class="menuDeroulant" onchange=submit();> <option value="-1">-- Please select a type of service --</option> <?php foreach ($array_category as $value){?> <option value="<?php echo $value; ?>"<?php if ($category == $value ) { ?> selected="selected" <?php } ?>><?php echo $value; ?></option> <?php } ?> </select> </form> </div> <div align="left" valign="middle" class="column_derowling_right"> <form action="Search.php?" method="post"> <select name="under_categ" class="menuDeroulant"> <option value="-1">-- Please select an under category --</option> <?php foreach ($array2 as $value){?> <option value="<?php echo $value; ?>" ><?php echo $value; ?> </option> <?php }?> </select> <?php }?> </div> <div align="left" valign="middle" class="column_derowling_right"> <select name="op_area" class="menuDeroulant"> <option value="-1">-- Please select a geographic opearating area --</option> <?php foreach ($array3 as $value){?> <option value="<?php echo $value; ?>" ><?php echo $value; ?> </option> <?php }?> </select> <?php }?> </div> <div align="left" valign="middle" class="column_derowling_right"> <input type="submit" value="Search" /></form>
Merci d'avance

par Ryle » 14 mars 2009, 19:25

A priori, il te suffit simplement de changer l'action du formulaire et de préciser la page vers laquelle tu souhaites envoyer les données de ton formulaire, pour que celles-ci lui soient automatiquement envoyées lorsque tu cliqueras sur le bouton submit :)

formulaire... renvoi dans la meme page puis dans une autre p

par carbonara » 14 mars 2009, 18:36

Hello,

Je ne sais pas comment m'y prendre avec mon formulaire...

Il comprend 3 listes et 1 bouton d'envoi.

Un choix se fait dans la première liste (jusque la pas trop de pb)
Ce choix influence ce qu'il y aura dans la 2eme et la 3eme liste. (ça j'ai réussi aussi)

En revanche je me sais pas comment renvoyer le résultats de ces 3 listes dans une autre pages...
Ca me parait délicat alors que ça doit être assez simple sur pour les personnes qui fréquente régulièrement ce forum...

Je fais donc appel a la solidarité de PHPFrance

Code : Tout sélectionner

<form action="index.php" method="post" name="form_category" class="menuDeroulant"> <select name="category" class="menuDeroulant" onChange=submit();> <option value="-1">-- Please select a type of service --</option> <?php foreach ($array_category as $value){?> <option value="<?php echo $value; ?>"<?php if ($category == $value ) { ?> selected="selected" <?php } ?>><?php echo $value; ?></option> <?php } ?> </select></form> </div> <div class="column_derowling_right"> <select name="under_categ" class="menuDeroulant"> <option value="-1">-- Please select an under category --</option> <?php foreach ($array2 as $value){?> <option value="<?php echo $value; ?>" ><?php echo $value; ?> </option> <?php }?> </select> <?php }?> </form> </div> <div class="column_derowling_right"> <select name="op_area" class="menuDeroulant"> <option value="-1">-- Please select a geographic opearating area --</option> <?php foreach ($array3 as $value){?> <option value="<?php echo $value; ?>" ><?php echo $value; ?> </option> <?php }?> </select> <?php }?> </form> </div> <div class="column_derowling_right"> <input type="submit" value="Search" />
Je me demande si ce code existant a pas déjà un pb....

Je continue a chercher mais si vous pouviez m'aider, cela m'enleverez une poutre du pied! :? :?