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 :

Formulaire dans une boucle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 59
    Par défaut Formulaire dans une boucle
    Bonjour,

    J'ai un problème au niveau de mon formulaire : dans celui-ci une liste d'enregistrement est affichée depuis la bdd et quand je clique sur "envoi" le message est bien envoyé avec l'id de l'enregistrement ; mais il n'envoie pas seulement celui modifié mais toute la liste d'enregistrement et donc le message ne vient pas s'ajouter dans la bdd. Je ne comprend pas trop pourquoi.... si quelqu'un a une idée !

    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
    <html>
        <head>
            <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript">
     
    function envoie(formreponse){
     var message = document.formreponse.msg.value;
     var rep = document.formreponse.rep.value;
    $.ajax({
            url : "reponseamdin.php", 
            type : "POST", 
            data : "message=" + message + "&rep=" + rep,
            success : function(html){
            $('#conversation').append(html);
            $('#msg').val('');
     
            }
     
        });
    }
            </script>
        </head>
     
     
        <body>
     
            <div id="container">
            <h2>Administrateur</h2>
            <h3>Notifications</h3>
                <cite>Les questions rester sans reponses par les utilisateurs</cite>
            <div id="notification">
     
                <?php
            include'../bdd.php';
            $req = $dbh -> query('SELECT * FROM conversation WHERE reponse=""');
            echo"<table><form method='POST' name='formreponse'><tr><th>Question</th><th>Reponse</th><th>ok</th></tr>";
            while ($data = $req -> fetch()){
            $result = $data['question'];
            $rep = $data['id'];
            echo "<tr><input type='hidden' value='$rep' name='rep' id='rep'/><td>$result</td> <td><input type='text' name='msg' id='msg'/></td><td><input type='submit' onclick='envoie();'/></td></tr>";
      }
            echo"</form></table>";
            ?>
            </div>
            <div id="conversation" name="conversation"></div>
     
         </div>
        </body>
    </html>
    de plus j'envoie les données de mon formulaire grâce à une fonction js et voici ce que j'ai dans ma console :

    Nom : message.PNG
Affichages : 179
Taille : 58,2 Ko

    ensuite ma page reponseamdin est censé envoyer le message en fonction de l'id dans la bdd

    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
    <?php
     
    $message = $_POST['message'];
    $rep = $_POST['rep'];
    //si le message est vide on affiche la reponse 
     
    if (!empty($message)){
     
    include'../bdd.php';
    $req = $dbh->query("UPDATE `conversation` SET `reponse` = '$message' WHERE id = '$rep' ");
     
    }
     
    else {
        $reponse = "Le message est vide";
        echo $reponse;
    }
    ?>
    mais il affiche "Le message est vide"

    CDT

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Où vois-tu que "toute la liste" est envoyée ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 59
    Par défaut
    sur la photo dans la console il affiche :
    rep:4
    msg:
    rep:6
    msg:

    alors que si j'ai entrer le message dans la première ligne logiquement il ne devrait pas afficher le deuxième msg: vide je pense que le problème vient de la.

  4. #4
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Tu as un soucis dans ta requête ajax, tu la formate pour une requête GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data : "message=" + message + "&rep=" + rep,
    essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data: {
    	message: message,
    	rep: rep
    },

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 59
    Par défaut
    toujours pareil sa ne change rien et je n'ai aucun message d'erreur j'ai essayer ma requête sql directement dans ma base de donnée et sa ne vient pas de ma requête

  6. #6
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Mets un var_dump($_POST); avant le if dans ta page reponseamdin et vois le retour sous chrome.

    Aussi, dans ta boucle while, tu as :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<tr><input type='hidden' value='$rep' name='rep' id='rep'/><td>$result</td> <td><input type='text' name='msg' id='msg'/></td><td><input type='submit' onclick='envoie();'/></td></tr>";
    tu utilises donc les memes id pour tous les champs text, il doit prendre toutes les valeurs qu'il trouve, ce qui pourrait expliquer pourquoi tu as un boucle de valeur.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 59
    Par défaut
    Effectivement ! le var_dump($_POST); ma permis de savoir qu'il n'envoyer que le dernier enregistrement et comme j'ai remplie le premier il dit que mon $_POST est vide j'ai test avec une seul ligne et sa marche mais donc comment je doit faire pour qu'il prenne en compte celui que je modifie seulement sa doit ce faire dans la boucle ?

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

Discussions similaires

  1. Formulaire dans une boucle
    Par JDP91 dans le forum Langage
    Réponses: 3
    Dernier message: 14/11/2016, 18h29
  2. Récupérer Post formulaire dans une boucle php
    Par spawns dans le forum AJAX
    Réponses: 4
    Dernier message: 24/09/2015, 09h29
  3. formulaire avec champs de texte dans une boucle
    Par sssmix dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/04/2008, 16h03
  4. Formulaire dans une boucle while
    Par starr dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2007, 08h27
  5. Réponses: 8
    Dernier message: 17/06/2006, 23h39

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