Recuperer choix d'une liste déroulante en PHP
Résolu
pjnew
-
ConceptcaB Messages postés 21 Statut Membre -
ConceptcaB Messages postés 21 Statut Membre -
Bonjour à tous,
Je sais que la question a déjà été posée et résolue mais malgré de nombreux essais, cela ne marche toujours pas dans mon cas particulier.
Merci de votre indulgence pour un petit débutant...
Voilà le problème :
Dans un premier fichier php, je crée une liste déroulante alimentée par la lecture d'une base de données. Un appui sur un bouton m'envoie sur un second fichier où j'affiche certains des champs.
Cela fonctionne.
Mon problème, je ne parviens pas à récupérer le choix fait dans la liste déroulante..
Voici mes fichiers
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'test');
// Connexion à la base de données
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME) or die(mysql_error());
?>
<html>
<head></head>
<FORM action="cible.php">
Heure de debut: <input type="text" name="hh_deb" /><br />
<input type="submit" value="OK" />
</FORM><body>
<FORM name="psge" method="post">
<font color="#7D5FCD" size="4"><b> Heures</b></font>
<?php
$sql0="Select * from passage";
$result0 = mysql_query($sql0) or die("base inaccessible!");
?>
<SELECT name="choix" size="1">
<OPTION value="">Effectuer votre choix...</OPTION>
<?php
$i=0;
while ($user0 = mysql_fetch_assoc($result0))
{
?>
<OPTION
value="<?php echo $user0['id_rlv']; ?>">
<?php echo $user0['id_rlv']; ?>
</OPTION>
<?php
$i++;
}
?>
</SELECT><br /><br />
</FORM>
</body>
</html>
et le fichier cible.php
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
$req = $bdd->prepare('SELECT hh FROM rlv WHERE hh >= ?');
$req->execute(array($_GET['hh_deb']));
echo '<ul>';
while ($donnees = $req->fetch())
{
echo '<li>' . $donnees['hh'] </li>';
}
echo '</ul>';
if (isset($_POST['choix']))
{
$choix = $_POST['choix'];
}
else
echo "choix non trouvé";
$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Merci encore
Je sais que la question a déjà été posée et résolue mais malgré de nombreux essais, cela ne marche toujours pas dans mon cas particulier.
Merci de votre indulgence pour un petit débutant...
Voilà le problème :
Dans un premier fichier php, je crée une liste déroulante alimentée par la lecture d'une base de données. Un appui sur un bouton m'envoie sur un second fichier où j'affiche certains des champs.
Cela fonctionne.
Mon problème, je ne parviens pas à récupérer le choix fait dans la liste déroulante..
Voici mes fichiers
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'test');
// Connexion à la base de données
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME) or die(mysql_error());
?>
<html>
<head></head>
<FORM action="cible.php">
Heure de debut: <input type="text" name="hh_deb" /><br />
<input type="submit" value="OK" />
</FORM><body>
<FORM name="psge" method="post">
<font color="#7D5FCD" size="4"><b> Heures</b></font>
<?php
$sql0="Select * from passage";
$result0 = mysql_query($sql0) or die("base inaccessible!");
?>
<SELECT name="choix" size="1">
<OPTION value="">Effectuer votre choix...</OPTION>
<?php
$i=0;
while ($user0 = mysql_fetch_assoc($result0))
{
?>
<OPTION
value="<?php echo $user0['id_rlv']; ?>">
<?php echo $user0['id_rlv']; ?>
</OPTION>
<?php
$i++;
}
?>
</SELECT><br /><br />
</FORM>
</body>
</html>
et le fichier cible.php
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
$req = $bdd->prepare('SELECT hh FROM rlv WHERE hh >= ?');
$req->execute(array($_GET['hh_deb']));
echo '<ul>';
while ($donnees = $req->fetch())
{
echo '<li>' . $donnees['hh'] </li>';
}
echo '</ul>';
if (isset($_POST['choix']))
{
$choix = $_POST['choix'];
}
else
echo "choix non trouvé";
$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Merci encore
3 réponses
-
tito 23, merci de ton aide
$req = $bdd->prepare('SELECT hh FROM rlv WHERE hh >= ?');
semble bien fonctionner :
je recupère le champs hh de la table rlv si sa valeur est supérieure ou égale à celle saisie dans le 1er formulaire ("hh_deb").
Pour autant, tu as raison, je vais réécrire le code en fondant les deux formulaires.
Merci encore -
le <body> doit être avant ton premier formulaire.
Aussi il ne faut pas mélanger les varibles get et post dans ton fichier cible.php.
et modifier çawhile ($user0 = mysql_fetch_assoc($result0)) { ?> <OPTION value="<?php echo $user0['id_rlv']; ?>"> <?php echo $user0['id_rlv']; ?> </OPTION> <?php $i++; }
parwhile ($user0 = mysql_fetch_assoc($result0)) { echo'<option value="'.$user0['id_rlv'].'">'.$user0['id_rlv'].'</option>';}$req = $bdd->prepare('SELECT hh FROM rlv WHERE hh >= ?');???
corriger par ceciecho '<li>' . $donnees['hh'] .'</li>';
Bon travail. -
Rebonjour
Merci beaucoup tito23 d'avoir pris le temps de t'occuper de mon petit problème.
Grâce à toi mon code est plus clair, mais mon problème n'est pas encore résolu...
Cela m'embête de te déranger (ou d'autres...) pour un problème aussi élémentaire.
Donc, je ne parviens pas à récupérer dans le fichier cible.php la valeur choisie dans la liste déroulante (en faisant un $choix = $_POST['choix']; avec <SELECT name="choix"> dans la définition du formulaire de la liste.
Est-ce que le problème ne viendrait pas de ce que j'accède au fichier cible.php par le bouton submit d'un autre formulaire. En effet, je récupère bien la valeur de la variable saisie dans ce formulaire.
NB
l'instruction print_r($_POST); placée en début de cible.php m'indique Array ( )
Merci encore