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 : 1689
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)