Envoi de variable par le biais d'un formulair

matteo -  
 matteo -
Bonjour,

Je cherche actuellement une solution pour utiliser de l'URL rewriting après transmission de variable par le biais d'un formulaire (menu déroulant)... Cela n'est pas facile mais j'ai trouver la solution, je vous explique pour que vous compreniez mieux ma question :)

Je suis sur une page quelconque avec un menu déroulant et un bouton type submit pour envoyer en GET un ID.
Une fois cet idée envoyé en réalité j'ai fait en sorte que l'on reste sur la même page qu'auparavant pour juste récupérer l'ID de ce que l'utilisateur a sélectionner. Voilà la première étape.

Pour la deuxième, j'ai un deuxième petit formulaire (sur la même page donc) qui va récupérer l'ID posté en GET pour que je puisse, dans la balise from, créer le lien cible qui correspond parfaitement à mon URL rewriting et cela fonctionne quand on click sur le second submit, je suis bien redirigé vers ma page "rewrité".

Pour ce qui ont compris mon charabiat :D Vous aurez constaté que j'ai du coup deux boutons submit sur la même page et pour le même menu déroulant ...

Je cherche donc une solution pour que à chaque fois qu'une personne prend une option dans un des menus déroulants, l'ID correspondant à l'option s'incrémente dans l'URL en GET sans être obligé de clicker, pour créer l'illusion qu'il n'y a qu'un envoie de formulaire alors que quand l'utilisateur clickera ce sera le deuxième envoi ....

J'espère que vous m'aurez compris :)

Merci à ceux qui se creuseront la tête et aux autres aussi :)

13 réponses

NookZ Messages postés 2376 Statut Membre 514
 
Bonjour,

Bon déjà ce qui est sûr c'est qu'il faut utiliser du javascript. Ensuite il faut un onchange sur la ou les balises select des listes déroulantes et appeler une fonction javascript qui stocke le-dit id ensuite vous pouvez toujours forcer le submit du formulaire pour prendre en compte le choix de l'id.
0
matteo
 
Merci pour cette réponse rapide :)
Oui je me douté bien que java viendrait pointer son nez ... seulement je suis en école de télécommunication et je commence seulement le java :D

Bref vous avez parler de forcer le submit ? comment ? ou ? que se fasse ? :)

c'est ce que je cherche en réalité et même si on voit une légère actualisation de la page au moment du choix dans le menu déroulant cela ne me dérange pas :)

MErci encore =:)
0
NookZ Messages postés 2376 Statut Membre 514
 
Bonjour,
Voici ce que je pensais faire mais en fait en utilisant un formulaire en méthode post car le get avec javascript n'est pas ni utile, ni sécurisé :

Vous avez un formulaire :
<form name="monform" method="post" action="pageactuelle.php">
<select name="choix" id="idChoix" onchange="stockeID(this);">
[...]
<input type="hidden" id="idEnvoye"/>
</form>

ensuite niveau JS :
function stockeID(selection) {
//récupération de la valeur sélectionnée
selection = selection.options[selection.selectedIndex].value;
//onstocke le résultat dans le champ caché
document.getElementById('idEnvoye').value = selection;
//on provoque l'envoi du formulaire
document.forms["monform"].submit();
}

La valeur de l'ID sera alors dnas le champ idEnvoye, récupérable par un if(isset($_POST['idEnvoye])) etc
0
puxor Messages postés 367 Statut Membre 89
 
(Attention aux abus de langage... Java et Javascript sont totalement différents... )
0
matteo
 
Merci pour cette solution :)

Je vais tenter d'appliquer cela :) et je posterais pour dire si tout fonctionne :)

Merci encore :)
0
matteo
 
Merci beaucoup car cela fonctionne, je suis vraiment content :)

A bientôt dieu du formulaire :D
0
NookZ Messages postés 2376 Statut Membre 514
 
Attention à la flatterie, ça peut être dangereux.
Contente d'avoir pu t'aider en tout cas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
matteo
 
Hello, j'ai encore une petite question :)

tout semble marché correctement seulement je n'arrive pas à rappeler la variable qui a été stocké avec le JS je pense que je dois faire une petite erreur au niveau du nom de la variable.

En sachant que j'ai utilisé les mêmes noms que vous pour les script :)

Une idée ?
0
NookZ Messages postés 2376 Statut Membre 514
 
Dans quel sens "rappeler la variable"? [a pas compris]
0
matteo
 
Bah avec le petit code en javascript si j'ai bien tout compris on force l'envoi "automatique" du choix fait par l'utilisateur dans le menu déroulant sans qu'il est à clicker sur quelconque bouton.

Or pour accéder à l'URL que je vais fabriquer, il faut que je récupère l'ID du choix qui a été posté.

:)
0
NookZ Messages postés 2376 Statut Membre 514
 
eh bien comme dit plus haut :
La valeur de l'ID sera alors dnas le champ idEnvoye, récupérable par un if(isset($_POST['idEnvoye])) etc

donc en php utiliser
$valeur = $POST['idEnvoye'];
0
matteo
 
Oui c'est vrai je n'avais pas fait attention ... désolé je vais essayer alors :)
Je viendrais vous dire comment ça fonctionne :)

Merci:)
0
matteo
 
Je pense que je dois avoir un problème ....
Je mets le code car il y a des choses que je dois ne pas comprendre :)
Surtout ne pas faire attention c'est un peu crade comme code pour l'instant :)

<form method="post" name="monform" action="projet-professionnel.php">
<select name="ID" id="idID" onchange="stockeID(this);">
 <?
$query_listeForm = mysql_query("SELECT ID , nom FROM fiche_metier WHERE domaine='1'");
$listeForm = mysql_fetch_array($query_listeForm);

$titre=$listeForm['nom'];
	  $titre=str_replace("È" , "e" , $titre);
	  $titre=str_replace("‡" , "a" , $titre);
	  $titre=str_replace(" " , "-" , $titre);
	 $titre=str_replace("/" , "-" , $titre);
	 $titre=str_replace("Ë" , "e" , $titre);
	 $titre=str_replace("\'" , "-" , $titre);
	 $titre=str_replace("'" , "-" , $titre);
	 $titre=str_replace(":" , "-" , $titre);
	 $titre=strtolower($titre);
	 
	 
	echo "<option value=".$listeForm['ID'].">";
	echo $listeForm['nom']."-".$listeForm['ID'];
	echo "</option>";
?>
</select>
<input type="hidden" id="idEnvoye"/>
</form>

<script language="javascript">
function stockeID(selection)
{
selection=selection.options[selection.selectedIndex].value;
document.getElementByld('idEnvoye').value=selection;
document.forms["monform"].submit();
}
</script>

<? 
if(isset($_POST['idEnvoye']))
{
?>
<form method="get" action="<? echo $titre."-".$_POST['idEnvoye'].".html";?>">
<input type="submit"/>
</form>
<?
}
?>
0
matteo
 
pour info je post aussi le code qui en réalité fonctionne vraiment comme je le souhaite (à l'exception du fait que ce n'est pas possible d'avoir deux boutons submit sur le même menu...)


<form method="post" name="monform" action="projet-professionnel.php">
<select name="ID" id="idID" onchange="stockeID(this);">
 <?
$query_listeForm = mysql_query("SELECT ID , nom FROM fiche_metier WHERE domaine='1'");
$listeForm = mysql_fetch_array($query_listeForm);

$titre=$listeForm['nom'];
	  $titre=str_replace("È" , "e" , $titre);
	  $titre=str_replace("‡" , "a" , $titre);
	  $titre=str_replace(" " , "-" , $titre);
	 $titre=str_replace("/" , "-" , $titre);
	 $titre=str_replace("Ë" , "e" , $titre);
	 $titre=str_replace("\'" , "-" , $titre);
	 $titre=str_replace("'" , "-" , $titre);
	 $titre=str_replace(":" , "-" , $titre);
	 $titre=strtolower($titre);
	 
	 
	echo "<option value=".$listeForm['ID'].">";
	echo $listeForm['nom']."-".$listeForm['ID'];
	echo "</option>";
?>
</select>
<input type="hidden" id="idEnvoye"/>
</form>

<script language="javascript">
function stockeID(selection)
{
selection=selection.options[selection.selectedIndex].value;
document.getElementByld('idEnvoye').value=selection;
document.forms["monform"].submit();
}
</script>

<? 
if(isset($_POST['idEnvoye']))
{
?>
<form method="get" action="<? echo $titre."-".$_POST['idEnvoye'].".html";?>">
<input type="submit"/>
</form>
<?
}
?>

0
NookZ Messages postés 2376 Statut Membre 514
 
Bonjour,

vous avez oublié de mettre une value à votre input type="submit", ce qui fait déjà qu'il n'a pas de nom, donc je ne suis pas sûre qu'il puisse être visible sans.
Apparaît-il quand vous effectuez une sélection dans la liste déroulante?
0
matteo
 
Oui effectivement le submit n'a pas de value mais en réalité quand c'est le cas la valeur par défault est "envoyer"
Bref, j'ai fait une erreur j'ai recopier exactement le même code au lieu de mettre celui qui marche comme je le veux mais qui n'est pas une solution viable ... voici donc mon code à moi :)

<form method="post" >
<select name="ID">
 <?
 
 $query_listeForm = sprintf("select ID,nom from fiche_metier where domaine='1' order by ID ASC");
$listeForm = mysql_query($query_listeForm, $IAE) or die(mysql_error());
$row_listeForm = mysql_fetch_assoc($listeForm);
$totalRows_listeForm = mysql_num_rows($listeForm);
for($j=0;$j<$totalRows_listeForm;$j++){
	mysql_data_seek($listeForm,$j);
	$row_listeForm = mysql_fetch_assoc($listeForm);
	echo "<option value=".$row_listeForm['ID'].">".$row_listeForm['nom'];
	echo "</option>";
}



?>
</select>
<input type="submit" value="etape 1"/>
</form>

<?
$recherche_nom=mysql_query("SELECT nom FROM fiche_metier WHERE ID='".$_POST['ID']."'");
$resultat_nom=mysql_fetch_array($recherche_nom);

	  $titre=str_replace("È" , "e" , $resultat_nom['nom']);
	  $titre=str_replace("‡" , "a" , $titre);
	  $titre=str_replace(" " , "-" , $titre);
	 $titre=str_replace("/" , "-" , $titre);
	 $titre=str_replace("Ë" , "e" , $titre);
	 $titre=str_replace("\'" , "-" , $titre);
	 $titre=str_replace("'" , "-" , $titre);
	 $titre=str_replace(":" , "-" , $titre);
	 $titre=strtolower($titre);
	 ?>
	 
<form method="get" action="<? echo $titre."-".$_POST['ID'].".html";?>">
<input type="submit" value="etape 2"/>
</form>

0
NookZ Messages postés 2376 Statut Membre 514
 
Vous n'avez pas répondu à la seconde question :
Apparaît-il quand vous effectuez une sélection dans la liste déroulante?
0
matteo
 
Non il n'apparaît pas mais pour moi c'est le isset qui provoque la "non" apparition si c'est le cas cela veut dire que la variable n'existe pas ....
0