Page 1 sur 2

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

Posté : 18 mai 2008, 23:50
par qeumarh
Bonsoir tout le monde,

j'ai une base de données de la forme Id/joueur/critères1/critères2/critères3/...
avec une liste déroulante, je selectionne le critère, soit 1 ou 2 ou 3....

je souhaite afficher sur ma page php/html uniquement Id/joueur/critères1 ou 2 ou 3....avec les infos correspondantes.

je sais afficher ma base de donnée.
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 quelqu'un a une idée, ca m'aiderai bcp.

merci
marc

Posté : 19 mai 2008, 00:10
par Victor BRITO
Ça sent la récupération de données de formulaire.

Soit une page formulaire.html contenant un formulaire.

Code : Tout sélectionner

<form method="post" action="affichage.php"> <p><label for="critere">Critère</label></p> <p> <select id="critere" name="critere"> <option>1</option> <option>2</option> <option>3</option> </select> </p> <p><input type="submit" value="Valider" /></p> </form>
Soit une page affichage.php récupérant les données du formulaire afin d'afficher un résultat de ta base en fonction desdites données.
// Données du formulaire
// On définit une valeur par défaut (au cas où)
$critere = (isset ($_POST['critere']) && preg_match ("/^[1-3]$/D", $_POST['critere']))? $_POST['critere']: 1;
Si j'ai bien compris, tu as trois colonnes dans ta table appelées criteres1, criteres2, criteres3 ; auquel cas la requête ressemblera à quelque chose de ce genre :
$sql = "SELECT id, joueur, criteres".$critere." FROM ta_table";
Ai-je été clair ? ;)

Posté : 19 mai 2008, 00:20
par qeumarh
merci pour la réponse mais c'est pas trop clair.

voila ou j'en suis.
<form name="form1" method="post" action="essai.php">
<div align="left">
<select name="critere" onChange="menuderoulant(this)">
<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 (Cumulé)">Points (Cumulé)</option>
</select>
</div>
</form>




<?php
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

while ($donnée = mysql_fetch_array($reponse))
{
?>
    <p>
        <?php echo $donnée['Id']; ?>
	<?php echo $donnée['Joueur']; ?>
	<?php echo $donnée['critere']; ?><br />
    </p>
<?php
}
mysql_close(); // Déconnexion de MySQL
?>
mais je cale pour la partie ou il faut recuperer le choix du menu dans une variable

marc

Posté : 19 mai 2008, 00:23
par Victor BRITO
Pourrais-tu indiquer comment est construite la table stockant les données ?

Posté : 19 mai 2008, 00:31
par qeumarh
alors,

1er champ = Id
2eme = Joueur
3eme = Nombre de points au 1er tour
4eme = Nombre de points au 2eme tour
5eme = Nombre de points (cumulé)
6eme....

il y a 17 champs

mais je ne veux afficher que Id/Joueur/ et le champs définit par la liste déroulante
dés que je clique sur un choix de la liste par exemple "Nombre de points au 2eme tour", ca affiche
Id/Joueur/Nombre de points au 2eme tour mais également les données correspondantes aux champs

Posté : 19 mai 2008, 00:36
par zeus
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

Posté : 19 mai 2008, 00:49
par Victor BRITO
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 ? ;)

Posté : 19 mai 2008, 00:56
par qeumarh
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."

Posté : 19 mai 2008, 01:33
par Victor BRITO
'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.

Posté : 19 mai 2008, 01:38
par nass
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:

Posté : 19 mai 2008, 01:39
par qeumarh
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">

Posté : 19 mai 2008, 02:02
par nass
peut tu mettre le debut de ton fichier php
:lol:

Posté : 19 mai 2008, 02:04
par nass
mais apparement le probleme viendrai de ta requete SQL, je te conseillerai de la tester dans phpmyadmin
:wink:

Posté : 19 mai 2008, 02:07
par qeumarh

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

Posté : 19 mai 2008, 02:22
par nass
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...