[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

8 réponses

  1. 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
  2. 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
  3. 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
    1. 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
  4. tryan44 Messages postés 1289 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
    1. Marie
       
      C'est ce que j'ai mis dans mon programme je me suis juste tromper dans mon commentaire :P
      0
    2. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
    1. tryan44 Messages postés 1289 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
    2. 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
    3. tryan44 Messages postés 1289 Date d'inscription   Statut Membre Dernière intervention   220
       
      oki, autant pour moi :).
      0
  8. tryan44 Messages postés 1289 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
  9. 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
    1. Utilisateur anonyme
       
      De rien :)
      0