11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour!

Je ne sais pas si poste au bon endroit mais bon...

Voilà mon soucis, j'ai un site web à faire assez complexe, qui nécessite une arborescence de menu sur 3 ou 4 niveaux minimum. l'arborescence est stockée dans une table, le site réalisé en php. le découpage de la page est en lui même assez complexe puisqu'on aurait une page découpée en 6, 7 div, et j'aurais très souvent besoin de ne pouvoir recharger qu'une seule div, ce que je vais faire avec xmlHttpRequest.

Mon problème est le suivant j'aimerai que mon menu apparaisse en surbrillance quand je suis dans une rubrique, pour tous les niveaux de profondeur bien entendu, seulement j'aimerai éviter d'être obligée de passer systématiquement des paramètres sur toutes mes pages (si je gère mes menus avec php) et j'aimerai me simplifer la vie au maximum avec le javascript. comme je ne recharge pas mes pages, il est difficile de faire les changements d'états et je ne peux pas me fier à l'url de ma page puisqu'elle non plus ne change pas ...

Je sais pas si je suis très claire là Smiley biggol mais si quelqu'un arrivait à me comprendre et avait une idée de génie pour me tirer de là Smiley sweatdrop suis partante Smiley lol
Bonjour Smiley smile

Je ne sais pas si ce que je vais essayer d'expliquer va répondre a ton probleme, mais néanmoins je vais essayer.

Dans ton menu, chaque item fait partie d'une classe correspondant a un menu desactivé.
Quand tu cliques sur l'un de ces item, tu reload ta div de contenu et tu voudrais que l'item du menu passe en "activé".
Ne peux tu pas simplement définir une classe de menu activé et changer la classe de ton item de menu par javascript au moment du click ?
Merci déjà de ta part d'avoir pris le temps de me répondre Smiley biggrin

tu parles de classe au sens objet du terme? une classe php?

J'ai pas vraiment de problème pour afficher l'effet "rollover" en fait, je peux le faire en php (en passant dans l'url les id de mes élements je sais exactement où je me trouve dans l'arborescence mais je me retrouve avec 4 paramètres à passer partout Smiley eek ) et je peux aussi le faire en javascript ou même avec les css (quoi qu'il ne me semble pas que ca marche sous mozilla...)

je voudrais surtout trouver une façon simple de parcourir mon arborescence dans ma base, de l'afficher soit pliée soit dépliée bien sur et de ne pas avoir besoin de passer 50 paramètres pour spécifier sur quelle feuille de l'arbre je me situe en fait...

Je me suis dit que je pouvais essayer de stocker les paramètres en base ou alors dans une session mais comme ca change systématiquement et que par la suite j'aurais des requêtes avec des paramètres plus complexes je voudrais éviter de prendre le risque de perdre un paramètre en route qui ne me serve qu'à faire de l'affichage... (et de me les trimballer dans tous mes formulaires...)

Je comprends pas bien ce que tu essaies de m'expliquer en fait...
Smiley sweatdrop et je suis même pas certaine d'ailleurs qu'il y ait une réponse efficace pour faire ce que je veux Smiley fache

je te copie-colle mon code , attention prépare toi au pire Smiley lol c'est très crade et ca ne me convient pas du tout mais ca marche et ça m'a permis de faire des tests en attendant de trouver mieux...


<div id="menuGaucheHaut" class="menuGaucheHaut alignG">
	<?php 
	 if (isset($_REQUEST['idp']))
	{	
	  $requete="select * from fi_arbre where ID_PERE='".$_REQUEST['idp']."' order by ORDRE_AFFICHAGE asc ";
	$req=$bdd->exec($requete);  
		 		
	while ($line=$bdd->objetSuivant($req))
	{		 			 
	   $id_pere_detail=$line['ID_FI_ARBRE'];
		 		
	    if ($line['ID_FI_ARBRE']==$_REQUEST['idf'] || ereg($_SERVER['PHP_SELF'], $line['URL']))
	    {
		print '<span class="simple">'.$line['LIBELLE'].'</span><br/>';	
		 				
/********* 2nd niveau d'arborescence ****************/
$requete_ssmenu="select * from fi_arbre where ID_PERE='".$_REQUEST['idf']."' order by ORDRE_AFFICHAGE asc ";
$req_ssmenu=$bdd->exec($requete_ssmenu); 	
	
while ($line_ssmenu=$bdd->objetSuivant($req_ssmenu))
    {
	$id_pere_ssmenu=$line['ID_FI_ARBRE'];
		 		
	if ($line_ssmenu['ID_FI_ARBRE']==$_REQUEST['idd'] || ereg($_SERVER['PHP_SELF'], $line_ssmenu['URL']))
	{
	    print "     - ";
	    print '<span class="simple">'.$line_ssmenu['LIBELLE'].'</span><br/>';	

/******* 3ème niveau d'arborescence ***********/
$requete_ss_ssmenu="select * from fi_arbre where ID_PERE='".$_REQUEST['idd']."' order by ORDRE_AFFICHAGE asc "; 
$req_ss_ssmenu=$bdd->exec($requete_ss_ssmenu); 	

while ($line_ss_ssmenu=$bdd->objetSuivant($req_ss_ssmenu))
  {			 				$id_pere_ss_ssmenu=$line['ID_FI_ARBRE'];
	
            if ($line_ss_ssmenu['ID_FI_ARBRE']==$_REQUEST['idm'] || ereg($_SERVER['PHP_SELF'], $line_ss_ssmenu['URL']))
	{
	   print "          - ";
	   print '<span class="simple">'.$line_ss_ssmenu['LIBELLE'].'</span><br/>';						 }					 		else 
	{	
	    print "          - ";
	    print '<a href="'.$line_ss_ssmenu['URL'].'?idp='.$_REQUEST['idp'].'&idf='.$_REQUEST['idf'].'&idd='.$_REQUEST['idd'].'&idm='.$line_ss_ssmenu['ID_FI_ARBRE'].'" class="lien_orange">'.$line_ss_ssmenu['LIBELLE'].'</a><br/>';		}
}	

/************* Fin 3ème niveau ***************/
}
else 
{	
   print "     - ";
   print '<a href="'.$line_ssmenu['URL'].'?idp='.$_REQUEST['idp'].'&idf='.$_REQUEST['idf'].'&idd='.$line_ssmenu['ID_FI_ARBRE'].'" class="lien_gris">'.$line_ssmenu['LIBELLE'].'</a><br/>';	
	}
}

/************ Fin 2ème niveau *************/
}
else 
{
	print '<a href="'.$line['URL'].'?idp='.$_REQUEST['idp'].'&idf='.$id_pere_detail.'" class="lien_clair">'.$line['LIBELLE'].'</a><br/>';	
	}		
   }
}

 ?>
</div>

Modifié par Sunee (20 Feb 2006 - 16:07)
Je parlais d'une class en css en fait Smiley smile
pour un rollover, je te conseille également de passer par le css plutot que par le javascript.

Ceci étant dit, je te conseille d'attendre l'avis d'un expert car je suis loin d'en être un.
Ben je vois pas bien en quoi une classe css va me permettre de ne plus devoir passer de paramètres dans toutes mes url Smiley ohwell Smiley ohwell
Bijou, Bijour

je vais voir si j'ai bine compris Smiley murf
tout ton menu est compris dans un seul div c'est bien ca???
et tu stock chaque "lien" de ton menu dans un table, c'est toujour bien ca ???
tu le stock dans une table car il doit souvent évoluer?? si c'est la cas je comprend mais sinon je ne vois pas l'interet? (a vec mon petiot niveau, amen)
pourquoi ne te contente tu pas de l'inclusion pour ton menu ???
avec php je ne suis pas tres sur mais son faux-frere l'asp permet de recharger juste certains element d'un page.

ca par contre je suis sur, pour la surbrillance le css et les evenements souris devrait te suffire, non??