Liste deroulante php et requete mysql

Chandris Messages postés 2 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 22 décembre 2010 - 22 déc. 2010 à 18:06
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 - 22 déc. 2010 à 20:00
Bonjour,
depuis quelque jour je suis bloqué avec mon code php. alors voila j'ai un formulaire contenant des listes deroulantes chargées par des requetes mysql, et j'aimerais recuperer la valeur de chacune des listes pour l'inserer dans une requete du type INSERT INTO


ex de code

recupartion des matieres dans la liste deroulante // ca fonctionne

<?php

mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('mybase') or die(mysql_error());


$sql = " SELECT DISTINCT mat_prof FROM professeur ";
$result = mysql_query($sql) or die("Requete incorrect");

echo "<form action='page.php' method='GET'>
Matiere :
<select name='matiere'>";
while ($row=mysql_fetch_array($result))
{
echo"<option>$row[0]</option>";
}
echo"</select>

</form>";
?>

et ici je veux recuperer la valeur de la liste deroulante...

$mat=$_GET['matiere'];


avant de l'inserer dans une requete du genre

insert into TABLE values ( '".$mat."'....

Et voici le resultat: Notice: Undefined index: matiere in C:\wamp\www...


merci de votre aide

8 réponses

phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
22 déc. 2010 à 18:12
Bonjour,

"<option>$row[0]</option>";


Si tu ne met pas de valeur dans l'attribut value dans la balise option tu n'aura aucune valeur en retour enfin si null


______________________________________________________________________
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
22 déc. 2010 à 19:22
mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('mybase') or die(mysql_error());


$sql = " SELECT DISTINCT mat_prof FROM professeur ";
$result = mysql_query($sql) or die("Requete incorrect");

echo "<form action='page.php' method='GET'>
Matiere :
<select name='matiere'>";
while ($row=mysql_fetch_array($result))
{
echo"<option>$row[0]</option>"; }
echo"</select>

</form>";
?>

plutôt

echo "<option>$row['mat_prof ']</option>";
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
22 déc. 2010 à 19:23
bonsoir et a++ (j'ai oublié les politesses d'usage excuses)
0
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
22 déc. 2010 à 19:35
Cod57,

Autant que je me rappel(j'utilise plus trop les fonctions mysql), quand le type de tableau n'est pas spécifier dans mysql_fetch_array(), il retourne un tableau assoc ET num.
Donc je doute que c'est celà qui pose problème !


Chandris, concernant le notice que tu reçois :
Notice: Undefined index: matiere in C:\wamp\www...

Il faut tester l'existence de $_GET['matiere'], par exemple :
$mat= (isset($_GET['matiere'])) $_GET['matiere'] ? '';



______________________________________________________________________
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
22 déc. 2010 à 19:36
Plutot $mat= (isset($_GET['matiere'])) ? $_GET['matiere'] : ''; J'avais fais une petite erreur de syntaxe


______________________________________________________________________
0
Chandris Messages postés 2 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 22 décembre 2010
22 déc. 2010 à 19:42
merci pour votre aide, jai finalement pu contourner le pb d'une autre maniere__^^
il s'agit de declarer en html la liste deroulante et de la chargé via php comme ce ci:

Materiel :<select name="materiel">

<?php

mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('mybase') or die(mysql_error());

$sql = " SELECT DISTINCT lib_mat FROM materiel ";
$result = mysql_query($sql) or die("Requete incorrect");
while($row=mysql_fetch_array($result))
{
echo "<option>".$row[0]." </option>\n";
}
?>
</select>



je charge bien les valeurs de la base de données et avec l'attribut name de mon select, je recupere la valeur actuelle avec une varirable $mat=$_Post['materiel'] et ma requete est parametrée avec $mat...

Merci encore pour le ptit coup de pouce
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
22 déc. 2010 à 19:50
bonsoir

@phpAnonyme tu as raison pour l'indice mais $row[0] moi je pense plutôt à l'id ... bon bref ça marche pour lui

a++
0
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
22 déc. 2010 à 20:00
[quote=Chandris]je charge bien les valeurs de la base de données et avec l'attribut name de mon select, je recupere la valeur actuelle avec une varirable $mat= $_Post['materiel'lect/quote
En l'état(même avec le code corriger de ton dernier post) $_POST['matériel'] sera toujours égale à null , comme je te l'ai fais remarquer dans mon premier post.
Il te manque l'attribut 'value' dans la balise 'option' ! En claire :
<option value =$row[0]>$row[0]</option>




______________________________________________________________________
0
Rejoignez-nous