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 :

Appel d'une fonction JS dans une boucle while PHP


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Appel d'une fonction JS dans une boucle while PHP
    Bonjour,

    Je sollicite votre aide car je ne suis pas très expérimenté avec le JS et le php et la je bloque complètement sur un problème.

    Je vous explique mon objectif. Je vous présente ci-dessous le code de ma page "tableau.php" qui affiche dans un tableau une liste de membre d'un projet depuis ma BDD. Pour chacun de ces membres, un lien est généré leur permettant d'accéder à la page "formulaire.php" qui est donc un formulaire dans lequel ils doivent répondre à un certain nombre de questions. Une fois qu'ils ont répondu à ce formulaire une premiere fois, ils doivent aussi pouvoir consulter/modifier leurs réponses. C'est pour cela que j'ai créé une deuxième page "formulaire-modif.php" qui va récupérer les réponses dans la BDD et les affiche.

    J'ai donc dans ma page "tableau.php" deux liens qui sont générés pour chaque membre du projet, un vers la page "formulaire.php" et un vers "formulaire-modif.php". Mon objectif (et sur quoi je bloque) est d'afficher grâce à du JS le lien vers "formulaire.php" et de cacher le lien vers "formulaire-modif.php" uniquement sur la case "ID_question" de la ligne est vide et sinon de faire l'inverse.

    J'ai réussi à faire cela mais cette fonction JS ne s'exécute que sur la 1ere ligne du tableau alors qu'elle se trouve dans la boucle "while" du php. Je me doute que c'est parce que ma variable JS "formulaire" ne modifie pas sa valeur à chaque passage de la boucle, mais je n'arrive pas à corriger cela.

    Voici mon code de la page "tableau.php" :

    Code html : 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
    <!DOCTYPE html>
    <html>
    	<head>
            <meta charset="utf-8" />
            <title>Tableau</title>
    		<link href="style.css" rel="stylesheet">
    	</head>
    	<body>
     
    	<!-- Connexion à la BDD -->
    	<?php
            define("DBHOST", "localhost");
            define("DBUSER", "root");
            define("DBPASS", "");
            define("DBNAME", "codpl_test2");
            
            $dsn = "mysql:charset=utf8;dbname=".DBNAME.";host=".DBHOST;
            
            try{
                    $db = new PDO($dsn, DBUSER, DBPASS);
                    
            }catch(PDOException $e){
                    die($e->getMessage());
            }
     
            
            //Préparation de la requete
            $reponse = $db->query('SELECT DISTINCT C.ID, C.Prenom, C.Nom, C.Role, Q.ID_question FROM wp_contributeurs C LEFT OUTER JOIN questions_formulaire2 Q ON C.ID = Q.ID_personne');
     
            
            while ($donnees = $reponse->fetch())
            {
            
            $role = $donnees['Role'];
            $id = $donnees['ID'];
            $id_question = $donnees['ID_question'];
            
            ?>
     
     
     
    	<table class="tableau">
    		<tr> 
    			<td class="lignetableau"> <?php echo $donnees['ID']; ?> </td>
    			<td class="lignetableau"> <?php echo $donnees['Prenom']; ?> <?php echo $donnees['Nom']; ?></td>
    			<td class="lignetableau"> <?php echo $donnees['Role']; ?> </td>
    			<td class="lignetableau">  <?php echo $donnees['ID_question']; ?> </td>
    			<td class="lignetableau" id="LienNouveau"> <?php echo "<a href='http://localhost/CODPL/formulaire.php?role=$role&ID=$id&ID_question=$id_question'>Compléter votre avis</a> "; ?> </td>
    			<td class="lignetableau" id="LienModif"> <?php echo "<a href='http://localhost/CODPL/formulaire-modif.php?role=$role&ID=$id&ID_question=$id_question'>Consulter / Modifier</a> "; ?> </td>
    		</tr>
    	</table>
     
     
    	<?php
            }
     
            $reponse->closeCursor();
     
            ?>
     
    	<script>
            //fonction JS pour affichage du bon lien dans le tableau
                    function affichelien() 
                    {
                                            //Récupération de la variable php id_question dans une variable JS
                                            var formulaire = '<?php echo $id_question; ?>' ;
                                            
                                            
                                            if (formulaire!== null && formulaire!== '')
                            {
                                                            document.getElementById('LienNouveau').style.display = 'block';
                                                            document.getElementById('LienModif').style.display = 'none';
                            }
                            else
                            {
                                                            document.getElementById('LienNouveau').style.display = 'none';
                                                            document.getElementById('LienModif').style.display = 'block';
                            }
                                            
                                    }
            
                    
                    affichelien()
            
            </script>
     
    	</body>
    </html>

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Je me trompe ou tu attribues un id dans la boucle, ce qui entrain une multiplicité des id ...un id doit être unique sur une page
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour la réponse rapide. Ce serait mes id "LienNouveau" et "LienModif" dans le while qui posent problème c'est ca ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Entre autres ....
    Un Id doit être unique sir la page, et ...
    Jette un oeil sur ceci https://dmouronval.developpez.com/tu...te-ajax/#Lno-I

    Il faut garder en mémoire la potée de chacun des langage, où (serveur / client) et à quel moment ( génération du html / js, interprétation du html/js) sont ils "actifs" et quelle est leur portée...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Fonction load dans une boucle while
    Par soeursourire dans le forum jQuery
    Réponses: 7
    Dernier message: 23/02/2018, 19h51
  2. Réponses: 2
    Dernier message: 10/11/2011, 12h01
  3. fonction mail dans une boucle while
    Par tjoce dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2010, 18h39
  4. [Performance] LEFT JOIN vs SELECT dans une boucle (PHP)
    Par frochard dans le forum Requêtes
    Réponses: 4
    Dernier message: 28/10/2005, 17h45
  5. probleme de recordset dans une boucle do while
    Par Shoryu dans le forum ASP
    Réponses: 18
    Dernier message: 05/07/2004, 15h30

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