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

jQuery Discussion :

Un formulaire répété dans un boucle while php et validation par javascript


Sujet :

jQuery

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Un formulaire répété dans un boucle while php et validation par javascript
    Bonjour,

    J'ai un requête sql avec un boucle while pour m'afficher des messages. Chaque message avec un formulaire (bouton) d'acceptation ou de refus...

    La requête :
    Code php : 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
    <?php
    // $oui = 'oui' ;
     
    $reponse = $bdd->prepare('SELECT * FROM jobs WHERE admin = ?');
     
    $reponse->execute(array($oui));
     
    while($donnees = $reponse->fetch())
    {
         echo ' name '.$donnees['name'].'</br>
         <div id="bouttons_sous_msg"> 
         <form action="" methode ="" >
               <input type="hidden" name="id_ist_job" value="'.$id_ist_job.'" id="id_ist_job" />
               <input type="hidden" name="name_ist_job" value="'.$donnees['name'].'" id="name_ist_job" />
               <input type="hidden" name="adresse_user" value="a" id="adresse_user" />
               <input type="hidden" name="name_user" value="'.$_SESSION['name'].'" id="name_user" />
               <input type="button" id="ajoute_au_liste" value="ajout dans list"  />
         </form></div> '; 
    } ?>

    Et j'ai un script jQuery pour valider le formulaire sans quitter la page :
    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
    $(function() {
     
    $('#ajoute_au_liste').click(function() {
     
        var id_ist_job = $('#id_ist_job').val();
     
        var name_ist_job = $('#name_ist_job').val();
     
        var adresse_user = $('#adresse_user').val();
     
       var name_user = $('#name_user').val();
     
       $.post('../../models/boite_poster/accept_added_istichara_job.php', {'id_ist_job':id_ist_job,'name_ist_job':name_ist_job,'adresse_user':adresse_user,'name_user':name_user});
     
       });
     
    });
    Mon problème est quand la requête affiche les messages avec les boutons, le script jQuery va toujours prendre les valeurs du premier formulaire. Exemple : quand je choisis d'ajouter le 5ème travail à ma liste (clic sur bouton d'ajout du 5ème message), le script jQuery n'insère pas les infos dans la bdd. Mais si je choisis le premier travail (clic sur le premier bouton 'ajout' du premier message) tout marche bien (insertion en bdd et valeur exacte).

    Autre fois, j'ai essayé d'utiliser ajax avec ce script (je fais onclick="formulIP" dans le formulaire) :
    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
    function callScript ( scriptName, args )
    {  
        var xhr_object = null;      
        // ### Construction de l’objet XMLHttpRequest selon le type de navigateur
        // Cas des navigateurs de type Netscape (Firefore, Conqueror, etc.)
        if(window.XMLHttpRequest)
             xhr_object = new XMLHttpRequest();
        // Cas du navigateur Internet Explorer
        else if(window.ActiveXObject)
             xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
        // Cas des navigateurs ne comprenant pas cette technologie (anciens navigateurs)
        else
        {           // XMLHttpRequest non supporté par le navigateur
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
            return;
        }   
    xhr_object.open("POST", scriptName, true);
    /////////////////////////////////////////////////
    xhr_object.onreadystatechange = function() {
             if(xhr_object.readyState == 4) {
     
                alert('bien'); 
             }
            return xhr_object.readyState;
        }  
    ////////////////////////////////////////////////   
        // XMLHttpRequest   
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  
        //  Envoi de la requête
    xhr_object.send(args);
    }
    function formulP ()
    {// --- Récupération des paramètres nécessaire au script PHP
        var id_ist_job = document.getElementById("id_ist_job").value;
        var name_ist_job = document.getElementById("name_ist_job").value;
        var adresse_user = document.getElementById("adresse_user").value;
        var name_user = document.getElementById("name_user").value;
     
        var data = "id_ist_job=" + id_ist_job + "&name_ist_job=" + name_ist_job + "&adresse_user=" + adresse_user + "&name_user=" + name_user;
        // --- Appel au script PHP de traitement
        callScript("../../models/boite_poster/accept_added_istichara_job.php",data);
    }
    Mais ici presque le même problème, quand je choisis le travail 4 ou 5 (bouton formulaire 4 ou 5), le script insère toujours en base de données les valeurs du premier formulaire et premier message...

    Je trouve que les deux script toujours tombent sur le premier formulaire dans la page qui porte les id (id_ist_job, name_ist_job...). Il prend les id du premier formulaire et ses valeurs et non pas la 5ème ou 4ème puisque c'est un seul formulaire qui se répète dans la boucle while alors des formulaires avec les mêmes id et avec des valeurs différentes.

    Pièce jointe :
    Nom : Sans titre.png
Affichages : 1633
Taille : 18,0 Ko

    Comment faire s'il vous plait ?

    J'ai choisi d'utiliser le script jQuery

    PS : pardonnez moi pour orthographe, le français n'est pas ma langue maternelle. (modéré si possible par l'équipe)

  2. #2
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    je le trouve...
    code php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while
    {
    echo '<div id="bouttons_sous_msg">
     <span id="boutton" class="ajoute_au_liste" >
     <form action=""  >
     <input type="hidden" name="id_ist_job" value="'.$id_ist_job.'"     />
     <input type="hidden" name="name_ist_job" value="'.$donnees['name'].'"  />
     <input type="hidden" name="adresse_user" value="a"   />
     <input type="hidden" name="name_user" value="'.$_SESSION['name'].'"   />
     <input type="button" class="ajoute_au_listex" value="ajout dans list"  />
     </form>
     </span> '; 
    }
    code jquery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $(function() {
    $('.ajoute_au_listex').click(function() {
      var $form = $(this).closest('form');
      var id_ist_job = $form.find('input[name="id_ist_job"]').val();
      var name_ist_job = $form.find('input[name="name_ist_job"]').val();
      var adresse_user = $form.find('input[name="adresse_user"]').val();
      var name_user = $form.find('input[name="name_user"]').val();
      $.post('../../models/boite_poster/accept_added_istichara_job.php',{'id_ist_job':id_ist_job,'name_ist_job':name_ist_job,'adresse_user':adresse_user,'name_user':name_user});
      $form.hide(1100);
    });
    });

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2012, 11h31
  2. Réponses: 3
    Dernier message: 25/11/2008, 17h01
  3. Formulaire dans une boucle while
    Par starr dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2007, 08h27
  4. Réponses: 6
    Dernier message: 17/06/2005, 16h51
  5. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51

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