[PHP] Recupération valeur variable [Résolu/Fermé]

Signaler
-
 Utilisateur anonyme -
Bonjour,

Cela fait plusieurs jour que je tente de récupérer la valeur d'une variable de mon formulaire afin de la traiter, puis de l'ajouter dans une base de donnée.

Mon code est pour le formulaire:

$result = $bdd->query('SELECT Nom_client,ID_client FROM Client') or die("Requete pas comprise");
echo "<form action='ajoutlicence.php' method='POST' required>
<table><tr><td><label for 'Nom_client'>Client: </label>
<select name='Nom_client'>";
while ($row = $result->fetch())
{
echo"<option value=$row[1]>$row[0]</option>";
}
echo"</select></td></tr>
</table>
</form>";

Mon code pour la page PHP:

If (isset($_POST['Nom_client']))
{
$nom_client = $_POST['Nom_client'];
echo $nom_client;
}
else
{
echo "Toujours pas...";
}

Soyez indulgent je suis débutante :/

Merci d'avance

8 réponses


Bonjour

Et qu'est-ce qui ne va pas ? Tu ne le dis pas.
Il y a quelque chose qui s'affiche ? Rien ? Un message d'erreur ? Lequel ?

Première piste : au début de ta page ajoutlicence.php, ajoute print_r($_POST); pour voir ce que tu reçois effectivement.
Bonjour,

Il m'affiche "Toujours pas..." car , apparemment, $_POST['Nom_client'] n'existe pas pour ma page PHP

Je ne suis sans doute pas très claire et je m'en excuse.

Pas besoin de t'excuser, tu n'as rien fait de mal :)
Ajoute
print_r($_POST);
au début de ta page ajoutlicence.php. Qu'est-ce que ça affiche ?
Et retire le 'required' à la fin de la balise <form> de ton formulaire. Je ne crois pas que cet attribut existe pour <form>.
Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
228
Je m'incruste ...

La variable $POST_ ['Nom_client'] est fausse, c'est plutôt $_POST['Nom_client'].
C'est ce que j'ai mis dans mon programme je me suis juste tromper dans mon commentaire :P
Utilisateur anonyme
Il y avait bien $_POST dans le script, c'est juste dans sa réponse que Marie a fait une faute de frappe.
Sa m'affiche: Array ( [valider] => Valider )
(valider étant le nom de mon bouton afin de valider l'envoie de mon formulaire)
Required sert a obliger l'utilisateur a remplir ce champs.

OK, je crois comprendre. J'aurais pu le remarquer avant.

Il n'y a pas de bouton Valider dans le formulaire qui contient ton select.

J'ai l'impression que tu mets <form> </form> autour de chacun des champs. Dans ce cas, il s'agit de formulaires différents.
Quand tu cliques sur 'valider', seul le formulaire qui le contient est envoyé.

Il te faut une seul balise <form> au début du formulaire, et une seule </form> à la fin, il ne faut pas les répéter à chaque champ.
Required existe pour chaque champ individuellement, pas pour form. En tous cas, il n'est pas indiqué dans la référence w3schools : https://www.w3schools.com/tags/tag_form.asp
Après petite recherche, je confirme, le W3C ne connaît pas de 'required' pour 'form' :
https://html.spec.whatwg.org/multipage/forms.html#the-form-element
Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
228
Dans son code, seul 'l"option" est contenu dans sa boucle...donc il n'y a pas de répétition du "form" (ou alors j'interprète mal vos écris?).
Utilisateur anonyme
Oui tu interprètes mal.
Je n'ai pas dit qu'il y avait <form></form> autour de chaque option, où as-tu lu ça ?
J'ai juste dit que le bouton valider était dans un autre formulaire que le select, j'ai parlé de formulaire séparé pour chaque champ du formulaire, pas pour chaque option.
Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
228
oki, autant pour moi :).
Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
228
Si ça peut l'aider, la même en version procédural :

<?php
	//Fonction de connexion à la BD
	function connexion_bd(){
		$nom_du_serveur ="***";
		$nom_de_la_base ="***";
		$nom_utilisateur ="***";
		$passe ="***";
		
		@$link = mysqli_connect($nom_du_serveur,$nom_utilisateur,$passe,$nom_de_la_base);
		@mysqli_set_charset($link,"utf8");
		if (mysqli_connect_errno($link)) {
			echo "Echec lors de la connexion à MySQL : " . mysqli_connect_error($link);
			exit();
		}
		return $link;
	}
	$connexion = connexion_bd();
	//-->Fin de fonction de connexion à la BD
	
	//Requête
	$result = mysqli_query($connexion,"Nom_client,ID_client FROM Client");
	//Si il y a quelque chose
	if (mysqli_num_rows($result) != 0){
		//on affiche le formulaire
		echo '<form action="#" method="post">
		<label for="Nom_client">Client: </label>
		<select name="Nom_client">';
		//On boucle
		while($affiche = mysqli_fetch_array($result, MYSQLI_ASSOC))
		{
			echo '<option value="'.$affiche['Nom_client'].'">'.$affiche['Nom_client'].'</option>';
		}
		echo '</select>
		<input name="Valider" value="Valider" type="submit"/>
		</form>';
	}
	//Si rien
	else{
		echo 'Aucune données!';
	}
	
	//Si action de valider
	if(isset($_POST['Valider'])){
		//Si quelques chose
		if(!empty($_POST['Nom_client'])){
			$nom_client = $_POST['Nom_client'];
			echo $nom_client;
		}
		//Si rien
		else{
			echo "Toujours pas...";
		}
	}
?>

Je comprend je vais adapté mon code.
Je vous tiens au courant.

Edit: J'ai compris mon erreur, J'ouvrai et fermais un nouveau formulaire a chaque fois...
Je le serais maintenant :p

Merci a vous!
Utilisateur anonyme
De rien :)