Problème de recuperation de contenu array via $_post

Résolu/Fermé
razanadrakoto Messages postés 11 Date d'inscription jeudi 4 juillet 2013 Statut Membre Dernière intervention 6 novembre 2015 - 18 août 2015 à 15:50
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 19 août 2015 à 15:29
Bonjour,
J'ai créé un site comme des formulaires de contact avec des fonctions javascript pour auto complétion et l'ajout automatique d'une nouvelle ligne, mais j'arrive pas à trouver le moyen de l'envoyer via mail php en utilisant $_post car les valeurs sont variées, voici le code du formulaire:

<td><input class="form-control" type='text' id='countryname_1' name='countryname_1'/></td>

et voici le code pour l'ajout d'une nouvelle ligne:

<button type="button" class='btn phpbutton addmore'>Ajouter ligne</button>

et quand on click sur le button, ça ajoute une nouvelle ligne avec le name='contryname_2', et si la valeur $_POST['countryname_2']; n'existe pas ça affiche des erreur sql.
Alors comment faire pour envoyer le formulaire au complet mais avec des mise en forme, ça marche quand on utilise : htmlspecialchars(print_r($_POST["countryname_"], true)), mais sans mise en forme correcte pour moi.
ou comment l'envoyer sans déclarer tous les 'countryname_1' 'countryname_2' et sans erreur aussi quand il n'y a pas de donnée entrer
Merci beaucoup



2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
18 août 2015 à 17:08
Salut,

Une solution possible serait d'utiliser un tableau pour récupérer la valeur des inputs sans devoir donner à chaque input un nom différent.

Par exemple :
<?php 
if (!empty($_POST['countryname'])) {
	$countryNames = $_POST['countryname'];
	
	foreach($countryNames as $countryName) {
		var_dump($countryName);
	}
}
?>
<form method="post">
	<input type="text" name="countryname[]">
	<input type="text" name="countryname[]">
	<input type="text" name="countryname[]">
	
	<input type="submit" value="Envoyer">
</form>


Bonne journée
1
razanadrakoto Messages postés 11 Date d'inscription jeudi 4 juillet 2013 Statut Membre Dernière intervention 6 novembre 2015
19 août 2015 à 08:29
merci beaucoup
0
razanadrakoto Messages postés 11 Date d'inscription jeudi 4 juillet 2013 Statut Membre Dernière intervention 6 novembre 2015
19 août 2015 à 10:04
ça marche très bien, mais comment faire pour faire retour sans perdre les données saisies car quand je fais retour il ne reste que la première ligne.
Merci
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
19 août 2015 à 11:27
Tu peux enregistrer les données envoyées via le formulaire dans une session PHP. Lorsque tu reviens sur la page du formulaire, il faut alors parcourir cette session pour reconstruire le formulaire avec les données précédemment envoyées.
0
razanadrakoto Messages postés 11 Date d'inscription jeudi 4 juillet 2013 Statut Membre Dernière intervention 6 novembre 2015
19 août 2015 à 14:24
une dernière question s'il vous plait: comment envoyer ces données variées via mail: j'utilise ce code mais seul une ligne est envoyée:
<?php
$to = 'commande@nounous-madagascar.com';
$subject = 'the subject';
$message = $_POST['countryname'];
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
19 août 2015 à 14:39
Si $_POST['countryname'] est un tableau, tu peux utiliser la fonction implode() rassembler tous les éléments dans une chaine de caractères :
$message = implode("\n", $_POST['countryname']);
0
NHenry Messages postés 15173 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 21 décembre 2024 350
18 août 2015 à 16:00
Testes la présence avec isset(...).
0