Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation de variables PHP dans un code javascript

Ou plutôt de Javascript dans du PHP

    12 janvier 2009 à 16:16:35

    Bonjour à tous,

    j'ai présentement une liste déroulante dans laquelle j'ai quelque noms. Selon le nom choisi, je dois faire une modification... je vous montre le code présentement:

    <?php
    echo '<div id="menu_admin">
    <a href="index.php?page=admin&do=maps">Gestion des cartes</a><br />
    </div>';
    	
    switch($_GET['do'])
    {
            case "maps":
    		echo '<h2>Gestion des cartes</h2>';
    		echo '<form action="index.php?page=admin&do=verif&do2=maps" method="post">
    		<select name="map_name">
    			<option></option>
    			<option>village1</option>
    			<option>village2</option>
    			<option>village3</option>
    		</select>';
    			
    		echo '<table class="map_table">';
    		for($y=1; $y<16; $y++)
    		{
    			echo '<tr class="map_tr">';
    			for($x=1; $x<16; $x++)
    			{
    				echo '<td class="map_td"><img src="../../images/maps/'.$villagechoisi.'/'.$villagechoisi.'_'.$y.'_'.$x.'.bmp" alt="('.$x.' ,'.$y.')" />';
    				echo '</td>';
    			}
    			echo '</tr>';
    		}
    		echo '</table><br /><br />';
    			
    		echo 'x:<input type="text" name="xpos" value=".'$valeurdeX.'" size=4 />, y:<input type="text" name="ypos" value="'.$valeurdeY.'" size=4 /><br /><br /> ';
    			
    		echo '
    		<select name="func_name">
    			<option></option>
    			<option>fonction1</option>
    			<option>fonction2</option>
    			<option>fonction3</option>
    		</select>';
    			
    		break;
    	
    }
    	
    	
    ?>
    


    Donc, dans le premier "select", je dois choisir le village.

    Ensuite, la carte dois apparaître en utilisant le nom de la carte choisie, ainsi que les champs X, Y et fonction.

    Quand je clique sur une case de la map, les valeurs de X et de Y changent (pas trop compliqué à faire).

    Mon problème ? Je dois utiliser du javascript dans du PHP et je ne sais pas trop m'y prendre... quelqu'un pourrait m'aider ??

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      12 janvier 2009 à 16:39:31

      Tu ne peux pas utiliser du Javascript dans PHP.

      Mais tu peux mettre du PHP dans ton javascript.

      Le PHP est lu par le serveur, donc avant même que la page soit envoyé sur ton ordi.
      Pour mettre une variable PHP dans une variable Javascript, tu peux faire :
      var nb = <?php echo $nb ?>;
      


      Et tu te démerdes comme ça. :)
      • Partager sur Facebook
      • Partager sur Twitter
        12 janvier 2009 à 16:46:54

        Haha, j'y avais pas pensé, trop longtemps que je programme sans fermer mes balises :p . Bon bah je vais essayer de me démerder avec ça, je ne met pas en résolu tout de suite au cas où ^^
        • Partager sur Facebook
        • Partager sur Twitter
          12 janvier 2009 à 17:13:00

          Oui, n'hésite pas à revenir dès que tu as un problème précis. :)
          • Partager sur Facebook
          • Partager sur Twitter
            12 janvier 2009 à 17:40:14

            En fait, là, le problème est que je ne veux pas mettre des "document.write" partout dans ma page... je fais comment :p
            • Partager sur Facebook
            • Partager sur Twitter
              12 janvier 2009 à 18:48:26

              Essaie de ne pas utiliser document.write c'est très mal ! ^^

              Utilise la propriété innerHTML pour changer un contenu. Par exemple pour un div :
              div = document.getElementById("id_du_div");
              div.innerHTML = "Nouveau contenu du div !";
              


              Ou si tu as besoin, tu peux utiliser les propriétés du DOM, mais c'est un poil plus compliqué. ^^
              • Partager sur Facebook
              • Partager sur Twitter
                12 janvier 2009 à 19:03:10

                Haha oui le innerHTML c'est sûr que je vais l'utiliser... mais je n'avais pas pensé sur le coup qu'il remplacerais mon document.write :p merci encore ^^

                Mais ma boucle qui crée mon tableau je la fait comment ? Avec des document.write ?? :p
                • Partager sur Facebook
                • Partager sur Twitter
                  12 janvier 2009 à 19:37:57

                  Nan mais tu peux mettre le HTML dans la page avec PHP. Tu pourras ensuite le modifier facilement avec du javascript (à condition que tu mettes des attributs id ici et là histoire de pouvoir appeler les objets).

                  Je ne comprends pas ton problème de boucle et de tableau...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 janvier 2009 à 19:59:44

                    Présentement j'ai ce code:

                    <form action="index.php?page=admin&do=verif&do2=maps" method="post" name="form_mapevent">
                    <select name="map_name" onchange="admin_mapevent(this.value)">
                    	<option></option>
                    	<option>village1</option>
                    	<option>village2</option>
                    	<option>village3</option>
                    </select>
                    			
                    <div id="admin_mapform"></div>
                    </form>
                    


                    function admin_mapevent(village)
                    {
                    document.getElementById('admin_mapform').innerHTML = "<table class=\"map_table\">";
                    for(var y=1; y<16; y++)
                    {
                    	<tr class="map_tr">
                    	for(var x=1; x<16; x++)
                    	{
                    		<td class="map_td"><img src="../../images/maps/"+village+"/"+village+"'_'"+y+"'_'"+x+"'.bmp" alt="('"+x+"' ,'"+x+"')" />
                    		</td>
                    	}
                    	</tr>
                    }
                    </table><br /><br />
                    
                    x:<input type="text" name="xpos" value="" size=4 />, y:<input type="text" name="ypos" value="" size=4 /><br /><br />
                    
                    
                    <select name="func_name">
                    	<option></option>
                    	<option>fonction1</option>	
                            <option>fonction2</option>
                    	<option>fonction3</option>
                    </select>
                    }
                    

                    Le code n'est pas terminé évidemment

                    J'ai une boucle "for" qui affiche un tableau avec toutes les images de la map... maintenant, est-ce qu'il est possible de le mettre dans le "innerHTML", car il faudra que, au clic d'une case, les valeurs de xpos et ypos changent..
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 janvier 2009 à 20:16:15

                      Ok, bon bah à la ligne 6, il faut que tu mettes document.getElementById('admin_mapform').innerHTML += "<tr class=\"map_tr\">";

                      Même principe à la ligne 9,10, etc.

                      Le "+=" sert à ajouter quelque chose au contenu déjà présent.

                      Pour les onclick, tu verras ça après. ^^

                      Mais si tu prévoies de faire quelque chose d'assez imposant en javascript... tu devrais peut-être commencer par lire des tutos et pratiquer... non ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 janvier 2009 à 20:26:28

                        En fait, si tu regarde http://woe.s-reference.com/index.php?page=inscription , j'ai programmé seul le système de création d'avatar, donc j'ai de bonnes bases. Je connaissais innerHTML et "+=" pour les avoir beaucoup utilisé. Mon problème était seulement le fait d'ajouter du PHP, mais je crois pouvoir m'en passer. Mais maintenant (je vais le tester) c'est de savoir si je peux mettre une boucle "for" dans un "innerHTML" ^^ (désolé si je te décourage :p )

                        EDIT: J'ai testé et, évidemment, quand je choisi mon village, il m'écrit "for(var y=1; y<16; y++) { for(var x=1; x<16; x++) {" au lieu de m'afficher ma carte :'(
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 janvier 2009 à 20:51:42

                          Pardon alors pour mon erreur. :)

                          Tu peux mettre innerHTML dans une boucle for (pas l'inverse ^^ enfin si mais c'est pas le but recherché...).

                          Rappelle-toi simplement que le php est exécuté côté serveur.

                          Donc tous les echos de PHP seront écrits dans ta page avant même que le javascript soit lu.
                          Donc si tu as besoin de mettre les données d'une BDD dans un array JS, c'est faisable, etc.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            12 janvier 2009 à 21:06:15

                            Citation : Golmote

                            Tu peux mettre innerHTML dans une boucle for (pas l'inverse ^^ enfin si mais c'est pas le but recherché...).



                            Doh! surtout pas. (je réagis que là dessus) ça va être super lent de faire ça. il faut crée un chaine, que tu concatène à chaque itération et ensuite faire un seul et unique appel à innerHTML pour remplacer (ou ajouter) le contenu. Sinon ça va être encore plus lent que le DOM.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 janvier 2009 à 21:16:01

                              Il demande s'il peut... je lui réponds qu'il peut, je lui dis pas qu'il doit. ^^

                              Bref nod_ a raison.

                              (D'ailleurs nod_ ça te dirait pas de m'aider dans mon topic de fonction générale utilisant this ?)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                13 janvier 2009 à 3:14:25

                                Et mettre tout dans une div en display: none et changer pour display: je sais pas quoi, ça le ferais ???

                                EDIT: On oublie, jvais m'arranger autrement
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Utilisation de variables PHP dans un code javascript

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown