Page 1 sur 1

Onclick sur un <li>

Posté : 09 juin 2008, 14:47
par joss91
Bonjour,

Voici mon contexte :

Je fais une autocomplétion (qui marche niquel) puis lorsque je clique sur l'élément désiré dans ma liste déroulante, le contenu se met dans le input adéquate. Jusque là tout va bien. Sauf que je désire maintenant mettre un autre élement de ma base (en relation avec l'élément choisi) dans un autre input. Je me suis dis ceci :

onclick="document.getElementById('autre_input').value = <? echo $autre_element_de_ma_base ; ?>";

Voici mon code pour mieux comprendre où je l'ai placé :



 
<?php 
 
session_start();
	
 
	if(isset($_POST['chef'])){
		header('Content-type: text/html; charset=iso-8859-1');
		// on inclut la connexion
		mysql_connect('serveur', 'utilisateur', 'mdp');
		mysql_select_db('base');
		
		// on fait la requête
		$sql = "SELECT `nom`, `prenom`, `id`, `id_client`
				FROM `medicament`
				WHERE `nom` LIKE '".$_POST['chef']."%' AND `id_client`='".$_SESSION['id']."'";
		$req = mysql_query($sql);
		
		$i = 0;
		echo '<ul class="contacts">';
		// on boucle sur tous les éléments
		while($autoCompletion = mysql_fetch_assoc($req)){
			echo '
			<li class="contact" ><div class="nom" onclick="remplir('.$autoCompletion['prenom'].');">'.$autoCompletion['nom'].'</div>
			<div class="prenom">
			<span class="informal">'.$autoCompletion['prenom'].'</span>
			</div>
			</li>';
			// on s'arrête s’il y en a trop
			if (++$i >= 10)
				die('<li>...</li></ul>');
		}
		echo '</ul>';
		die();
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="lib/scriptaculous.js"></script>
<script type="text/javascript" src="lib/autocompletion.js"></script>
<style type="text/css">
<body>
 
<!--Liste des personnes présentes dans la base :<br/>-->
<?php
	mysql_connect('serveur', 'utlisateur', 'mdp');
	mysql_select_db('base');
	
	// on fait la requête
	$sql = "SELECT `nom`, `prenom`, `id`
			FROM `medicament`
			WHERE `nom` LIKE '".$_POST['chef']."%' AND `id_client`='".$_SESSION['id']."'";
	$req = mysql_query($sql);
	while($autoCompletion = mysql_fetch_assoc($req)){
		//echo '<u>'.$autoCompletion['id'].'.</u> '.$autoCompletion['nom'].'<br/>';
	}
?>
</style>
<form action="?" method="post" onsubmit="return false;">
	<label for="chef"></label>
	<input type="input" size="25" name="chef" id="chef" value="" />
	<input type="text" name="chef2" id="chef2" value="" /> 
	<div class="update" id="chef_update"></div>
	<input type="hidden" name="chef_id" id="chef_id" value="" /> 
	
</form>
<br/>
<!--<span id="chef_log"></span>-->
 
<script type="text/javascript">
new Ajax.Autocompleter ('chef',
						'chef_update',
						'autocompletion.php',
						{
							method: 'post',
							paramName: 'chef',
							afterUpdateElement: ac_return
						});
 
 
function remplir(a)
{
document.getElementById('chef2').value = a;
}
 
</script>
 
</body>
</html>
 


En fait pour résumer, je fais un onclick sur <div class="nom"> puis je fais appel à la fonction remplir(a).

Le code erreur est le suivant : "ma_valeur is not defined". Deja il lit bien ma valeur mais il dit qu'elle n'est pas définie...

Comment y remédier svp ?

Posté : 09 juin 2008, 16:53
par Vurtu
un petit oublis de quote et un point virgule mal placé je pense ...
Essais donc :

onclick="document.getElementById('autre_input').value = '<? echo $autre_element_de_ma_base ; ?>';"

Posté : 10 juin 2008, 10:56
par joss91
ok mais le prob n'est pas résolu... le input chef2 reçoit "undefined" ... ?? :s

Code :
echo '<ul class="contacts">';
		// on boucle sur tous les éléments
		while($autoCompletion = mysql_fetch_assoc($req)){

			echo '
			<li class="contact" value="'.$autoCompletion['prenom'].'"><div class="nom" onclick="remplir(this.value);" >'.$autoCompletion['nom'].'</div>
			<div class="prenom">
			<span class="informal">'.$autoCompletion['prenom'].'</span>
			</div>
			</li>';
			// on s'arrête s’il y en a trop
			if (++$i >= 10)
				die('<li>...</li></ul>');
		}
		echo '</ul>';


...



<script type="text/javascript">

function remplir(a)
{
document.getElementById('chef2').value = a;
}

</script>

Posté : 10 juin 2008, 12:38
par Truc
il n'y a pas d'attribut value pour un élément <div> ....

Posté : 10 juin 2008, 13:38
par joss91
d'accord mais je seche un peu à vrai dire... j'ai retourné tout dans tous les sens... :(

Posté : 10 juin 2008, 15:37
par Truc
Dans le simple :-k
echo ' ... onclick="remplir('.$autoCompletion['prenom'].');"  ... ';

Posté : 10 juin 2008, 16:55
par joss91
bon je me suis arrangé autrement, avec des bidouillages javascript notamment :)
merci quand même Truc ! ;)