Bonjour,

Voilà je souhaite absolument me faire une chouette liste déroulante qui interviendra sur des données provenant d'une base de données.

Alors voilà le hic j'ai regardé le code sur le tutos pour créer les listes déroulantes et en essayant de l'adapter avec mon code php c'est chaud.

Mon principale probléme c'est évidement d'incrémenter l'id de mon 'sous-menu' dans ma boucle php.

Au niveau de l'en tête évidement j'ai mis ceci :

<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
//-->
</script>


ensuite pour mon code php pour l'instant j'ai ceci :

$requete="SELECT id_valeur, titreVal, contenuVal, autreVal from valeurs order by titreVal;";
			
		$result=mysql_query($requete);
		$nbenreg=mysql_num_rows($result);				
		if($nbenreg==0)
		{
		print "pas de resultat";
		mysql_close($connexion);
		exit();
		}
		else
			{			
			print"<BR><center>";			
			print"<div>";
			while($tableau=mysql_fetch_array($result))
				{								
				print"
				<dl id='menu'>";				
				?>	
					<dt onClick="javascript:montre('smenu');">
						<?						
						print"$tableau[titreVal]</dt>					
					<dd id='smenu2'					
						<ul>
							<li><a href=''>$tableau[contenuVal]</a></li>
						</ul>
					</dd>
					
				</dl>";
					
				}		
			}
			print"</div>";	
		}
}
?>


Je voulais savoir si déjà mon idée était concrétisable
ensuite Smiley biggrin si certain avaient une idée pour incrémenter mon <dd id='smenu2', je pourrais essayer d'avoir une liste déroulante entiérement dynamique.

merci de l'aide qui pourrait m'être apporté
Modifié par jive7 (30 Mar 2007 - 23:41)
bonne nouvelle,
j'ai trouvé que je pouvais mettre une variable dans mon dd
comme ceci
<dd id=\"smenu$i\">


maintenant je doit trouver comment affecter cette même variable à la balise dt ou se trouve mon petit bout de javascript ici :
<dt onClick="javascript:montre('smenu???');">

et ensuite j'incrémente je suppose.

Mais je ne sais pas comment faire et si c'est possible de concatener une variable plutôt php à mon javascript
Modifié par jive7 (31 Mar 2007 - 00:12)
et bien si c'est possible
voilà ce que j'ai trouvé :
				<dl id='menu'>";				

				print"<dt onClick=\"javascript:montre('smenu$i');\">$tableau[titreVal]</dt>				
					<dd id=\"smenu$i\">					
						<ul>
							<li><a href=''>$tableau[contenuVal]</a></li>
						</ul>
					</dd>
					
				</dl>";
					$i=$i+1;


Voilà maintenant je dois trouver comment enlever les puces...
Modifié par jive7 (31 Mar 2007 - 00:18)
raaah j'ai trop du mal avec javascript

j'ai voulu mettre le code ci-dessus dans ma page mais le probléme c'est que j'ai déjà un code javascript qui sert à une autre liste déroulante qui elle n'utilise pas de code php.

Et on dirait que mes deux codes javascripts se courcicuite.

j'avais cà en tête de page en plus
<script type="text/javascript">

window.onload=montre;
function montre(id)
 	{
		var d = document.getElementById(id);
		for (var i = 1; i<=10; i++)	
		{
			if (document.getElementById('smenu'+i)) 
			{
			document.getElementById('smenu'+i).style.display='none';
			}		 
 		}	
			if (d) 
			{
			d.style.display='block';
			}
	}
//-->
if (document.getElementById('sectionLinks').offsetHeight < 500)   document.getElementById('sectionLinks').style.height = '500px';
</script>


Est ce que c'est possible de les distinguer ? et ou je dois changer les noms de variables dans java ?

pas trés clair, j'espére que j'aurais la possibilité d'éditer pour faciliter le post.
Resalut; ca doit faire marrer tout le monde de me voir répondre 5 fois à la suite mais bon c'est que ca avance; néanmoins y'a encore un petit truc qui ne va pas.
Au chargement, toute mes listes sont apparentes alors qu'elles devraient être caché.
Est ce que j'ai fait une erreur dans la fonction à votre avis :
window.onload=montre2;
function montre2(id) {
var d = document.getElementById(id);
	for (var j = 1; j<=10; j++) {
		if (document.getElementById('sval'+j)) {document.getElementById('sval'+j).style.display='none';}
	}
if (d) {d.style.display='block';}
}


En fait en cliquant sur mes terme de définitions (mes titres) ca affiche bien la liste que je veux et ca cache les autres; mais au chargement j'ai tout d'affiché...et enfin j'aimerais bien que lorsque je sors ma souris de la liste en générale tout se referme.

Merci de votre aide.
++
Modifié par jive7 (31 Mar 2007 - 02:30)