Page 1 sur 1

Récup du value mas pas la sélection d'une liste déroulante

Posté : 26 janv. 2007, 11:08
par Nico26
Bonjour

J'ai une liste déroulante qui liste des bâtiments. Je veux récupérer le bâtiment sélectionné pour pouvoir m'en servir dans une requête sur une autre page. Les résultats de cette requète seront affichés dans des champs textes.

Le problème c'est que ma requète me récupère le value de ma liste déroulante mais pas la sélection et que je ne sais pas comment inscrire les résultats de ma requète dans les champs texte.

Voici le message d'erreur

Code : Tout sélectionner

Erreur SQL ! SELECT `ID_cles` as idc,Lieu,Dispo,Num_Secteur,CodeMarcheEnt,CodeArretEnt,CodeMarchAgent,CodeArretAgent,Nom_Secteur FROM tbl_cles,tbl_secteurs WHERE Lieu = Clé n°: 88 Disponible : Non ORDER BY idc; Erreur de syntaxe près de 'Clé n°: 88 Disponible : Non ORDER BY i' à la ligne 1
Je précise mon début de formulaire qui est sur une autre page
<form action="details.php" method="post" id="chglieu" name="chglieu">
Voici mon formulaire

/* Maintenant on peut construire la liste déroulante */  
    $liste = "";
    
    $liste .= '<select name="leLieu" id="leLieu" onchange="document.getElementById(\'valeurSelect\').innerHTML = this.options[this.selectedIndex].value;">'."\n";
    $liste .= '<option value="">- - - Choisissez un Lieu - - -</option>';
    /*Récupération du n° de clé et de sa disponibilité dans le 'value' */
    for($d = 0; $d < $nd; $d++)
    {
        $liste .= '<option value="<b><u>Cl&eacute; n&deg;:</u>&nbsp;&nbsp;'.$code_lieu[$d].'<br><br><u>Disponible :</u>&nbsp;&nbsp;'.$etat_lieu[$d].'">'.htmlentities($nom_lieu[$d]).'</option>'."\n";
    }
    $liste .= "</select>"."\n";
    /* Un petit coup de balai */
    mysql_free_result($rech_lieu);
    /* Affichage de la liste déroulante */
    echo($liste);
    echo '<br><br><span id="valeurSelect"></span></b><br><br><input type="button" name="btenvoi" onclick="pop_it(chglieu);" value="Voir la fiche" />';
et ma page de récupération
<?
// Chargement des paramètres
//de connexion à la base de données
include ('connexion.php');

    /* Création de la requête pour avoir les bâtiments de ce secteur */
    $sql = "SELECT `ID_cles` as idc,Lieu,Dispo,Num_Secteur,CodeMarcheEnt,CodeArretEnt,CodeMarchAgent,CodeArretAgent,Nom_Secteur".
            " FROM tbl_cles,tbl_secteurs".
            " WHERE Lieu = ".$_POST['leLieu']."".
            " ORDER BY idc;";
    //Exécution de la requête
    $rech_lieu = mysql_query($sql, $db_connexion) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
?>
<html>
  <head>
    <title>
        Détail de la Clé
    </title>
  </head>
  <body>
      <font size=3 face="Arial">Détails de la Clé</font>
      <br>
      <br>
      <form name='modifcle' action='details.php' method='post''>
        <table border=0>
          <tr>
            <td>
              <u>Clé n°: </u>
            </td>
            <td>
              <input type="text" name="numcle" value="<? $recup['idc'] ?>">
            </td>
          </tr>
          <tr>
            <td>
              <u>Lieu : </u>
            </td>
            <td>
              <input type="textarea" name="nom_lieu" value="<? echo $recup['Lieu'] ?>">
            </td>
          </tr>
          <tr>
            <td>
              <u>Secteur : </u>  
            </td>
            <td>
              <input type="text" name="nom_secteur" value="<? echo $recup['Nom_Secteur'] ?>">
            </td>
          </tr>
          <tr>
            <td>
              &nbsp;
            </td>
          <tr>
            <td>
              <b><u>Codes Alarmes</u></b>
            </td>
          </tr>
          <tr>
            <td>
              <u>Marche Entreprise : </u>
            </td>
            <td>
              <input type="text" name="cd_m_ent">
            </td>
          </tr>
          <tr>
            <td>
              <u>Arrêt Entreprise : </u>
            </td>
            <td>
              <input type="text" name="cd_a_ent">
            </td>
          </tr>
          <tr>
            <td>
              <u>Marche Agent : </u>
            </td>
            <td>
              <input type="text" name="cd_m_agt">
            </td>
          </tr>
          <tr>
            <td>
              <u>Arrêt Agent : </u>
            </td>
            <td>
              <input type="text" name="cd_a_agt">
            </td>
          </tr>
          <tr>
            <td>
              &nbsp;
            </td>
          <tr>
            <td>
              &nbsp;
            </td>
          </tr>
          <tr>
            <td>
              <b><u>Sortie :</u></b>
            </td>
           </tr>
        </table> 
      </form>
  </body>
</html>

Posté : 26 janv. 2007, 16:36
par ouckileou
Le message d'erreur est asez clair non ? Erreur de syntaxe à la fin

Pour comparer une valeur de colonne avec une chaîne de caractères, on doit entourer la chaîne de guillemets :

Code : Tout sélectionner

colonne = "texte à comparer"

Posté : 26 janv. 2007, 17:09
par Nico26
Le problème des guillemets est corrigé mais il me récupère seulement le value pas la sélection de ma liste déroulante.

Pourtant je fait bien $_POST['leLieu']

Posté : 26 janv. 2007, 17:54
par ouckileou
Le problème des guillemets est corrigé mais il me récupère seulement le value pas la sélection de ma liste déroulante.
Ceci me semble normal

Si tu as :

Code : Tout sélectionner

<select name="test"> </option value="1">Valeur 1</option> </select>
Si tu fais :
echo $_POST['test'];
Tu auras : et non pas :

Code : Tout sélectionner

Valeur 1
Ceci permet d'afficher des valeurs utiles pour un humain (une phrase, un nom) et de manipuler des codes derrière

Exemple :

Code : Tout sélectionner

<select name="langue"> </option value="fr_FR">Français</option> </option value="fr_GB">Anglais (UK)</option> </option value="fr_US">Anglais (USA)</option> </select>

Posté : 26 janv. 2007, 18:01
par Nico26
Ok ça m'avance un peu, mais comment je fais comment pour récupérer la sélection de ma liste déroulante.

Merci

Posté : 26 janv. 2007, 19:59
par ouckileou
Je suis pas sûr de comprendre, si tu as :

Code : Tout sélectionner

<option value="idLieu">libelléLieu</option>
Toi tu veux récupérer :
idLieu seulement (la manière normale) ?
libelléLieu seulement ? (pas normal)
les deux ? (encore moins normal) ?

Quelques corrections :
<option value="<b><u>Cl&eacute; n&deg;:</u>&nbsp;&nbsp;'.$code_lieu[$d].'<br><br><u>Disponible :</u>&nbsp;&nbsp;'.$etat_lieu[$d].'">'.htmlentities($nom_lieu[$d]).'</option>
Les balises <i> ou <b> dans une balise option ne servent à rien, pariel que les <br />, il y a bien trop de choses dans ton "value".

Je le répète, la value sert à passer une donnée UTILE pour ton programme, par exemple un identifiant, une valeur. C'est entre les deux balises que tu mets du texte pour l'utilisateur.

Posté : 29 janv. 2007, 10:00
par Nico26
Bonjour

Je veux récupérer libellélieu. Sinon s'il y a un moyen d'afficher comme ceci sachant que les 2 listes sont liées avec ajax et de mettre à jour les 2 lignes en gras à chaque changement de valeur dans la 2ème liste. Je pourrais mettre uniquement dans le value $code_lieu[$d] et le récupérer dans mon autre page.

Image