[RESOLU] Envoi de plusieurs variables dans une page PHP avec AJAX

Eléphant du PHP | 161 Messages

29 mars 2017, 15:19

Bonjour,
Je sais bien que le forum porte l'intitulé PHPFrance, et justement j'ai quelques problèmes avec PHP mais surtout en AJAX.
J'essai si vous voulez, d'élaborer un script qui permettent, après une sélection par checkboxs, de supprimer des images d'une galerie.
Toutefois, lorsque j'envoie les données une à une dans ma page de traitement PHP, cela fonctionne, autrement, lorsque j'en envoie plusieurs il ne retient que le nom de la dernière :/

Soit le code suivant, à commencer par mon formulaire, dans lequel le jquery, y rajoute des input type hidden avec pour valeur, celle de l'image cochée à chaque fois (en mode console, je vois bien que chaque input et bien dissocié et unique avec une et une seule valeur qui correspond à chaque fois à l'image choisie).

<form class="formImgAsup" method="POST" action="suppImgs.php">
        <div></div>
        <button type="submit" name="valid" class="validSup sup" style="display:none;"/><i class="fa fa-trash-o"></i></button>
</form>

Ensuite, le jquery :

<script>
$('.imgAsup').hide();
			$('#supImgGal').on('click',function(){
				$(this).toggle();
				$('.validSup').show();
				$('.imgAlb').addClass('anim');
				$('.imgAsup').show();
				$('.alb').hide(1000);
				$("input[type=checkbox]").change(function() {
					$(this).each(function(i) {
						if (this.checked){
							var iASup = $(this).val();
							input = $("<input type=hidden />");
							input.attr({
								"class" : "imgASupprim",
								"name" : "imgSup",
								"value" : iASup,
							});
							$(".formImgAsup div").append(input);
							$(".formImgAsup").submit(function(e){
								e.preventDefault(); 
								var postData = $(this).serialize();
								var formURL = $(this).attr("action");
								$.post("suppImgs.php", postData, function(data){
									console.log(data);
								});
							});
						}
					});
				});
		});
</script>


Et dans le PHP pour l'instant, je n'ai fais que ça :
<?php print $_POST['imgSup']; ?>

Et en fait dans la console à chaque fois je n'ai que le nom de la dernière image :(
Quelqu'un saurait-il m'éclairer ?
Bien cordialement.
Lucie

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 mars 2017, 15:33

(re)salut,
tu serais pas en train de faire un deuxième sujet sur la même chose ? https://forum.phpfrance.com/php-debutan ... 78138.html

comme je te l'ai déjà un indiqué il faut que tu utilises la notation tableau pour nommer tes champs (name="toto[]") ou utiliser un tableau JS que tu sérialises en JSON

J'ai l'impression que tu fais quelque de super complexe pour rien.
Essai de simplifier ton code pour le rendre plus simple à lire et à maintenir.

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 161 Messages

29 mars 2017, 15:43

Pas exactement, j'ai modifié tout le code, même si le problème reste à peu près pareil, je n'ai pas le même résultat.
Je n'ai aucune idée de comment sérialiser en JSON, as-tu un lien pour que je vois comment faire s'il te plaît ?

Par ailleurs, si je renommes mes champs name comme tu le précises, c'est bien cette partie là ...

<script>
var iASup = $(this).val();
input = $("<input type=hidden />");
input.attr({
	"class" : "imgASupprim",
	"name" : "imgSup",
	"value" : iASup,
});
</script>

où "name" : "imgSup" devient imgSup[] c'est ça ?

Je suis désolé, pour la complexité mais cela est justifié, je ne m'attarde juste pas à tout expliquer :/


EDIT : Bah en fait, j'ai même pas pris le temps d'attendre que tu répondes, j'ai fais ce que je proposais au-dessus, ça a fonctionné ! :shock:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 mars 2017, 15:53

pour le JSON : JSON.stringify(object)

@+
Il en faut peu pour être heureux ......