Problème de recuperation de contenu array via $_post

Résolu
razanadrakoto Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   527
 
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   Statut Membre Dernière intervention  
 
merci beaucoup
0
razanadrakoto Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
ç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   Statut Membre Dernière intervention   527
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   527
 
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 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Testes la présence avec isset(...).
0