stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 septembre 2008
-
26 août 2008 à 14:28
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 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>';
$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
A voir également:
Problème sur listes déroulantes conditionnelles, je n'arrive pas à définir un "n
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 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.
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 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
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 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>
stark_2097
Messages postés28Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention19 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....