1 pièce(s) jointe(s)
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:
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:
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:
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 lobjet 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 :
Pièce jointe 143398
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)