Liste deroulante php et requete mysql

Signaler
Messages postés
2
Date d'inscription
mercredi 1 décembre 2010
Statut
Membre
Dernière intervention
22 décembre 2010
-
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
-
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

Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
53
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


______________________________________________________________________
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
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>";
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
bonsoir et a++ (j'ai oublié les politesses d'usage excuses)
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
53
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'] ? '';



______________________________________________________________________
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
53
Plutot $mat= (isset($_GET['matiere'])) ? $_GET['matiere'] : ''; J'avais fais une petite erreur de syntaxe


______________________________________________________________________
Messages postés
2
Date d'inscription
mercredi 1 décembre 2010
Statut
Membre
Dernière intervention
22 décembre 2010

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
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
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++
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
53
[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>




______________________________________________________________________