Page 1 sur 1

Problème bouton submit liste déroulante

Posté : 24 juin 2014, 16:27
par Fripou
Bonjour
Voila j'ai repris quelque tuto sur le net pour faire deux listes déroulantes liées. Et je voudrais, qu'apres avoir choisis les deux listes et que l'on appuie sur le bouton Submit, ma page se recharge et affiche une phrase dans la page du style : "Vous avez sélectionné le client XX et la transaction XX" Le problème c'est que je n'arrive pas à récupérer la transaction ...
J'ai fais deux trois test donc j'arrive bien a récuperer le nom du client après le Submit mais pas la transaction ... Si quelqu'un arrive à me débuguer je le remercierais grandement ^^
<?php
echo '<html>';
echo '<body>';

$base = "metrique_sap";

$idr = isset($_POST['client'])?$_POST['client']:null;

if(isset($_POST['ok']) && isset($_POST['transaction']) && $_POST['transaction'] != "")
{
    $client_selectionnee = $_POST['client'];
    $trans_selectionne = $_POST['transaction'];
?>
<p>Vous avez sélectionné le client <?php echo($client_selectionnee); ?> et la transaction <?php echo($trans_selectionne); ?></p>
<?php
}
?>
<h3>Trouver une transaction</h3>
<?php
$connexion = mysql_connect('xxxxx', 'xxxxxxx', 'xxxxxxx');

if($connexion != false)
{
    $choixbase = mysql_select_db($base, $connexion);
    $sql1 = "SELECT `IDServeur`,`client`".
    " FROM `Serveurs`";
    $rech_client = mysql_query($sql1);
    $code_client = array();
    $client = array();
    /* On active un compteur pour les régions */
    $nb_client = 0;
    if($rech_client != false)
    {
        while($ligne = mysql_fetch_assoc($rech_client))
        {
            array_push($code_client, $ligne['IDServeur']);
            array_push($client, $ligne['client']);

            /* On incrémente de compteur */
            $nb_client++;
        }
    }
    ?>
<form action="steps.php" method="post" id="chgtrans">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez un client</legend>
<select name="client" id="client" onchange="document.forms['chgtrans'].submit();">
  <option value="-1">- - - Choisissez un client - - -</option>
    <?php
    for($i = 0; $i < $nb_client; $i++)
    {
?>
  <option value="<?php echo($code_client[$i]); ?>"<?php echo((isset($idr) && $idr == $code_client[$i])?" selected=\"selected\"":null); ?>><?php echo($client[$i]); ?></option>
<?php
    }
    ?>
</select>
    <?php
    mysql_free_result($rech_client);
    /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */

    if(isset($idr) && $idr != -1)
    {
        /* Cération de la requête pour avoir les départements de cette région */
        $sql2 = "select Item.transaction FROM Item INNER JOIN Relation ON Item.IDItem = Relation.IDItem INNER JOIN Serveurs ON Relation.IDServeur = Serveurs.IDServeur INNER JOIN Data ON Data.IDServeur = Relation.IDServeur AND Data.IDItem = Relation.IDItem WHERE Serveurs.IDServeur = ". $idr ." GROUP BY Item.transaction"; 
		
        if($connexion != false)
        {
            $rech_trans = mysql_query($sql2, $connexion);
            /* Un petit compteur pour les départements */
            $nd = 0;
            /* On crée deux tableaux pour les numéros et les noms des départements */
            $code_trans = array();
            $nom_trans = array();
            /* On va mettre les numéros et noms des départements dans les deux tableaux */
            while($ligne_trans = mysql_fetch_assoc($rech_trans))
            {
                array_push($code_trans, $ligne_trans['IDItem']);
                array_push($nom_trans, $ligne_trans['transaction']);
                $nd++;
            }
            /* Maintenant on peut construire la liste déroulante */
            ?>
<select name="transaction" id="transaction">
            <?php  
            for($d = 0; $d<$nd; $d++)
            {
                ?>
  <option value="<?php echo($code_trans[$d]); ?>"<?php echo((isset($trans_selectionne) && $trans_selectionne == $code_trans[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_trans[$d]); ?></option>
                <?php
            }
?>
</select>
<?php
        }
        /* Un petit coup de balai */
        mysql_free_result($rech_trans);
    }
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
    /* Terminé, on ferme la connexion */
    mysql_close($connexion);
}
else
{
    /* Si on arrive là, c'est pas bon signe, il faut vérifier les 
    * paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}

echo '</body>';
echo '</html>';
?>

Re: Problème bouton submit liste déroulante

Posté : 24 juin 2014, 16:58
par ynx
Salut,

Tu ne sélectionne pas le champ IDItem dans ta requête sql ($sql2). Du coup un peu plus bas, la variable $ligne_trans['IDItem'] est nulle et pour finir les attributs value de tes balises option sont vides.
Il faut donc ajouter le champ IDItem dans la clause SELECT de ta requête.

Bonne journée

Re: Problème bouton submit liste déroulante

Posté : 24 juin 2014, 17:04
par Fripou
Ok merci ... Bon je vais aller me coucher je crois ^^