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

Langage PHP Discussion :

[PHP-JS] Problème lors du clique sur une option


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut [PHP-JS] Problème lors du clique sur une option
    Bonjour,
    j'ai une page php qui contient une arbre générée a partie de la base de données.
    Chaque branche(element) de l'arbre est un lien vers une page qui s'affiche dans une Frame "mainframe".

    voici quelques bouts de mon code :

    CreerBranche() est une fonction javascript qui utilise des vaiables PHP (a partir de mySQL)

    fonction pour la creation de l'arbre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ( $j=0 ; $j < count($Tab) ; $j++){
    	/// Script javascript ///
    	echo "<script type=\"text/javascript\">\n";
    	echo "ObjectArbre.CreerBranche('$VariableParent','$Libelle','LIEN', 'mainFrame');\n";
    	echo "</script>\n";
    }
    les options Modifier et Supprimer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <label>
    <input type="radio" name="RadioGroup1" value="radio" id="Modifier" />      
    Modifier</label>
    <label>
    <input type="radio" name="RadioGroup1" value="radio" id="Supprimer" />
    Supprimer</label>
    j'ai essayé ce traitement pour que lorsque je clique sur l'option modifier les liens pointent vers page1.html et si je clique sur l'option Supprimer les liens pointent vers page2.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "if (document.getElementById('Modifier').checked==true) ObjectArbre.CreerBranche('$VariableParent','$Libelle','page1.html', 'mainFrame');\n";
    echo "if (document.getElementById('supprimer').checked==true) ObjectArbre.CreerBranche('$VariableParent','$Libelle','page2.html', 'mainFrame');\n";

    mais le probléme c'est que l'arbre n'est pas crée car les option Modidier et Supprimer ne sont pas activés.dans les cas ou je

    met <input name="RadioGroup1" type="radio" id="Supprimer" value="radio" checked="checked" /> l'arbre est crée avec le Lien

    page2.html mais si je clique sur l'option Modifier je voudrais que les liens de l'arbre changent vers page1.html.

    en premier temps c'est pas un probléme si la page qui contient l'arbre se recharge

  2. #2
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    je ne connait pas spécialement la fonction JS ObjectArbre, donc ma reponse va rester trés générale.

    A priorie le probléme vient du fait que tu n'appel pas d'action lorsque tu clique sur l'un de tes boutons radio, esssaye donc avec une fonction :

    toi en gros tu a fait ça (du moins je crois) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    echo "<script type=\"text/javascript\">\n";
    //plein de truc.....
    echo "if (document.getElementById('Modifier').checked==true) //ton action";
    echo "</script>";
    ?>
    <html>
    <body>
    .....
    <input type="radio" name="RadioGroup1" value="radio" id="Modifier" />
    .....
    </body>
    </html>
    dans ce schéma, le if (document.getElementById('Modifier').checked==true) n'est vérifier qu'au momment de l'ouverture de la page, il faut plustôt faire quelque chose comme ça :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    ....
    echo "function modifier { if (document.getElementById('Modifier').checked==true) //ton action } ";
    ....
    ?>
    <html>
    <body>
    <input type="radio" name="RadioGroup1" value="radio" id="Modifier" onClick="javascript: modifier();"/>
    </body>
    </html>
    dans ce schéma mon test est effectué chaque fois que l'on clique sur le bouton radio.

    Voilà j'éspere que ma reponse t'aidera

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Salut, leto02 je te remercie pour ta reponse et j'ai bien compris ta solution mais ca marche pas pour mon cas

    donc voila tout le code de ma page qui génére l'arbre

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Test TreeView mySQL</title>
    <script src="wsTreeCtrl.js"></script>
    <body>
    <label>
    <input name="RadioGroup1" type="radio" id="Modifier" value="radio" onClick="modifier();"/>      
    Modifier</label>
    <label>
    <input name="RadioGroup1" type="radio" id="Supprimer" value="radio" />
    Supprimer</label>
     
      <input type="button" onClick="javascript:Expand();" value="Développer">
      <input type="button" onClick="javascript:Recude();" value="Réduire">
     
     
      <?php 
    	mysql_connect("localhost", "root", "");
    	mysql_select_db("bd"); 
     
    	function ConsTableau($IDMission){
    		$Tab_php_IDMission = array();
    		$Tab_php_Libelle = array();
    		$Tab_php_IDParent = array();
     
    			$tableau=mysql_query("select * from missions where IDProjet=".$_SESSION['projet']." and IDParent=".$IDMission." order by Libelle");
    			$i=0;
    			while ( $datamenu = mysql_fetch_array ( $tableau ) )
    			{
    				$Tab_php_IDMission[$i] = $datamenu["IDMission"];
    				$Tab_php_Libelle[$i] = $datamenu["Libelle"];
    				$Tab_php_IDParent[$i] = $datamenu["IDParent"];
    				$i++;
    			}
    			for ( $j=0 ; $j < count($Tab_php_IDMission) ; $j++){
    					//////////////////// Script javascript /////////////////////
    					echo "<script type=\"text/javascript\">\n";
    					///// Fonction Modifier //////
    					echo "function modifier(){";
    					echo "if ( '$Tab_php_IDParent[$j]' == 0 )\n";
    					echo "window['v'+'$Tab_php_IDMission[$j]']=m_wsTreeCtrl.InsItem(null,'['+'$Tab_php_IDMission[$j]'+'] '+'$Tab_php_Libelle[$j]', '', '');\n";
    					echo "else\n";
    					echo "window['v'+'$Tab_php_IDMission[$j]']=m_wsTreeCtrl.InsItem(eval('v'+'$Tab_php_IDParent[$j]'), '['+'$Tab_php_IDMission[$j]'+'] '+'$Tab_php_Libelle[$j]', '', '');\n";
     
    					echo "m_wsTreeCtrl.InsItem(eval('v'+'$Tab_php_IDMission[$j]'), '$Tab_php_Libelle[$j]', 'trait_missions.php?action=Modifier&IDMission='+'$Tab_php_IDMission[$j]', 'mainFrame2');\n";
    					//echo "";*/
    					echo "}\n";
    					/////// Fonction Supprimer ///////
    					echo "function supprimer(){";
    					echo "if ( '$Tab_php_IDParent[$j]' == 0 )\n";
    					echo "window['v'+'$Tab_php_IDMission[$j]']=m_wsTreeCtrl.InsItem(null,'['+'$Tab_php_IDMission[$j]'+'] '+'$Tab_php_Libelle[$j]', '', '');\n";
    					echo "else\n";
    					echo "window['v'+'$Tab_php_IDMission[$j]']=m_wsTreeCtrl.InsItem(eval('v'+'$Tab_php_IDParent[$j]'), '['+'$Tab_php_IDMission[$j]'+'] '+'$Tab_php_Libelle[$j]', '', '');\n";
     
    					echo "m_wsTreeCtrl.InsItem(eval('v'+'$Tab_php_IDMission[$j]'), '$Tab_php_Libelle[$j]', 'trait_missions.php?action=Supprimerr&IDMission='+'$Tab_php_IDMission[$j]', 'mainFrame2');\n";
    					//echo "";*/
    					echo "}\n";
    					echo "</script>\n";
    					ConsTableau($Tab_php_IDMission[$j]);
    			}
    	}
     
    	echo "<script type=\"text/javascript\">\n";
    	echo "m_wsTreeCtrl = new wsTreeCtrl();\n";
    	echo "m_wsTreeCtrl.initializeDocument();\n";
    	echo "</script>\n";
     
    	ConsTableau(0);
     
    	echo "<script type=\"text/javascript\">\n";
    	echo "m_wsTreeCtrl.GenerateCode();\n";
    	echo "m_wsTreeCtrl.RecudeAllTree();\n";
     
    	echo "function Recude()\n";
    	echo "{\n";
    	echo "	m_wsTreeCtrl.RecudeAllTree();\n";
    	echo "}\n";
     
    	echo "function Expand() \n";
    	echo "{\n";
    	echo "	m_wsTreeCtrl.ExpandAllTree();\n";
    	echo "}\n";
    	echo "</script>\n";
    ?>
     
    </body>
    </html>

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 132
    Points
    132
    Par défaut
    Pour un bouton radio, ce ne serait pas onChange au lieu de onClick ?
    Il faudrait aussi une valeur différente : les 2 ont value="radio", et le onChange ne marchera pas ...
    edit : j'ai un petit doute tout d'un coup (je fais pas du javascript tous les jours ) si on appelle une fonction et qu'elle est définie plus loin dans le source, ça marche ?

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    zvince j'ai rien saisi de ta réponse et d'ailleurs j'ai essayé de remplacer onclick par onchange et toujours rien

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 132
    Points
    132
    Par défaut
    onChange s'active si on change la valeur d'un champ du formulaire.
    mais tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input name="RadioGroup1" type="radio" id="Modifier" value="radio" onClick="modifier();" />
    <input name="RadioGroup1" type="radio" id="Supprimer" value="radio" />
    les 2 boutons radio ont la même valeur (value="radio"), donc cette valeur ne change pas quand on clique sur l'un ou l'autre, donc pas de onChange. il faudrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input name="RadioGroup1" type="radio" value="Modifier" onChange="mod_sup();" />
    <input name="RadioGroup1" type="radio" value="Supprimer" onChange="mod_sup();"/>
    ensuite, la fonction mod_sup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function mod_sup() {
    if ( document.forms[0].RadioGroup1.value == "Modifier")
    modifier();
    else
    supprimer();
    }
    pour ma remarque sur la fonction définie plus loin dans le source :
    il me semble que si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function toto() { ... }
    ...
    toto();
    c'est bon, tandis que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    toto();
    ...
    function toto() { ... }
    c'est pas bon, parce que losque j'appelle la fonction, elle n'est pas encore définie (mais j'en suis pas sûr)

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    salut,
    j'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form id="form1" name="form1" method="post" action="">
        <label>
    <input name="RadioGroup1" type="radio" value="Modifier" onChange="mod_sup();" />    
    Modifier</label>
        <label>
          <input name="RadioGroup1" type="radio" value="Supprimer" onChange="mod_sup();"/>
          Supprimer</label>
    </form>
    et :

    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
    .................
    	function ConsTableau($IDMission){
    		$Tab_php_IDMission = array();
    		$Tab_php_Libelle = array();
    		$Tab_php_IDParent = array();
     
    			$tableau=mysql_query("select * from missions where IDProjet=".$_SESSION['projet']." and IDParent=".$IDMission." order by Libelle");
    			$i=0;
    			while ( $datamenu = mysql_fetch_array ( $tableau ) )
    			{
    				$Tab_php_IDMission[$i] = $datamenu["IDMission"];
    				$Tab_php_Libelle[$i] = $datamenu["Libelle"];
    				$Tab_php_IDParent[$i] = $datamenu["IDParent"];
    				$i++;
    			}
    			for ( $j=0 ; $j < count($Tab_php_IDMission) ; $j++){
    					//////////////////// Script javascript /////////////////////
    					echo "<script type=\"text/javascript\">\n";
    					///// Fonction Modifier //////
    					echo "function modifier(){";
    					echo "if ( '$Tab_php_IDParent[$j]' == 0 )\n";
    					echo "window['v'+'$Tab_php_IDMission[$j]']=m_wsTreeCtrl.InsItem(null,'['+'$Tab_php_IDMission[$j]'+'] '+'$Tab_php_Libelle[$j]', '', '');\n";
    					echo "else\n";
    					echo "window['v'+'$Tab_php_IDMission[$j]']=m_wsTreeCtrl.InsItem(eval('v'+'$Tab_php_IDParent[$j]'), '['+'$Tab_php_IDMission[$j]'+'] '+'$Tab_php_Libelle[$j]', '', '');\n";
     
    					echo "m_wsTreeCtrl.InsItem(eval('v'+'$Tab_php_IDMission[$j]'), '$Tab_php_Libelle[$j]', 'trait_missions.php?action=Modifier&IDMission='+'$Tab_php_IDMission[$j]', 'mainFrame2');\n";
    					echo "}\n";
    					/////// Fonction Supprimer ///////
    					echo "function supprimer(){";
    					echo "if ( '$Tab_php_IDParent[$j]' == 0 )\n";
    					echo "window['v'+'$Tab_php_IDMission[$j]']=m_wsTreeCtrl.InsItem(null,'['+'$Tab_php_IDMission[$j]'+'] '+'$Tab_php_Libelle[$j]', '', '');\n";
    					echo "else\n";
    					echo "window['v'+'$Tab_php_IDMission[$j]']=m_wsTreeCtrl.InsItem(eval('v'+'$Tab_php_IDParent[$j]'), '['+'$Tab_php_IDMission[$j]'+'] '+'$Tab_php_Libelle[$j]', '', '');\n";
     
    					echo "m_wsTreeCtrl.InsItem(eval('v'+'$Tab_php_IDMission[$j]'), '$Tab_php_Libelle[$j]', 'trait_missions.php?action=Supprimerr&IDMission='+'$Tab_php_IDMission[$j]', 'mainFrame2');\n";
    					echo "}\n";
    					/////// fonction mod_sup //////////
    					echo "function mod_sup() {\n";
    					echo "if (document.forms[0].RadioGroup1.value == 'Modifier') modifier();\n";
    					echo "else supprimer();\n";
    					echo "}";
     
    					echo "</script>\n";
    					ConsTableau($Tab_php_IDMission[$j]);
    			}
    	}
    .......................
    mais ca marche toujours pas et je crois que ca va pas marcher sauf si on recharge la page car la fonction ConsTableau() qui construit l'arbre est en PHP donc il est necessaire de recharger la page.
    ma question est comment faire pour ke lorsque je clique sur Modifier la page en cours sera actualisée avec le lien 'trait_missions.php?action=Modifier...' te lorsque je clique sur Modifier la page en cours sera actualisée avec le lien 'trait_missions.php?action=Supprimer...'

  8. #8
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Bonjour,
    j'ai trouvé une solution a mon probléme.
    j'ai créé 2 pages php (arbre_mission.php pour la modification avec le lien trait_missions.php?action=Modification et arbre_mission2.php pour la suppression avec le lien trait_missions.php?action=Suppression)

    dans les pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script>
    function rechargerModification(){
    	parent.frames['leftFrame'].location.href="tree_missions.php";
    }
    function rechargerSuppression(){
    	parent.frames['leftFrame'].location.href="tree_missions2.php";
    }
    </script>
    dans la page arbre_mission.php (modification)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input name="RadioGroup1" type="radio" id="Modifier" value="radio" onclick="rechargerModification()" checked="checked"/>      
    <input name="RadioGroup1" type="radio" id="Supprimer" onclick="rechargerSuppression()" value="radio"  />
    dans la page arbre_mission2.php (suppression)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input name="RadioGroup1" type="radio" id="Modifier" value="radio" onclick="rechargerModification()"/>      
    <input name="RadioGroup1" type="radio" id="Supprimer" onclick="rechargerSuppression()" value="radio" checked="checked" />
    et je remercie ceux qui m'ont aider

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

Discussions similaires

  1. Problème pour réaliser une action lors du clique sur le bouton menu ou back
    Par FunckyWarrior dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 29/05/2013, 14h39
  2. Problème de double clique sur barre de titre d'une form
    Par kheldoun ahmed dans le forum Delphi
    Réponses: 10
    Dernier message: 26/06/2007, 16h21
  3. Problème lors du lancement sur une autre machine
    Par poussinphp dans le forum Visual C++
    Réponses: 4
    Dernier message: 01/05/2007, 13h25
  4. [PHP-JS] compter les cliques sur une bannière?
    Par fitia dans le forum Langage
    Réponses: 4
    Dernier message: 13/09/2006, 11h14
  5. Gestion des évènements lors d'un clique sur une image.
    Par yoghisan dans le forum Débuter
    Réponses: 7
    Dernier message: 23/06/2005, 19h04

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