Page 1 sur 1

Liste déroulante sans submit() ?

Posté : 30 juin 2007, 14:59
par Kimble
Bonjour,
J'ai un formulaire avec plusieurs champs à remplir à la main et une liste déroulante avec des données
provenant de ma base, laquelle remplie certains champs automatiquement.
Le probléme est que dés que je sélectionne une entrée dans la liste déroulante, celle-ci
me valide le formulaire ! Une idée ? :D Merci.
Voici le code simplifié :
<form name="form1" method="post" action="insere_dde.php">
<table width="900" border="0" cellspacing="0" cellpadding="0" class="text">
            <tr>
            <td>&nbsp;</td>
            <td><strong><font color="red"><em>Mairie de :</em></font></strong></td>
            <td><input name="mairie" tabindex="1" type="text" id="mairie" value="<? echo urldecode($ville_choisi) ?>"/></td>
            <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
            <td colspan="2"><div align="left"><a title="DDE qui d&eacute;livre les Permis de cette mairie" ><strong><font color="red"><em>DDE de : </em></font></strong></a></div></td>
		    <td>
			<select name="dde" onChange="form1.submit();"> 
<?php 		
			$SQL = "SELECT DISTINCT dde FROM mairies_info 
			GROUP BY dde ASC";
			$res = mysql_query($SQL); ?>
			<option selected>
<?php 		if(isset($_POST['dde'])) { echo $_POST['dde']; } ?>
			</option>
<?php			while($result=mysql_fetch_array($res)) 
			{
			echo "<option>".htmlentities(urldecode($result["dde"]))."</option>\n";
      		}
 ?>
			</select>
<?php 
//Requete pour remplir les champs correspondants à la dde recherchée
			$dde=(isset($_POST['dde'])) ? $_POST['dde'] : "";
			if (isset($_POST["dde"]))     $dde = $_POST["dde"];
			$req="SELECT ad_dde, cp_dde, tel_dde, fax_dde, instructeur FROM mairies_info 
			WHERE dde = '".$dde."'";
/*Test de la requéte
			echo $req; */
			$res=mysql_query($req);
			$result = mysql_fetch_assoc($res);			
?>			
			</td>
			</tr>
			<tr>
            <td>&nbsp;</td>			
            <td class="trait_jaune"><em><strong>Adresse de la Mairie : </strong></em></td>
            <td><input name="ad_mairie" tabindex="2" type="text" id="ad_mairie" value="<? echo urldecode($result['ad_mairie']) ?>" /></td>
            <td>&nbsp;</td>
            <td colspan="2" class="trait_jaune"><div align="left"><em><strong>Adresse de la DDE : </strong></em></div></td>
            <td><input name="ad_dde" tabindex="10" type="text" id="ad_dde" value="<? echo urldecode($result['ad_dde']) ?>" /></td>
            </tr>
            <tr>
            <td>&nbsp;</td>
            <td class="trait_jaune"><em><strong>Code Postal</strong> </em></td>
            <td><input name="cp_mairie" tabindex="3" type="text" id="cp_mairie" value="<? echo $result['cp_mairie'] ?>" /></td>
            <td>&nbsp;</td>
            <td colspan="2" class="trait_jaune"><div align="left"><em><strong>Code postal </strong></em></div></td>
            <td><input name="cp_dde" tabindex="11" type="text" id="cp_dde" value="<? echo $result['cp_dde'] ?>" /></td>
            </tr>
            <tr>
            <td>&nbsp;</td>
            <td class="trait_jaune"><em><strong>T&eacute;l&eacute;phone : </strong></em></td>
            <td><input name="tel_mairie" tabindex="4" type="text" id="tel_mairie" value="<? echo $result['tel_mairie'] ?>"></td>
            <td>&nbsp;</td>
            <td colspan="2" class="trait_jaune"><em><strong>T&eacute;l&eacute;phone :</strong></em></td>
            <td><input name="tel_dde" tabindex="12" type="text" id="tel_dde" value="<? echo $result['tel_dde'] ?>" /></td>
            </tr>
            <tr>
		    <td>&nbsp;</td>
		    <td class="trait_jaune"><em><strong>Fax : </strong></em></td>
		    <td><input name="fax_mairie" tabindex="5" type="text" id="fax_mairie" value="<? echo $result['fax_mairie'] ?>" /></td>
		    <td>&nbsp;</td>
		    <td colspan="2" class="trait_jaune"><em><strong>Fax :</strong></em></td>
		    <td><input name="fax_dde" tabindex="13" type="text" id="fax_dde" value="<? echo $result['fax_dde'] ?>" /></td>
            </tr>
			</table>
			<INPUT type="reset" class='bouton' value="Effacer" name="reset">&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" class='bouton' name="Submit6" value="Envoyer">
			</form>

Posté : 30 juin 2007, 15:59
par Cyrano
As-tu noté ceci :

Code : Tout sélectionner

<select ..... onChange="form1.submit();">
:?:

Posté : 30 juin 2007, 16:48
par Kimble
salut Cyrano, suite à mon post http://www.phpfrance.com/forums/viewtop ... highlight= j'ai été obligé d'utiliser le SUBMIT pour afficher des données dans mes input...Je sais que c'est lui qui me pose probléme ![/url]

Posté : 30 juin 2007, 19:13
par Cyrano
En résumé, si je comprends bien, tu as besoin d'un "onsubmit" et tu es embarrassé par ce même "onsubmit" |*()

Ça voudrait donc dire que le formulaire ne doit être envoyé que sous certaines conditions. Comme on est coté client, ça va se passer en JavaScript puisqu'il faudra intercepter la tentative d'envoi pour vérifier s'il faut effectivement ou non procéder...

Et ça signifie qu'il faut que tu définisses sous quelle(s) condition(s) on envoie le formulaire : quand tu auras fait ça, il faudra le traduire en code. :-k

Posté : 30 juin 2007, 21:00
par Kimble
Tu as tout compris, Cyrano...D'habitude j'arrive à m'en sortir, mais là j'en suis incapable ! :cry:

Posté : 30 juin 2007, 21:07
par Cyrano
Bien sur que si que tu en es capable, simplement tu n'arrives pas à "visualiser" le processus.

Il faut "atomiser" le problème. Tu fais de la programmation, donc il faut "penser comme une machine" : la question est complexe ? Alors il faut la décomposer en plusieurs questions simples de telle sorte qu'à chacune des question ne puissent correspondre que deux réponses : "true" ou "false".

Ça, je ne pourrai pas le faire à ta place, tu connais la nature de ton application mieux que quiconque ici.

Alors ceci dit, je vois une autre option : tu as un onchange qui met à jour la page en soumettant le formulaire : pourquoi ne pas exploiter AJAX ? Dans ce cas, pas de rechargement de toute la page et dans ce cas, au lieu de faire un submit en sélectionnant un item, tu appellerais une fonction JavaScript qui va créer un objet XHR pour mettre à jour la partie nécessaire de ton formulaire et pour envoyer ce dernier, il faudra utiliser le bouton approprié :)