[PHP] Recupération valeur variable

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

  1. 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.
    1. 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.
      1. 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 ?
        1. Et retire le 'required' à la fin de la balise <form> de ton formulaire. Je ne crois pas que cet attribut existe pour <form>.
      2. Je m'incruste ...

        La variable $POST_ ['Nom_client'] est fausse, c'est plutôt $_POST['Nom_client'].
        1. C'est ce que j'ai mis dans mon programme je me suis juste tromper dans mon commentaire :P
        2. Il y avait bien $_POST dans le script, c'est juste dans sa réponse que Marie a fait une faute de frappe.
      3. 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.
        1. 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.
          1. 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?).
          2. 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.
          3. oki, autant pour moi :).
        2. 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...";
          		}
          	}
          ?>
          

          1. 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!
            1. De rien :)