Page 1 sur 1

Récupération valeur BDD liste déroulante

Posté : 10 juil. 2014, 15:41
par Hich9
Bonjour à tous,
J'ai un ptit problème avec l'un de mes codes, et je me permets de venir poster ma question ici :
mon problème est le suivant :

J'ai fait un formulaire qui permet de remplir une table d'une base de données, et dans l'un des champs j'ai mis une liste déroulante qui récupère des valeurs d'une colonne d'une autre table, le problème c'est qu'une fois que je valide j'ai le message d'erreur suivant :

Notice: Undefined index: descbuc in C:\xampp\htdocs\Transform\test.php on line 60
Notice: Undefined index: datep1 in C:\xampp\htdocs\Transform\test.php on line 61
Notice: Undefined index: datep2 in C:\xampp\htdocs\Transform\test.php on line 62
Notice: Undefined index: datep3 in C:\xampp\htdocs\Transform\test.php on line 63
Notice: Undefined index: categories in C:\xampp\htdocs\Transform\test.php on line 64
Notice: Undefined index: type in C:\xampp\htdocs\Transform\test.php on line 67

Je ne sais pas d'ou vient le problème ...
Je vous invite à trouver ci-joint mon code :
<?php
include("fonctions.php");
?>
<html>
<body>
<?php
connectMaBase();
 //requête SQL: 
$sql = "SELECT * FROM T_MATU"; 
  
//exécution de la requête: 
$requete = mysql_query($sql) or die( mysql_error());

?> 

<html>
    <head><title> Formulaire de Saisie </title></head>
    <body>
        <h2>Ajout nouveau BUC : Entrez les donn&eacute;es demand&eacute;es :</h2>
        <form name="inscription" method="post" action="ajouterBUC.php">
            BUC : <input type="text" name="descbuc"/> <br/>
			</br>
            Date P1 (AAAAMMJJ) : <input type="date" name="datep1"/><br/>
			</br>
			Date P2 (AAAAMMJJ) : <input type="date" name="datep2"/><br/>
			</br>
			Date P3 (AAAAMMJJ) : <input type="date" name="datep3"/><br/>
			</br>
			
		
	Maturite	<form action="test.php" method="post">   
<select name="categories">   
<?php 
while ($result = mysql_fetch_array($requete)) { 
echo '<option value="'.$result['commentaire'].'">'.$result['Commentaire'].'</option>';  //la tu avait mis des virgules au lieu des points pour concatener
} 
?> 
</select>   

</form> 

		
		
		
			<form method="post" action="test.php">
			
			Commentaire : <input type="int" name="commentaire"/> <br/>
			</br>
			PRI : <input type="int" name="pri"/> <br/>
			</br>
			Type : <input type="int" name="Type"/><br/>
			</br>
            <input type="submit" name="valider" value="OK"/>
        </form>

		
<?php
        if (isset ($_POST['valider'])){
            //On récupère les valeurs entrées par l'utilisateur :
            $descbuc=$_POST['descbuc'];
            $datep1=$_POST['datep1'];
            $datep2=$_POST['datep2'];
			$datep3=$_POST['datep3'];
			$categories=$_POST['categories'];
			$commentaire=$_POST['commentaire'];
			$pri=$_POST['pri'];
			$type=$_POST['type'];
			
         
            //On se connecte
            connectMaBase();
 
            //On prépare la commande sql d'insertion
            $sql = 'INSERT INTO T_BUC VALUES("","'.$descbuc.'","'.$datep1.'","'.$datep2.'","'.$datep3.'","'.$categories.'","'.$commentaire.'","'.$pri.'","'.$type.'")'; 
 
            /*on lance la commande (mysql_query) et au cas où, 
            on rédige un petit message d'erreur si la requête ne passe pas (or die) 
            (Message qui intègrera les causes d'erreur sql)*/
            mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
 
            // on ferme la connexion
            mysql_close();
        }
        ?>
</body>
</html>
Merci infiniment pour vos réponses
Hicham

Re: Récupération valeur BDD liste déroulante

Posté : 10 juil. 2014, 16:50
par Elie
Il faut que les champs soit tous dans le meme <form> ...

Re: Récupération valeur BDD liste déroulante

Posté : 10 juil. 2014, 17:38
par Hich9
Salut Elie,
Merci beaucoup pour ta réponse,
Comment pourrais mettre et une liste déroulante qui récupère des valeurs en base et les autres cases à remplir dans un même form ? et injecter le contenu de chaque dans la base ?

Re: Récupération valeur BDD liste déroulante

Posté : 10 juil. 2014, 17:47
par sirakawa
Au passage à niveau:
IL faut abandonner mysql au profir de mysqli ou pdo : obsolescence de mysqli (cf manuel offi ciel)
Comme tu as un truc qui ne marche pas, autant changer dès maintenant.
Sur le sujet même je procèderais ainsi:
$chaine = "<select .....>";
while ($result = mysql_fetch_array($requete))
{
$comment = $result['commentaire'];
$chaine .= "<option value = '$comment'> $comment</option>"; //sachant que tu peux de dispenser de value ='' si la valeur est ce que tu affiches
}
$chaine .= "</select>";
et dans ton formulaire tu fais afficher le select.

Re: Récupération valeur BDD liste déroulante

Posté : 10 juil. 2014, 17:53
par Elie
Au passage type="int" n'existe pas, c'est type="number"
Et comme expliqué plutot que d'avoir 3 <form> n'en avoit qu'un ... Je vois meme pas l'interet en plus !

Re: Récupération valeur BDD liste déroulante

Posté : 10 juil. 2014, 18:15
par sirakawa
Au passage type="int" n'existe pas, c'est type="number"
Et comme expliqué plutot que d'avoir 3 <form> n'en avoit qu'un ... Je vois meme pas l'interet en plus !
cf http://www.alsacreations.com/tuto/lire/ ... umber.html

Re: Récupération valeur BDD liste déroulante

Posté : 11 juil. 2014, 11:33
par Hich9
Bonjour,
merci beaucoup pour vos réponses,
elles m'ont permises d'en savoir un peu plus sur les listes déroulantes, cependant, mon projet est déjà bien avancé et je ne peux passer à mysqli,
pour faire simple je souhaiterai juste par exemple :

Créer une liste déroulante qui récupère les valeurs d'une colonne d'une table quelconque, et quand nous cliquons sur Ok ça nous affiche :
votre sélection est : (valeurs choisie dans la liste déroulante)

Comment pourrais-je faire ça ?

Je vous remercie encore pour votre aide
Bonne journée

Re: Récupération valeur BDD liste déroulante

Posté : 11 juil. 2014, 14:16
par Elie
Il y a rien de compliqué ...
<select name="ton_nom" id="ton_nom">
 <option value="la_valeur">Le texte que tu veux</option>
<select>
<input type="submit" id="submit" name="submit" value="ok" />

<?php if(!empty($_POST['submit'])) { echo $_POST['ton_nom']; // = la_valeur; } ?>

Re: Récupération valeur BDD liste déroulante

Posté : 11 juil. 2014, 14:46
par Hich9
ça m'affiche la liste déroulante, mais je n'ai aucun affichage quand je clique sur Ok ...
(désolé de vous solliciter encore ...)

Merci

Re: Récupération valeur BDD liste déroulante

Posté : 11 juil. 2014, 15:45
par Elie
Il faut que ce soit entourer des balises form mais on a vu que c'était pas ton truc ...
Donc puisqu'il faut te faire du sur mesure ...

Au passage mon code avait 2 erreurs :)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<form name="form" id="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
 <fieldset>
  <select name="ton_nom" id="ton_nom">
   <option value="la_valeur">Le texte que tu veux</option>
  </select>
  <input type="submit" id="submit" name="submit" value="ok" />
 </fieldset>
</form>
<?php if(!empty($_POST['submit'])) { echo $_POST['ton_nom']; } // = la_valeur; ?>
</body>
</html>

Re: Récupération valeur BDD liste déroulante

Posté : 11 juil. 2014, 16:11
par Hich9
Super !!
Merci beaucoup Elie!

Là j'ai essayé de reprendre ton code pour y intégrer ma liste déroulante dynamique, mais j'imagine que c'est pas comme ça que ça marche car je n'arrive pas à afficher la sélection .. (je suis un grand bidouilleur, je suis pas développeur ... :S)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
include("fonctions.php");
?>

<?php
connectMaBase();
 //requête SQL: 
$sql = "SELECT * FROM T_MATU"; 
  
//exécution de la requête: 
$requete = mysql_query($sql) or die( mysql_error());

?> 

<form name="form" id="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
 <fieldset>
  <select name="ton_nom" id="ton_nom">
   <?php 
while ($result = mysql_fetch_array($requete)) { 
echo '<option value="'.$result['commentaire'].'">'.$result['Commentaire'].'</option>';  //
} 
?> 
  </select>
  <input type="submit" id="submit" name="submit" value="ok" />
 </fieldset>
</form>


<?php if(!empty($_POST['submit'])) { echo $_POST['ton_nom']; } // = la_valeur; ?>

</body>
</html>
il y a quoi qu'il faut modifier pour que ça affiche ou que je puisse récupérer la valeur dynamique du coup ?
Promis! c'est ma dernière question

Merci infiniment Elie

Re: Récupération valeur BDD liste déroulante

Posté : 11 juil. 2014, 16:17
par Elie
Le code a l'air bien pourtant ...
Que te dit le code source quand tu fais CTRL + U ?

Ce qui me gene c'est $result['commentaire'] et $result['Commentaire'].
Pourquoi un avec une majuscule et pas l'autre.
C'est 2 champ différents ?
Si la value et le texte sont les memes tu as pas besoin de mettre la value.
<option>'.$result['commentaire'].'</option>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<form name="form" id="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
 <fieldset>
  <select name="ton_nom" id="ton_nom">
<?php

include("fonctions.php");
connectMaBase();
$sql = "SELECT * FROM `T_MATU`";
$requete = mysql_query($sql) or die( mysql_error());
while ($result = mysql_fetch_array($requete)) {
	echo '<option value="'.$result['commentaire'].'">'.$result['Commentaire'].'</option>';
}
?>
  </select>
  <input type="submit" id="submit" name="submit" value="ok" />
 </fieldset>
</form>


<?php if(!empty($_POST['submit'])) { echo $_POST['ton_nom']; } // = la_valeur; ?>

</body>
</html>

Re: Récupération valeur BDD liste déroulante

Posté : 11 juil. 2014, 17:03
par Hich9
Super Elie ! ça marche !
Merci infiniment de m'avoir aidé !
Effectivement, il a suffit que je mette un C majuscule à $result['commentaire']

Bon week end ! :)