[PHP] Recupération valeur variable

Résolu
Marie -  
 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

A voir également:

8 réponses

Utilisateur anonyme
 
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.
0
Marie
 
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.
0
Utilisateur anonyme
 
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 ?
0
Utilisateur anonyme
 
Et retire le 'required' à la fin de la balise <form> de ton formulaire. Je ne crois pas que cet attribut existe pour <form>.
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
Je m'incruste ...

La variable $POST_ ['Nom_client'] est fausse, c'est plutôt $_POST['Nom_client'].
0
Marie
 
C'est ce que j'ai mis dans mon programme je me suis juste tromper dans mon commentaire :P
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Marie
 
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.
0
Utilisateur anonyme
 
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.
0
Utilisateur anonyme
 
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
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
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?).
0
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.
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
oki, autant pour moi :).
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
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...";
		}
	}
?>

0
Marie
 
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!
0
Utilisateur anonyme
 
De rien :)
0