[PHP] Recupération valeur variable

Résolu/Fermé
Marie - Modifié par Marie le 5/06/2014 à 10:58
 Utilisateur anonyme - 5 juin 2014 à 13:45
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
5 juin 2014 à 11:12
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
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
5 juin 2014 à 11:26
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
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 mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
5 juin 2014 à 11:30
Je m'incruste ...

La variable $POST_ ['Nom_client'] est fausse, c'est plutôt $_POST['Nom_client'].
0
C'est ce que j'ai mis dans mon programme je me suis juste tromper dans mon commentaire :P
0
Utilisateur anonyme
5 juin 2014 à 11:48
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
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
5 juin 2014 à 11:38
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
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 mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
5 juin 2014 à 11:45
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
5 juin 2014 à 12:05
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 mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
5 juin 2014 à 12:09
oki, autant pour moi :).
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
5 juin 2014 à 11:55
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
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
5 juin 2014 à 13:45
De rien :)
0