Onclick sur un <li>

Eléphant du PHP | 57 Messages

09 juin 2008, 14:47

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 ?
Joss91

Eléphant du PHP | 139 Messages

09 juin 2008, 16:53

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 ; ?>';"

Eléphant du PHP | 57 Messages

10 juin 2008, 10:56

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>
Joss91

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 juin 2008, 12:38

il n'y a pas d'attribut value pour un élément <div> ....

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 57 Messages

10 juin 2008, 13:38

d'accord mais je seche un peu à vrai dire... j'ai retourné tout dans tous les sens... :(
Joss91

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 juin 2008, 15:37

Dans le simple :-k
echo ' ... onclick="remplir('.$autoCompletion['prenom'].');"  ... ';

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 57 Messages

10 juin 2008, 16:55

bon je me suis arrangé autrement, avec des bidouillages javascript notamment :)
merci quand même Truc ! ;)
Joss91