récupérer ds une varible le choix effectué dans une liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récupérer ds une varible le choix effectué dans une liste déroulante

par Invité » 19 mai 2008, 18:02

re à tous,

est ce que les codes suivant sont correctes ou dèjà c'est du n'importe quoi?
echo $choix;
echo $donnee[$choix];
choix est la variable qui recupere le contenu du menu deroulant.
je veux donc afficher ce contenu, par exemple "points au 2e tour" et
je veux afficher le contenu du champ, dc "points au 2e tour" de ma base de données.


voila ou j'en suis.

<form name="form1" method="POST" action="essai.php">
<div align="left">
<select name="critere" >
<option value="points au 1er tour">points au 1er tour</option>
<option value="points au 2e tour">points au 2e tour</option>
<option value="points (total)">points (total)</option>
</select>
</div>
</form>



<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("tests"); // Sélection de la base 

$choix = $_POST['critere'];
$reponse = mysql_query("SELECT * From classement")or die(mysql_error()); // Requête SQL (optimisée)
echo $choix;

while ($donnee = mysql_fetch_array($reponse))
{
?>

   <table>
   <tr>
       <td><?php echo $donnee['id']; ?></td>
       <td><?php echo $donnee['joueur']; ?></td>
       <td><?php echo $donnee[$choix];  ?></td>
   </tr>
   </table>
   
<?php
}
mysql_close(); // Déconnexion de MySQL
?> 

par nass » 19 mai 2008, 15:06

mais ce qui me pose problème c'est de récupérer (dans une varible) le choix fait dans la liste déroulante, de l'afficher et d'afficher les données du critères choisis.
Si je comprend bien tu veut afficher des données de ta BDD en fonction du choix de ta liste déroulante et plus précisément en fonction de ta variable 'critere' ?

Pour cela, il faut peut etre revoir ta requete SQL en lui mettant une condition

Code : Tout sélectionner

SELECT * FROM classement WHERE critere='$critere'
Mais je ne suis pas sure d'avoir précisément compris ta demande...

par Victor BRITO » 19 mai 2008, 11:16

Comment as-tu construit ta base de données ?

par qeumarh » 19 mai 2008, 02:30

ca ok je vois comment faire mais ce qui me gene c'est que j'ai pas de variable "critere" qui correspond le champ choisi dans le menu deroulant. je suis obligé de travailler avec un des champs defini dans ma base.

<?php
$critere=$_POST['critere'];


mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("tests"); // Sélection de la base 
$reponse = mysql_query("SELECT * FROM classement")or die(mysql_error()); // Requête SQL (optimisée)

while ($donnée = mysql_fetch_array($reponse))
{
?>
    <p>
<?php echo $donnée['Id']; ?>
<?php echo $donnée['Joueur']; ?>
<?php echo $donnée['$critere']; // la variable correspondant à la table choisie selon le critère ?>
      <br />
    </p>
<?php
}
mysql_close(); // Déconnexion de MySQL
?> 

par nass » 19 mai 2008, 02:23

pourrai tu mettre ta requete SQL stp

par nass » 19 mai 2008, 02:22

en faite, pour tester ta requete sous phpmyadmin, tu doit avoir normalement un onglet SQL, par le biai duquel tu peut y copier ta requete SQL puis l'exécuter. Ainsi tu pourra voir les erreurs que commporte ta requête...

par qeumarh » 19 mai 2008, 02:07

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Bienvenue sur mon site !</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" media="screen" type="text/css" title="essai" href="essai.css" /> <script language="JavaScript"> <!-- //PLF-http://www.jejavascript.net/ function menuderoulant(selection){ window.location=selection.options[selection.selectedIndex].value; } //--> </script> </head> <body> ........ voila le debut du code pour le test sous phpmyadmin, je vois pas trop comment faire. faut créer une variable critere? je nage complet!!! merci en tout cas pour le coup de main

par nass » 19 mai 2008, 02:04

mais apparement le probleme viendrai de ta requete SQL, je te conseillerai de la tester dans phpmyadmin
:wink:

par nass » 19 mai 2008, 02:02

peut tu mettre le debut de ton fichier php
:lol:

par qeumarh » 19 mai 2008, 01:39

pardon j'avais pas fait gaffe.

mais tjs un message:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1er tour FROM classement' at line 1

ca signifie quoi?

voila ca qu'il y a sur la ligne 1:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

par nass » 19 mai 2008, 01:38

pour t'expliquer plus simplement,

le nom de ta variable qui sera envoyé est "critere", cette variable aura pour valeur soit 1, 2 ou 3.
cette variable est envoyé avec la méthode POST au fichier essai.php, il te suffira donc de récuperer cette variable en POST comme ceci par exemple

Code : Tout sélectionner

$critere=$_POST['critere'];
Et tu n'a plus qu'a envoyer ta variable $critere par le biai d'une requete SQL dans ta base.

par exemple

Code : Tout sélectionner

$req="INSERT INTO mabase value ('','$critere','')";
voila, voila :wink:

par Victor BRITO » 19 mai 2008, 01:33

'points_tour1', 'points_tour2' et 'points_cumul' ne sont que des exemples. Il suffit que tu les remplaces par les vrais noms de tes colonnes.

Quant aux erreurs 403 ou 404, vérifie ta fonction JavaScript.

par qeumarh » 19 mai 2008, 00:56

alors voila le message obtenu sur le fichier essai.php

Unknown column 'points_tour1' in 'field list'


et si je clique sur un choix du menu deroulant, une autre page s'ouvre avec le message


"Not Found
The requested URL /tests/Points au 1er Tour was not found on this server."

Ou

"Forbidden
You don't have permission to access /tests/Points (Cumulé) on this server."

par Victor BRITO » 19 mai 2008, 00:49

OK.

Procède comme suit.

Code HTML.

Code : Tout sélectionner

<form name="form1" method="post" action="essai.php"> <div align="left"> <select name="critere" onChange="menuderoulant(this)"> <option value="1">Points au 1er Tour</option> <option value="2">Points au 2e Tour</option> <option value="3">Points (Cumulé)</option> </select> <input type="submit" value="Valider" /> </div> </form>
Code PHP
<?php
// Récupération du choix du critère
if (isset ($_POST['critere']) && preg_match("/^[1-3]$/D", $_POST['critere'])) $critere = $_POST['critere'];
else $critere = 1; // Une valeur par défaut

// Choix de la colonne correspondant au critère
switch ($critere)
{
  case 3: // Si $critere vaut 3, choix de la colonne des points cumulés
    $colonne = 'points_cumul';
    break;
  case 2: // Si $critere vaut 2, choix de la colonne des points au 2ème tour
    $colonne = 'points_tour2';
    break;
  case 1:  // Si $critere vaut 1, choix de la colonne des points au 1er tout
  default: // Idem pour la valeur par défaut de $critere (qui est 1)
    $colonne = 'points_tour1';
    break;
}
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("tests"); // Sélection de la base 
$reponse = mysql_query("SELECT id, joueur, ".$colonne." FROM classement")or die(mysql_error()); // Requête SQL (optimisée)

while ($donnée = mysql_fetch_array($reponse))
{
?>
    <p>
<?php echo $donnée['Id']; ?>
<?php echo $donnée['Joueur']; ?>
<?php echo $donnée[$colonne]; // la variable correspondant à la table choisie selon le critère ?>
      <br />
    </p>
<?php
}
mysql_close(); // Déconnexion de MySQL
?>
Est-ce plus clair ? ;)

par zeus » 19 mai 2008, 00:36

Modération :
qeumarh, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ