Liste déroulante sans submit() ?

Eléphant du PHP | 96 Messages

30 juin 2007, 14:59

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>

Mammouth du PHP | 19672 Messages

30 juin 2007, 15:59

As-tu noté ceci :

Code : Tout sélectionner

<select ..... onChange="form1.submit();">
:?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 96 Messages

30 juin 2007, 16:48

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]

Mammouth du PHP | 19672 Messages

30 juin 2007, 19:13

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 96 Messages

30 juin 2007, 21:00

Tu as tout compris, Cyrano...D'habitude j'arrive à m'en sortir, mais là j'en suis incapable ! :cry:

Mammouth du PHP | 19672 Messages

30 juin 2007, 21:07

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é :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: