Problème sur listes déroulantes conditionnelles, je n'arrive pas à définir un "n

Résolu
stark_2097 Messages postés 28 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 19 septembre 2008 - 26 août 2008 à 14:28
stark_2097 Messages postés 28 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 19 septembre 2008 - 15 sept. 2008 à 16:16
Salut à tous

Me revoilà avec un nouveau problème.

J'ai deux listes déroulantes alimentées par SQL que je nomme "conditionnelles" car le fait de choisir une option de la première liste fait varier le contenu de la seconde liste.


Le résultat de la sélection de ces 2 listes vient s'enregistrer dans ma base SQL. Pour celà, je dois définir un "name" à chacune des listes pour que celà s'enregistre dans le bon champ de ma base.


Voiçi le script utilisé, il est en deux parties :



include "admin/configbdd.php";
function AfficherType($id)
{
$reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur



$type='';// Initialisation de la variable $type
//la selection des types de codes selon l'ID de la console choisie
$req = mysql_query("SELECT `Consoles_ID`,`Nom` FROM `Typescodes` where Consoles_ID= ".$id." ORDER BY Nom") or die(mysql_error());



$type .='<select name="Typescodes_ID" id="Typedecodes">'; // on commence la declaration de la liste des types de codes
$type .='<option value="00">Selectionnez un type de code</option>';



  while($array = mysql_fetch_array($req))
{



               $type .='<option value="'.$array['Nom'].'">'.$array['Nom'].'</option>';
              
}



$type .='</select>';



$reponse = new xajaxResponse('ISO-8859-1');
$reponse->addAssign("affType","innerHTML",$type); // affichage du contenu de $type (la liste des types de codes) dans le div affType
return $reponse->getXML();
}



require("xajax.inc.php");
$xajax = new xajax(); //On initialise l'objet xajax
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("AfficherType");
$xajax->processRequests();//Fonction qui va se charger de faire les requetes APRES AVOIR DECLARER NOS FONCTIONS
?>


Cette partie doit définir le contenu de la seconde liste en fonction du choix qui sera fait dans la première, en rouge, j'ai ajouter un "name=" mais il n'a aucun effet, la bdd enregistre toujours des zéros.

Ma page de la validation comporte ce code :
$sql = "INSERT INTO Codes
VALUES('','$Consoles_ID','$Regions_ID','$Typescodes_ID','$Nomdujeu','$Idjeu','$Cheats','$Source_ID')";

Tous les autres champs s'enregistre correctement sauf celui là....
A noter si ça a sont importance, comme je le disais, le code pour les listes est en 2 partie, la première partie ci-dessus qui est avant le header, et la seconde à l'endroit de la page ou je veux mes listes déroulante (donc dans le body). Et à savoir que dans mon cas, la première partie est dans ma page principale alors que le second morceaux est dans une page en "include"... je sais pas si ça peut jouer, le script lui fonctionne donc je sur pas sur mais je préfère vous donner toutes les infos.

Pour finir, je vous mets le second bout de code des liste des fois que je place pas le "name=" au bon endroit... :

<label class="left">Choix de la console :</label>



        <?
        $req = mysql_query("SELECT `ID`,`Nom` FROM `Consoles` ORDER BY Nom") or die(mysql_error());
        ?>
        <select name="Consoles_ID" id="dept" onChange="xajax_AfficherType(document.getElementById('dept').value);">
        <option value="00">Sélectionnez une console </option>
        <?php
         while($array = mysql_fetch_array($req))
         {
         ?>
                  <option value="<?php echo ($array['ID']); ?>"><?php echo ($array['Nom']); ?></option>
                  <?php
                  }
                  ?>
                  </select>
                 

       


En rouge le "name=" ajouter à ce second bout de code qui lui fonctionne.
Merci d'avance

5 réponses

stark_2097 Messages postés 28 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 19 septembre 2008
15 sept. 2008 à 16:16
Problème résolu.....
J'ai repris le codes à zéro et j'ai seulement modifié le strict minimum pour l'adapter à mon site.. et ça marche

Je sais pas trop ce que j'avais bien pu changer la première fois qui faisait bugger le script (qui marchait toujours très bien d'ailleurs).
au passage j'en ait profiter pour fermer la balise </form> qui trainait.
3
stark_2097 Messages postés 28 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 19 septembre 2008
26 août 2008 à 15:47
J'ai peut être une piste :
Dans la sélection de ma seconde liste (permier bout de code), je choisissait juste le nom (pas l'ID) donc celà devais me renvoyer le nom en valeur et pas l'ID...
Du coup le champ "Typescodes_ID" de ma base qui est en tinyint ne devait pas pouvoir enregistrer ce qui lui était proposé car pas des chiffres

Alors j'ai entrepris de modifier la liste concerné :

$type .='<option value="'.$array['Nom'].'">'.$array['Nom'].'</option>';
en
$type .='<option value="'.$array['ID'].'">'.$array['Nom'].'</option>';

Ma liste fonctionne toujours aussi bien mais toujours pas d'enregistrement correct dans le champ "Typescodes_ID" de ma base (toujours des zéros).
Je continu à chercher, je sens que je chauffe
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
11 sept. 2008 à 12:09
salut
je me demande s'il ne faudrait pas mettre un conteneur
<form>...</form> pour intégrer le select  ?...
0
stark_2097 Messages postés 28 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 19 septembre 2008
12 sept. 2008 à 15:05
Salut, merci pour ta réponse.
Apparement, il y a déjà le conteneur "form"... j'ai copié l'intégralité du code des fois que ce soit plus parlant.
Par contre du coup, je vois pas la balise de fin de form </form>.... bizarre car tout fonctionne (sauf mon petit problème...).



Pour trouver l'erreur plus facilement, je me demandais s'il y avait moyen d'afficher à l'écran les données plutot que de les enregistrer dans la base...
Comme ça je remplie mon formulaire, et quand je valide, ça m'affiche une page reprennant les données saisies...
Et comme ça je verrais ce qui cloque pour typescodes_ID, soit j'ai rien et c'est le "name" qui marche pas, soit j'ai le nom du type de codes donc le "name" fonctionne mais ce n'est pas les bonnes données qui sont envoyées à la base (je veux récupérer l'ID et pas le nom), soit ça s'affiche bien et là je comprend plus rien



Si cette possibilité existe, il ya moyen de m'aiguiller un peu sur la démarche à suivre car je connais rien de rien au PHP, je me contente de recopier des codes et scripts tous prêts et de les modifier légèrement suivant mes besoins... je comprend très basiquement le fonctionnement mais ç'est tout...




Merci d'avance





<!-- BLOC PAGE PRINCIPALE -->
     

       
        <!-- Titre de la Page -->
        Gestion des codes




        <!-- Contenu -->
        Ajouter codes

        

        

       
        <form action="includes/valideajoutcode.php" method="post">
        <fieldset>
        <label class="left">Choix de la console :</label>



        <?
        $req = mysql_query("SELECT `ID`,`Nom` FROM `Consoles` ORDER BY Nom") or die(mysql_error());
        ?>
        <select name="Consoles_ID" id="dept" onChange="xajax_AfficherType(document.getElementById('dept').value);">
        <option value="00">Sélectionnez une console </option>
        <?php
         while($array = mysql_fetch_array($req))
         {
         ?>
                  <option value="<?php echo ($array['ID']); ?>"><?php echo ($array['Nom']); ?></option>
                  <?php
                  }
                  ?>
                  </select>
                 

       

       

        <label for="Nomdujeu" class="left">Nom du jeu :</label>
          

          

        <label class="left">Région : </label>
        <select name="Regions_ID">
           <?
        $db = mysql_connect('localhost', '****', '*****');
              mysql_select_db('cfccardb',$db);



        $SQL = "SELECT * FROM Regions";
        $res = mysql_query($SQL);
        echo '<option value="" >Choisir une Région</option>';
        while($val=mysql_fetch_array($res)) {
        echo "<option  value='". $val["ID"]. "'.>".$val["Nom"]."</option>\n";
         }
         ?>
         </select>
        

        

        <label for="Idjeu" class="left">ID du jeu :</label>
          

          

        <label for="Cheats" class="left">Codes :</label>
           <textarea name="Cheats" cols="45" rows="10"tabindex="5"></textarea>

          

        <label class="left">Source : </label>
        <select name="Source_ID">
        <?
        $db = mysql_connect('localhost', '****', '******');
              mysql_select_db('cfccardb',$db);



        $SQL = "SELECT * FROM Sources";
        $res = mysql_query($SQL);
        while($val=mysql_fetch_array($res)) {
         echo "<option  value='". $val["ID"]. "'.>".$val["Nom"]."</option>\n";
         }
         ?>
        </select>
       

       

        </fieldset>
       
       

       

        <hr class="clear-contentunit" />



        Liste des Codes

       






       

        <hr class="clear-contentunit" />



      
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stark_2097 Messages postés 28 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 19 septembre 2008
13 sept. 2008 à 22:16
Me revoilà,

Donc j'ai écrit une nouvelle page PHP pour afficher les données saisies plutôt que de les enregistrer dans la base de données.

Le résultat est le suivant, rien ne s'affiche pour "Typescodes_ID".
J'ai tenté de placer le "name=Typescodes_ID" à plusieurs endroit mais toujours sans succès....
0
Rejoignez-nous