Select et input....

Résolu
sangoh Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
comme j'ai trouver pas mal de soutient sur ce forum et bien je profite et je reviens vers vous !

voila ma question du jours : je créé un formulaire avec un select qui est alimenté dynamiquement par ma bdd et plusieurs champs !

comme le select est alimenter par ma table ( 2 champs : id et libelle ) j'ai fait ça en ce qui concerne ce select ( ça marche)
	
<?php
	include ("includes/connect.inc.php");
		
		$connexion = mysql_connect ($host,$user,$password)
					or die ("Connexion au serveur impossible");
		$db=mysql_select_db($database,$connexion)
					or die ("selection de la base de données impossible");
		$sql = " SELECT uf, libelle from service order by uf";
		$result = mysql_query($sql) or die ("Impossible d'executer la requete");


/*creation du formulaire contenant la liste de selection */
echo "<tr><td>Uf du services : </td>";
echo "<td><select name='services'>\n ";

/* boucle de lecture de la table*/
while ($ligne = mysql_fetch_array($result))
	{
		extract($ligne);
		if ($uf<>"")
		echo "<option value ='$uf'>$uf\n";
	}	
		echo"</selct>\n</td></tr>";
?>
		<tr>
		<td>Libellé :</td>
		<td> <input type="text" name="libelle" value=<?php echo"$ligne[libelle]";?>></td>
		</tr>
	

		<tr>
		<td>Type d'examen :</td>
		<td> <input type="text" name="T_examen" value=""></td>
		</tr>
		<tr>
		<td>Date :</td>
		<td> <input type="date" name="date" value=""></td>
		</tr>
		<tr>
		<td>Heure :</td>
		<td> <input type="text" name="heure" value=""></td>
		</tr>
	</table>
		</br>
		<input type="submit" value="enregistrer">
		
	
</form>

<?php
mysql_close ($connexion);
include ("includes/footer.inc.php");

?>
</tr>
</table>
<?php
include ("includes/footer2.inc.php");
?>

par contre ce que je n'arrive pas a faire c'est récupérer le champs libelle dans le input "nom". et lorsque je j'arrive a récupérer une valeur elle ne correspond pas a la valeur récupérer par le select...... est ce possible ?

7 réponses

__construct
 
Bonjour,
Je ne vois pas de input qui a pour name "nom", je vois bien un input "libelle". Si c'est de celui là dont tu parles, c'est normal car la variable $ligne['libelle'] n'est pas accessible en-dehors de la boucle while, de plus, ton extract() ne sert à rien, ou plutôt il fait double usage.
D'autre part, si tu cherches à tester une variable vide, c'est plus compréhensible et logique d'utiliser l'opérateur de comparaison != (différent de) ou bien d'utiliser empty(), mais chacun sa manière de programmer, du moment que toi tu arrives à relire ton code...
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
quelques erreurs complémentaire a ce que signale _construct

/* boucle de lecture de la table*/
while ($ligne = mysql_fetch_array($result))
	{		
		if ($ligne['uf'] != "")
			echo "<option value ='$ligne[uf]'>$ligne[uf]</option>\n"; //la il te manquait la fermeture </option>
	}	
		echo"</select>\n</td></tr>"; //la erreur de frappe tu avait selct
?>
		<tr>
		<td>Libellé :</td>
		<!-- ligne ci dessous tu ne peux pas utiliser $ligne [...]  en dehors de ta boucle while
		en fait ce que tu recupères ici c'est la derniere valeur de la boucle while et je ne pense que que ce soit ce que tu cherches a faire
		-->
		<td> <input type="text" name="libelle" value=<?php echo"$ligne[libelle]";?>></td>
		</tr>
	
0
sangoh Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
<?php
	include ("includes/connect.inc.php");
		
		$connexion = mysql_connect ($host,$user,$password)
					or die ("Connexion au serveur impossible");
		$db=mysql_select_db($database,$connexion)
					or die ("selection de la base de données impossible");
		$sql = " SELECT uf, libelle from service order by uf";
		$result = mysql_query($sql) or die ("Impossible d'executer la requete");


/*creation du formulaire contenant la liste de selection */
echo "<tr><td>Uf du services : </td>";
echo "<td><select name='services'>\n ";

/* boucle de lecture de la table*/
while ($ligne = mysql_fetch_array($result))
	{
		if ($ligne['uf']!="")
		echo "<option value ='$ligne[uf]'>$ligne[uf] $ligne[libelle]</option>\n";
	}	
		echo"</select>\n</td></tr>";
?>
		<tr>
		<td>Libellé :</td>
		<td> <input type="text" name="libelle" value=<?php echo"$ligne[libelle]";?>></td>
		</tr>


bon j'ai rectifié mes erreurs (enfin je crois !)
et donc si j'ai bien tout compris : les valeurs récupérer dans par ma boucle restent dans la boucle et donc je ne peux pas les par exemple récupéré cette valeur si je veux par exemple que mon <input> corresponde à mon select ?(je suis pas sur d'avoir était clair la !)

juste pour info dans la requête exécutée plus haut je récupère ma clé primaire ( ici "uf") et le champs "libelle" qui lui est associé !.
j'ai modifié mon select afin de récupérer l'uf et le libelle.
maintenant ce que je veux savoir c'est qu'une fois que j'ai ces valeurs lorsque j'en choisis une et bien d'une part dans le select je veux l'uf et dans le input le libelle associé a cet uf !
donc dois je mettre dans ma boucle mon input ?
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
je crois comprendre ce que tu veux:
qd on selection un service uf dans le select ça affiche dans l'input la valeur de libelle correspondante.

il faut passer par du javascript pour réaliser ça, car le choix dans le select va déclencher l'affichage correspondant

je dois m'absenter je te fais un bout de code plus tard
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Voilà j'espère ne pas avoir fait de fautes de frappe:

<head>
<script type="text/javascript">
//initialisation de l'array JS
var tab_services= new Array();

//fonction qui affiche la valeur correspondante dans l'input
function affiche_input(){
	//on lit ce qui a été selectionné dans la liste
	var service=document.getElementById('services').value;
	if(service != "-1"){ //si ce n'est pas la première ligne "choisissez"
		//on modifie la value de l'input avec la valeur correspondante au service selectionné lue dans l'array
		document.getElementById('libelle').value = tab_services[+'"'+service+'"'];
	}
}
</script>
</head>

<?php
	include ("includes/connect.inc.php");
		
		$connexion = mysql_connect ($host,$user,$password)
					or die ("Connexion au serveur impossible");
		$db=mysql_select_db($database,$connexion)
					or die ("selection de la base de données impossible");
		$sql = " SELECT uf, libelle from service order by uf";
		$result = mysql_query($sql) or die ("Impossible d'executer la requete");


/*creation du formulaire contenant la liste de selection */
echo '<tr><td>Uf du services : </td>';
echo '<td><select name="services" id="services" onchange="affiche_input();">\n ';
echo '<option value=-1>-- Choisissez --</option>'; //cette ligne c'est pour qu'il y ait un changement dans tout les cas sinon si selection ligne 1 ça ne fait pas le onchange

/* boucle de lecture de la table*/
while ($ligne = mysql_fetch_array($result))
	{
		if ($ligne['uf']!="")
		echo '<option value ="'.$ligne['uf'].'">'.$ligne['uf'].' </option>\n';
		//la on va charger l'array initialisé plus haut, c'est un array dont les index sont alphanum (correspondant aux services) et les valeurs = les libellés correspondants
?>	
	<script type="text/javascript">
		var tab_services["<?php echo $ligne['uf']; ?>"] = "<?php echo $ligne['libelle']; ?>";
	</script>
	
<?php	
	} //fin boucle while	
		echo"</select>\n</td></tr>";
?>
		<tr>
		<td>Libellé :</td>
		<td> <input type="text" name="libelle" id="libelle" value=""></td>
		</tr>
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
j'ai eu un peu plus de temps pour tester, deux petites rectifs:

dans la fonction JS:

if(service != "-1"){ //si ce n'est pas la première ligne "choisissez"
		//on modifie la value de l'input avec la valeur correspondante au service selectionné lue dans l'array
		document.getElementById('libelle').value = tab_services[service]; //cette ligne modifiée, plus le else rajoute
	}else{
		document.getElementById('libelle').value = ""; //si la première ligne "choisissez" on vide l'input
	}

et dans la boucle while

<script type="text/javascript">
		tab_services["<?php echo $ligne['uf']; ?>"] = "<?php echo $ligne['libelle']; ?>"; //supprimer var
	</script>
0
sangoh Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
je te remercie c'est exactement ce que je voulais faire.....je me doutais bien qu'il fallait du js mais je ne savais pas comment l'écrire !

je te remercie vraiment beaucoup !

si tu le permet j'aimerais bien faire appelle a tes connaissances si cela ne te dérange pas !
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
ok
0