Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction de nom dépendant d'une variable

Sujet résolu
    16 juillet 2019 à 16:04:57

    Bonjour, je vous expose mon problème. J'ai un code où chacun de mes utilisateurs a des équipes qui lui appartiennent. Et quand il choisit une équipe dans une liste déroulante, toutes les informations correspondantes à l'équipe s'affichent. Le problème, c'est que je veux que personne ne puisse avoir accès aux équipes des autres en bidouillant le javascript sur son navigateur, donc la solution à laquelle j'ai pensée c'est de créer n fonctions actualiser_equipe_i() où n est le nombre d'équipes de l'utilisateur, avec une boucle php pour pouvoir afficher les équipes correspondant à l'utilisateur.

    //code ..
    
    <select id="liste_deroulante" onchange="actualiser_equipe()">
    <?php
    	for($i=0;$i<$counter_equipe;$i++){
    ?>
    	<option value=<?php echo $donnees_equipes[$i]['id_equipe']; ?> > <?php echo htmlspecialchars($donnees_equipes[$i]['nom_equipe'],ENT_QUOTES); ?> </option>
    	<?php
    	}
    	?>
    // note : la requête pour récupérer $donnees_equipes[] et $counter_equipe dépend de l'utilisateur donc elle récupère uniquement les équipes de l'utilisateur
    
    </select>
    
    //code ..
    
    <script type="text/javascript">
    
    <?php for($i=0;$i<$counter_equipe;$i++){ ?>
    
    function actualiser_equipe_<?php echo $i;?>(){
    
    // code ..
    
    }
    
    <?php } ?>
    
    function actualiser_equipe(){
    var i = document.getElementById("liste_deroulante").value;
    
    // ET LA JE VEUX INVOQUER LA FONCTION actualiser_equipe_i();
    // Mais je ne sais pas comment faire et "actualiser_equipe_"+i+"()"; ne marche pas
    
    }
    
    </script>

    Mon problème c'est que je veux invoquer une fonction javascript avec une variable à l'intérieur de son nom. Comment faire? Ou alors ya t il un moyen similaire d'arriver à mes fins? Tableau de fonctions?

    -
    Edité par DamienBlanchard 16 juillet 2019 à 16:06:09

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      16 juillet 2019 à 16:11:35

      Tu veux gérer ton problème au mauvais endroit. C'est le back-end qui est responsable des données qu'il renvoie, et il n'a pas à renvoyer les données d'une équipe qui n'appartient pas à l'utilisateur.
      • Partager sur Facebook
      • Partager sur Twitter
        16 juillet 2019 à 16:23:30

        MatTheCat a écrit:

        Tu veux gérer ton problème au mauvais endroit. C'est le back-end qui est responsable des données qu'il renvoie, et il n'a pas à renvoyer les données d'une équipe qui n'appartient pas à l'utilisateur.


        Il y a du code php à l'intérieur des fonctions actualiser_equipe_<?php echo $i; ?> pour afficher chacune des valeurs, que je n'ai pas mis pour ne pas trop embrouiller le code.

        (exemple : document.getElementById("valexpertise").innerHTML= <?php echo $donnees_equipes[$i]['expertise']; ?>;

        En vrai le problème d'envoyer les équipes d'un autre utilisateur ne se pose pas vraiment en y réfléchissant. Le véritable problème que j'ai c'est invoquer une fonction dont le nom inclut une variable (javascript, pas php).

        • Partager sur Facebook
        • Partager sur Twitter
          16 juillet 2019 à 17:32:31

          Bonjour,

          Générer du code javascript via son script backend c'est sale. Mais comme j'ai rien d'autre a foutre, si tu souhaite crée des fonction front-end dans ton back-end et pouvoir les utiliser dans ton front-end il te suffit de faire ceci : 

          <script>
          	var functionTab= [
          <?php
          
          for ($i=1;$i<=10;$i++) {
          	echo "function() {console.log('fonction N°"+$i+" executer!');}";
          }
          
          ?>
          	];
          	for(let a in functionTab) {
          		functionTab[a]();
          	}
          </script>

          Sinon niveau JS il y a pleiiiiin de méthode d'obtenir le même résultat proprement '-'

          Edit: quand je dit obtenir le même résultat proprement, je parle d'un code propre qui effectue le même travaille que les fonctions généré salement depuis le back-end.

          -
          Edité par Angelisium 16 juillet 2019 à 17:34:16

          • Partager sur Facebook
          • Partager sur Twitter

              !

            16 juillet 2019 à 22:12:29

            Angelisium a écrit:

            Bonjour,

            Générer du code javascript via son script backend c'est sale. Mais comme j'ai rien d'autre a foutre, si tu souhaite crée des fonction front-end dans ton back-end et pouvoir les utiliser dans ton front-end il te suffit de faire ceci : 

            <script>
            	var functionTab= [
            <?php
            
            for ($i=1;$i<=10;$i++) {
            	echo "function() {console.log('fonction N°"+$i+" executer!');}";
            }
            
            ?>
            	];
            	for(let a in functionTab) {
            		functionTab[a]();
            	}
            </script>

            Sinon niveau JS il y a pleiiiiin de méthode d'obtenir le même résultat proprement '-'

            Edit: quand je dit obtenir le même résultat proprement, je parle d'un code propre qui effectue le même travaille que les fonctions généré salement depuis le back-end.

            -
            Edité par Angelisium il y a environ 1 heure


            Par curiosité, qu'est-ce qui fait que ces méthodes sont plus "propres"? Concrètement, est-ce que ça change qqch niveau sécurité ou quoi? Je partais du principe que tout ce qui est javascript ou plus généralement côté navigateur ne devait jamais être "trusted", mais au fond à partir du moment où j'ai des echo de valeurs de php qui sont "safe" et qui ne peuvent pas être réutilisées (c'est juste de l'affichage), on ne peut pas concrètement voir quoi que ce soit sur le client d'exploitable pour la sécurité, si?

            (et quelles sont-elles ces méthodes, si tu as le temps de m'expliquer très vite fait? Au départ je faisais des fichiers de scripts que j'includais mais j'ai rapidement eu besoin d'inclure des variables php dans certains scripts. Aussi je ne suis pas du tout familier avec Ajax, si tant est qu'Ajax soit utile ici).

            Merci pour les réponses btw :)

            • Partager sur Facebook
            • Partager sur Twitter
              17 juillet 2019 à 3:12:29

              Généré du code javascript coter serveur c'est sale, une méthode propre pour récupérer des variables coter serveur et les exploiter avec du javascript c'est d'utiliser par exemple ajax, voir même ne pas utiliser de javascript.

              Exemple, tu a plein d'image et tu souhaite qu'au clic elle s'affiche en grand. La méthode sale c'est d'utiliser une boucle dans ton back-end qui vas dupliquer une fonction, pour chaque image. La méthode propre, c'est de donner une class spécial au image en question et d'utiliser une seule fonction dans ton front-end pour géré toute les images.

              Autre exemple, ton utilisateur ce connecte et tu souhaite lui afficher un dashboard, la méthode sale c'est de généré dans ton back-end un script qui va généré l'affichage des données. La méthode propre c'est soit tu génére directement l'affichage dans ton back-end, soit tu utilise un script dans ton front-end qui vas généré l'affichage a partir d'une requête ajax.

              Pour la faire simple, je qualifie un site de propre quand la parti back-end et la partie front-end sont bien distincte.
              Tout simplement parce que niveau maintenabilité c'est mieux.

              • Partager sur Facebook
              • Partager sur Twitter

                  !

              Fonction de nom dépendant d'une variable

              × 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