[RESOLU] Récupération valeur BDD liste déroulante

Eléphanteau du PHP | 16 Messages

10 juil. 2014, 15:41

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

Mammouth du PHP | 1339 Messages

10 juil. 2014, 16:50

Il faut que les champs soit tous dans le meme <form> ...
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 16 Messages

10 juil. 2014, 17:38

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 ?

Mammouth du PHP | 2278 Messages

10 juil. 2014, 17:47

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.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 1339 Messages

10 juil. 2014, 17:53

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 !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 2278 Messages

10 juil. 2014, 18:15

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
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 16 Messages

11 juil. 2014, 11:33

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

Mammouth du PHP | 1339 Messages

11 juil. 2014, 14:16

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; } ?>
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 16 Messages

11 juil. 2014, 14:46

ç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

Mammouth du PHP | 1339 Messages

11 juil. 2014, 15:45

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>
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 16 Messages

11 juil. 2014, 16:11

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

Mammouth du PHP | 1339 Messages

11 juil. 2014, 16:17

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>
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 16 Messages

11 juil. 2014, 17:03

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 ! :)