IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Javascript et PHP.


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Par défaut Javascript et PHP.
    Bonjour,

    Voila je blogue sur un probleme tous simple qui et de changer la class d'un lien d'un menu générer en php via une base de données.

    pour tous ces lien, j'ai bien un identifiant unique afin de ne changer q'un seul lien. Or lorsque je suis dans un sous menu, j'appelle la fonction javascript, mais celle ci na pas l'air de fonctionner.

    Voila mon script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ($bddChemin == $Chem)
    {
    ...
    $IDClass = str_replace(' ','',$SS_MENU["Menu"]);
    $IDClass = $IDClass.'2';
    echo ' <script> ChangeClass('.$IDClass.'); </script>';
    }
    Et voici ma fonctions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    echo ' <script>';
    	echo ' ChangeClass(IDMenu)';
    	echo '{';
    	echo ' document.getElementById(\'IDMenu\').className = \'link\';';
    	echo ' alert(\'IDMenu\');';
    	echo ' };';
    echo ' </script>';
    Comme vous pouvez le voir le script et dans une page php.

    Je ne vois pas ou j'ai pu me trompez.
    Merci de bien vouloir m'eclairer.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    Salut!
    Je crois que tu essayes de de changer la classe de ton lien actif non?
    Il y'a une propriété css pour ca. Je sais plus là quel ....

    Sinon pourquoi tu génère ton js via php? Notamment la fonction ChangeClass?

    Et manque du code aussi, car là , et au vue de tes explications, c'est chaud de t'aider ...

    bye

  3. #3
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Citation Envoyé par kimjoa
    pourquoi tu génère ton js via php ? Notamment la fonction ChangeClass ?
    Il y manque d'ailleurs le mot clé function.

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<script type="text/javascript">';
    echo 'function ChangeClass(IDMenu)';

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Par défaut
    Voici en faite mon code qui genere mon menu et sous menu:

    code du menu qui creer un lien vers une page web ou un lien de survol:

    Ma table menu et composer des champs suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    +----+----------------+------------------+------+
    | ID | Nom            | Chemin           | Rang |
    +----+----------------+------------------+------+
    |  4 | Acceuil        | index.php        |    1 |
    |  6 | News           | News.php         |    2 |
    |  7 | Equipes        |                  |    3 |
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    echo '<div id="menu">';
    	$sql = "SELECT * FROM MENU ORDER BY Rang ASC";
    	$requete = mysql_query ($sql);
    	echo '<ul>';
    	while ($Data = mysql_fetch_assoc($requete))
    	{
    		$sql = "SELECT Nom FROM MENU WHERE Nom != '$Data[Nom]' ORDER BY Rang ASC";
    		$requete2 = mysql_query ($sql);
    		echo '<li onmouseover="';
    		while ($Menu = mysql_fetch_assoc($requete2))
    		{
    			$Var=str_replace(' ','',$Menu["Nom"]);
    			echo 'cacheId(\''.$Var.'\');';
    		}
    		$Var2=str_replace(' ','',$Data["Nom"]);
    		echo 'afficheId(\''.$Var2.'\');"';
    		$Chemin = $Data["Chemin"];						//si c est un dossier, alors pas de lien.
    		$modeleChemin = 'php$';
    		if (ereg ($modeleChemin,$Chemin) === FALSE)
    		{
    			$Class = ' class=""';
    			echo '<a id="'.$Var2.'2" '.$Class.'>'.$Data["Nom"].'</a></li>';
    		}
    		else
    		{
    			$page = $_SERVER['PHP_SELF'];
    			$arrayPage = explode ("/",$page);
    			$tab = count ($arrayPage);
    			$tab--;
    			if ($Data["Chemin"] == $arrayPage[$tab])
    			{
    				$Class = ' class="link"';
    			}
    			else
    			{
    				$Class = ' class=""';
    			}
    			echo '<a id="'.$Var2.'2" '.$Class.' href="'.$url.''.$Data["Chemin"].'">'.$Data["Nom"].'</a></li>';
    		}
    	}
    	echo '</ul>';
    echo '</div>';
    et voici mon code pour gerer les sous menu qui sont fait via la bdd suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    +----+------------------------------------+-----------------------------+------+----------------+
    | ID | Nom                                | Chemin                      | Rang | Menu           |
    +----+------------------------------------+-----------------------------+------+----------------+
    |  4 | Promotions                         | Saison2010_2011/Equipes.php |    1 | Equipes        |
    |  5 | 2eme Divisions                     | Saison2010_2011/2emeDiv.php |    2 | Equipes        |
    |  6 | U15                                | Saison2010_2011/U15.php     |    3 | Equipes        |
    |  8 | U14                                | Saison2010_2011/U14.php     |    4 | Equipes        |
    | 19 | Pr&eacute;-D&eacute;butants(U6-U7) | Saison2010_2011/U6-U7.php   |    1 | Ecoles de foot |
    | 21 | Poussins(U10)                      | Saison2010_2011/U10.php     |    3 | Ecoles de foot |
    | 22 | Poussins(U11)                      | Saison2010_2011/U11.php     |    4 | Ecoles de foot |
    | 23 | Benjamins (U12-U13)                | Saison2010_2011/U12-U13.php |    5 | Ecoles de foot |
    | 24 | Photos                             | Photos.php                  |    1 | Photos         |
    | 25 | Vid&eacute;os                      | Videos.php                  |    2 | Photos         |
    | 26 | Saison 2009 2010                   | Saison2009_2010             |    1 | Historique     |
    | 39 | D&eacute;butants (U8-U9)           | Saison2010_2011/U8-U9.php   |    2 | Ecoles de foot |
    +----+------------------------------------+-----------------------------+------+----------------+
    le code des sous menu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    echo '<div id="ss_menu">';
    	$sql = "SELECT DISTINCT Menu FROM SS_MENU";
    	$requete = mysql_query ($sql);
    	while ($Data = mysql_fetch_assoc($requete))
    	{
    		$Var=str_replace(' ','',$Data["Menu"]);
    		echo'<ul id="'.$Var.'" onmouseover="afficheId(\''.$Var.'\');" onmouseout="cacheId(\''.$Var.'\');">';
    		$sql = "SELECT * FROM SS_MENU WHERE Menu = '$Data[Menu]' ORDER BY RANG ASC";
    		$requete2 = mysql_query ($sql);
    		while ($SS_MENU = mysql_fetch_assoc($requete2))
    		{			
    			$file = $SS_MENU["Chemin"];
    			$modelefile = 'php$';
    			if (ereg ($modelefile,$file) === FALSE)			//si c'est un dossier (pour menu historique).
    			{
    				echo '<li style="color:#FFFFFF;"><bg>'.$SS_MENU["Nom"].'</bg></li>';
    				test_dossier($file);
    				$le_repertoire = opendir($file)or die("Erreur le repertoire $repertoire existe pas");
    				while($fichier = @readdir($le_repertoire))
    				{
    				 	if(ereg ($modelefile,$fichier) === false)
    					{	
    					}
    					else
    					{
    						$fich=str_replace('.php','',$fichier);
    						$page = $_SERVER['PHP_SELF'];				//permet de mettre la class link si on est sur la bonne page
    						$arrayPage = explode ("/",$page);
    						$tab = count ($arrayPage);
    						$tab--;
    						$part1 = $arrayPage[$tab];					//recupere le nom du fichier de la page courante
    						$tab--;
    						$part2 = $arrayPage[$tab];					//recuperer le dossier de la page courante.
    						$Chem = $part2.'/'.$part1;					//creer le chemin de la page cournate.
    						$bddChemin = $SS_MENU["Chemin"].'/'.$fichier;	//creer le chemin pour chaque fihier du repertoire
    						if ($bddChemin == $Chem)
    						{
    							$Class = ' class="link"';
    							$IDClass = str_replace(' ','',$SS_MENU["Menu"]);
    							$IDClass = $IDClass.'2';
    							echo ' <script> ChangeClass('.$IDClass.'); </script>';
    						}
    						else
    						{
    							$Class = ' class=""';
    						}
    						echo'<li><a'.$Class.' href="'.$url.''.$SS_MENU["Chemin"].'/'.$fichier.'">'.$fich.'</a></li>';
    					}
    				}
    				closedir($le_repertoire);
    			}
    			else
    			{
    				$page = $_SERVER['PHP_SELF'];				//permet de mettre la class link si on est sur la bonne page
    				$arrayPage = explode ("/",$page);
    				$tab = count ($arrayPage);
    				$tab--;
    				$arraybdd = explode ("/",$SS_MENU["Chemin"]);
    				$tabbdd = count ($arraybdd);
    				$tabbdd--;
    				if ($arraybdd[$tabbdd] == $arrayPage[$tab])
    				{
    					$Class = ' class="link"';
    					$IDClass = str_replace(' ','',$SS_MENU["Menu"]);
    					$IDClass = $IDClass.'2';
    					echo ' <script> ChangeClass('.$IDClass.'); </script>';
    				}
    				else
    				{
    					$Class = ' class=""';
    				}
    				echo '<li><a'.$Class.' href="'.$url.''.$SS_MENU["Chemin"].'">'.$SS_MENU["Nom"].'</a></li>';
    			}
    		}
    		echo '</ul>';
    	}
    echo '</div>';
    et pour finir, ma fonctions javascript:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    echo ' <script type="text/javascript">';
    	echo ' function ChangeClass(IDMenu)';
    	echo '{';
    	echo ' document.getElementById(\'IDMenu\').className = \'link\';';
    	echo ' alert(\'IDMenu\');';
    	echo ' };';
    echo ' </script>';

    Or je voulait modifier la class de mes lien du menu suivant si je suis dans un sous menu ou nom.

    Je n'est pas mit la fonction test_dossier qui ne fait que modifier la variable file afin que l'opendir fonctione.

    Je tien a preciser que tout ce code fonctionne et que seul la fonction javascript ChangeClass ne fonctionne pas.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    Tu devrais utiliser une librairie genre jquery.

    Or je voulait modifier la class de mes lien du menu suivant si je suis dans un sous menu ou nom.
    Il te faut du css. Ajoute une classe à ton menu, puis un sélécteur sur celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //le ul racine
    .menu{}
     
    //le 1er niveau
    .menu > li{color : withe;}
     
    //les sous menu
    .menu > li li{color : red;}
    Pour tes fonctions afficheId et cacheId, si il s'agit que de modifier le style, tu peux le faire aussi en css, via la pseudo classe :hover

    Sinon , y'a beaucoup de truc étonnant dans tons script. le fait que le contenue de tes pages ne soit pas en bd, le nombre de requête (une devrait suffir), l'utilisation de $_SERVER['PHP_SELF'] aussi, utilise des url relatives, la fonction js aussi, qui n'a rien de dynamique ect ....
    Tu es sans doute débutant ... je te conseil vivement, de prendre un cms pour ton site, et le bon bouquin qui va avec

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    freeman43, essaye de prendre la peine de lire Important : Les règles incontournables d'utilisation de ce forum et de poster le code HTML généré, le code PHP étant généralement inutile ici !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Par défaut
    en faite mon css et deja creer.
    en suite le fichier que j'ai mit a mon dernier post et un fichier que j' inclus dans mes autres page web, car comme tu le dit, mes pages web sont bien gérer via une base de données.

    si tu veux dans mon CSS, j'ai bien crée des class qui me permette justement de jouer sur mes styles.

    Apres c sur que pour le moment, l'optimisation des mes requete pour gérer mes menu n'est peut etre pas optimiser au mieux, mais pour le moment, cas marche.

    En ce qui concerne afficheId et cacheID, ce sont des fonctions qui me permette au survol des menu principaux, l'affichage des sous menu via la fonctions innerHTML, et celle-ci fonctionne tous a fait.

    l'optimisation de celle-ci, se fera plus tard.

    Donc le seul vrai souci, c'est que je n'arrive pas à appeler la fonctions afin de modifier la class du lien.

    voila en faite ce que tu me demandé:

    mon fichier css:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    #Equipes{
    display:none;
    position:absolute;
    top: 230px;
    left: 191px;
    width: 110px;
    background-repeat:repeat-y;
    border:1px solid #FFFFFF;
    border-top: #FFFFFF 4px solid;
    margin-bottom:5px;
    margin-left:2px;
    float:left;
    }
     
    #Ecolesdefoot{
    display:none;
    position:absolute;
    top: 230px;
    left: 265px;
    width: 150px;
    background-repeat:repeat-y;
    border:1px solid #FFFFFF;
    border-top: #FFFFFF 4px solid;
    margin-bottom:5px;
    margin-left:2px;
    }
     
    #Photos{
    display:none;
    position:absolute;
    top: 230px;
    left: 591px;
    width: 100px;
    background-repeat:repeat-y;
    border:1px solid #FFFFFF;
    border-top: #FFFFFF 4px solid;
    margin-bottom:5px;
    margin-left:2px;
    }
     
    #Historique{
    display:none;
    position:absolute;
    top: 230px;
    left: 734px;
    background-repeat:repeat-y;
    border:1px solid #FFFFFF;
    border-top: #FFFFFF 4px solid;
    margin-bottom:5px;
    margin-left:8px;
    }
     
    #Admin{
    display:none;
    position:absolute;
    top: 100px;
    width:150px;
    right:0px;
    border:1px solid #FFFFFF;
    border-top: #FFFFFF 4px solid;
    text-align:left;
    }
     
    #administration a {
    float:left;
    width:100%;
    background-image:url(css/back5.jpg);
    }
    #administration a.link {
    float:left;
    width:100%;
    }
    #administration a:hover {
    float:left;
    width:100%;
    }
     
    bg {
    background-image:url(css/back.jpg);
    }
     
    #ss_menu{
    float: left;
    }
     
    #ss_menu a {
    color:#FF6600;
    float:left;
    width:100%;
    background-image:url(css/back.jpg);
    }
     
    #ss_menu a.link {
    color:#FFFFFF;
    float:left;
    width:100%;
    }
     
    #ss_menu a:hover {
    color:#FFFFFF;					/* Les lien survole du menu auront un trait blanc*/
    float:left;
    width:100%;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Javascript ou PHP
    Par lynchmaniac dans le forum Langage
    Réponses: 7
    Dernier message: 27/10/2005, 10h10
  2. [PHP-JS] Javascript et PHP: passer une valeur en paramètres
    Par anutka dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/10/2005, 12h05
  3. Cherche conseils pour livre HTML, JavaScript et PHP
    Par oodini dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2005, 15h45
  4. [PHP-JS] convertir un bout javascript en php ?
    Par Thierry8 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/08/2005, 23h42
  5. [PHP-JS] lien javascript vers php
    Par guttts dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/08/2005, 23h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo