Rechercher : dans
Par :

Javascript : formulaire sans bouton

Dernière réponse le 5 fév 2007 à 11:38:48 Shankara, le 4 fév 2007 à 15:13:28 
 Signaler ce message aux modérateurs

Bonjour à tous !
J'ai fait en PHP un formulaire comprenant 4 boutons radio. Lorsque l'un de ces boutons est sélectionné, une liste d'élément provenant de ma base de données et dépendante du choix du bouton s'affiche en-dessous du formulaire. Pour l'instant, mon formulaire contient un bouton de validation. Mon 3è bouton radio est sélectionné par défaut et quand la page se charge, la liste d'élément qui en dépend s'affiche aussi. Ensuite, à chaque fois que je choisis un autre bouton radio et que je valide, la liste d'élément s'adapte à mon choix.
Ce que je voudrais, c'est que la validation s'effectue sans passer par le bouton "Valider" dont je veux me débarrasser.
On m'a dit de passer par le Javascript. J'ai été sur un site pour apprendre le Javascript car je n'en ai jamais fait mais je n'ai pas trouvé de solution adaptée. En effet, seul l'événement Click concerne les boutons radio visiblement. Si j'écris un code avec Onclick dans chaque bouton, comment faire pour que la liste d'éléments correspondant au bouton sélectionné par défaut s'affiche au chargement de la page (le bouton n'est pas clické)?
Quelqu'un pourrait m'aider SVP ?
J'espère avoir été assez claire ...

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Javascript : formulaire sans bouton » dans :
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
Javascript - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...
Javascript - les boîtes de dialogue VoirQu'est-ce qu'une boîte de dialogue? Une boîte de dialogue est une fenêtre qui s'affiche au premier plan suite à un événement, et qui permet Soit d'avertir l'utilisateur Soit le confronter à un choix Soit lui demander de compléter un champ pour...

1

plop!, le 4 fév 2007 à 18:44:45
  • +2

<input type="radio" onClick="document.forms.nom_de_ton_formulaire.submit()" ... />
nom_de_ton_formulaire est le nom que tu as mis dans ta balise form :
<form name="nom_de_ton_formulaire" ...>

Répondre à plop!

2

Shankara, le 4 fév 2007 à 19:02:42

Merci plop!
Question suivante ;) :
Comment récupérer la sélection pour l'utiliser dans mon script PHP ? Est-ce toujours $_POST["guide"] ? ("guide" est le nom de mes boutons radio)

Répondre à Shankara

3

plop!, le 5 fév 2007 à 02:31:16

Oui, ainsi :

<input type="radio" name="guide" value="1" /> Choix 1
<input type="radio" name="guide" value="2" /> Choix 2
<input type="radio" name="guide" value="3" /> Choix 3

Tu peux récupérer $_POST['guide'] qui vaudra 1 ou 2 ou 3 selon le cas.

Répondre à plop!

4

Shankara, le 5 fév 2007 à 09:04:10

J'ai toujours un problème avec le bouton qui doit être sélectionné par défaut. Du fait qu'il n'est pas clické au chargement de la page, j'ai un message d'erreur. Voici mon code :

<center><form name="choix_guide" action="admin_fonctions.php" method="POST">
<table width=40% border=1 cellspacing=1 cellpadding=8>
	<tr>
		<td colspan=2>Liste des guides</td>
	</tr>
	<?php
	$guides=array
				(1=>"Guide des Services",
				 2=>"Guide Industriel",
				 3=>"Guide de la Filière Pêche",
				 4=>"Guide des Imports/Exports"
				);
	$j=1;
	
	
	/***   Construction des boutons radio   ***/
	foreach ($guides as $i)
	{
		/***   Si aucun choix n'a encore été fait, le guide FP est sélectionné par défaut   ***/
		if ($j==3) :
			echo '<tr><td>'.$j.'</td><td><input type="radio" name="guide" value="'.$j.'" checked onClick="document.forms.choix_guide.submit()">'.$i.'</td></tr>';
		else :
			echo '<tr><td>'.$j.'</td><td><input type="radio" name="guide" value="'.$j.'" onClick="document.forms.choix_guide.submit()">'.$i.'</td></tr>';
		endif;
		
		$j++;
	}
	echo '</table></form></center><br><br>';

<center><table width=40% border=1 cellspacing=1 cellpadding=8>

	<?php
	
	/***   Requête donnant les fonctions associées au guide choisi   ***/
	if (isset($_POST["guide"])) :
	$req="SELECT distinct f.fonction
		  FROM fonction AS f
		  WHERE f.guide='".$_POST["guide"]."'
		  ORDER BY 1";
	$result=mysql_query($req) or die ('Erreur SQL !<br>'.$req.'<br>'.mysql_error());
	
	/***   Titre du tableau en fonction du guide choisi   ***/
	$nom_tab=htmlentities ('Fonctions associées au').' '.$guides[$_POST["guide"]];
	
	/******************************************************************************************************************************************************************************************/
	/***   Fonction liste_tab_fonctions :
		Paramètres :
			$resultat : résultat de mysql_query($requête)
			$first_line : titre du tableau
		Renvoie les chaînes de caractères correspondant à chaque ligne du tableau. Le tableau est prévu pour qu'une cellule soit créée pour chaque champ de la requête.
			1) Construction de la ligne contenant le titre du tableau => fusion de la cellule sur (la cellule contenant le numéro de la ligne ($i) + les cellules contenant les champs + la cellule contenant le lien "Modifier" 
			    + la cellule contenant le lien "Supprimer" + la cellule contenant le lien "Monter" + la cellule contenant le lien "Descendre")
			2) Construction des lignes du tableau => le nombre de lignes correspond au nombre d'enregistrements de la requête
			3) Construction de la ligne contenant le bouton "Ajouter" => fusion de la cellule sur (les cellules contenant les champs + la cellule contenant le lien "Modifier"  + la cellule contenant le lien "Supprimer" + la cellule
			contenant le lien "Monter" + la cellule contenant le lien "Descendre")   ***/
	/******************************************************************************************************************************************************************************************/
	function liste_tab_fonctions ($resultat,$first_line)
	{
		$nb_champs=mysql_num_fields($resultat);
		$max1=$nb_champs+1;
		$max2=$nb_champs+4;
		$max3=$nb_champs+5;
		$L=mysql_num_rows($resultat);
		if ($L==0) :
			$i=0;
			/***   Si aucun enregistrement n'est renvoyé, le nombre de champs est assimilé à 1 (celui qui affiche "Aucun élément") et on ne prévoit évidemment pas de cellules pour les liens "Modifier", "Supprimer",
			"Monter" et "Descendre"   ***/
			echo '<tr><td width=100% colspan='.$max1.'>'.$first_line.'</td></tr>';
			echo '<tr><td></td><td>Aucun &eacute;l&eacute;ment</td></tr>';
			echo '<td></td><td align=right colspan='.$nb_champs.'><input type="submit" name="B_Ajouter" value="Ajouter"></td></tr>';
		else :
			$i=1;
			echo '<tr><td width=100% colspan='.$max3.'>'.$first_line.'</td></tr>';
			while ($row=mysql_fetch_array($resultat)) :
				echo '<tr><td>'.$i.'</td>';
				for ($C=0;$C<mysql_num_fields($resultat);$C++) :
					echo '<td>'.stripslashes(htmlentities(strtoupper($row[$C]))).'</td>';
				endfor;
				$i++;
				echo '<td>Modifier</td><td>Supprimer</td><td>Monter</td><td>Descendre</td></tr>';
			endwhile;
			echo '<td></td><td align=right colspan='.$max2.'><input type="submit" name="B_Ajouter" value="Ajouter une fonction"></td></tr>';
		endif;
	}
	
	
	liste_tab_fonctions ($result,$nom_tab);
	endif;
	
	?>
</table></center>



Désolée pour la mise en forme mais c'est en copiant ici que ça bouge tout.

Répondre à Shankara

5

 Shankara, le 5 fév 2007 à 11:38:48

Finalement j'ai trouvé la solution pour mon dernier problème. Mon code est devenu le suivant pour le premier tableau (le second fonctionnait correctement) :

<center><form name="choix_guide" action="admin_fonctions.php" method="POST">
<table width=40% border=1 cellspacing=1 cellpadding=8>
	<tr>
		<td colspan=2>Liste des guides</td>
	</tr>
	<?php
	$guides=array
				(1=>"Guide des Services",
				 2=>"Guide Industriel",
				 3=>"Guide de la Filière Pêche",
				 4=>"Guide des Imports/Exports"
				);
	$j=1;
	
	/***   Construction des boutons radio   ***/
	foreach ($guides as $i)
	{
		/***   Si aucun choix n'a encore été fait, le guide FP est sélectionné par défaut   ***/
		if (!isset($_POST["guide"])) :
			if ($j==3) :
				echo '<tr><td>'.$j.'</td><td><input type="radio" name="guide" value="'.$j.'" checked
				onClick="document.forms.choix_guide.submit()">'.$i.'</td></tr>';
				$_POST["guide"]=$j;
			else :
				echo '<tr><td>'.$j.'</td><td><input type="radio" name="guide" value="'.$j.'"
				onClick="document.forms.choix_guide.submit()">'.$i.'</td></tr>';
			endif;
		/***   Si un choix a été fait, le guide choisi reste sélectionné   ***/
		elseif ($j==$_POST["guide"]) :
			echo '<tr><td>'.$j.'</td><td><input type="radio" name="guide" value="'.$j.'" checked
			onClick="document.forms.choix_guide.submit()">'.$i.'</td></tr>';
		else :
			echo '<tr><td>'.$j.'</td><td><input type="radio" name="guide" value="'.$j.'"
			onClick="document.forms.choix_guide.submit()">'.$i.'</td></tr>';
		endif;
		$j++;
	}
	echo '</table></form></center><br><br>';
	?>

Répondre à Shankara