AFFICHER UNE LISTE DÉROULANTE EN FONCTION D'UNE AUTRE LISTE SANS RECHARGER LA PA
cs_sory1
Messages postés9Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention 8 janvier 2005
-
1 sept. 2004 à 12:21
molki
Messages postés2Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention21 juin 2011
-
21 juin 2011 à 13:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
molki
Messages postés2Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention21 juin 2011 21 juin 2011 à 13:46
Bonjour
Je viens de pas mal cafouiller pour adapter cette super source à mon environnement !
Cependant, je vous le livre si ça peut aider.
Je suis en Oracle en ADODB et je n'ai qu'une table "normale" avec des dates (21/07/2011) et des heures entières (8 ou 9) et une case de rendez-vous (vide ou non)
Je veux afficher les dates uniques en 'cat' et les heures dispo de cette date en 'scat'.
Voilà le résultat qui tourne correctement, merci !!
<html>
<head>
<title>Créer par Frop01 (Membre du Club CodeS-Source.com)</title>
<script>
List = new Array();
function Remplir(valeur)
{
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie Date) correspond à la Date de la catégorie ex : List[2]=new Array ('04/07/2011',9);
if (List[i][0]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][1]+">"+List[i][1]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="rdvd_date.php">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
session_start();
require ('adodb.inc.php');
include ("fonctions/rdvd_fonc.php");
include ("config/rdvd_config.php");
$adocon = &ADONewConnection("oci8");
$adocon->PConnect($DB_HOST,$DB_USER,$DB_PASS);
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$today=date("d/m/Y");
$sql_getdates_libres = "select distinct DAT_RDV from RDVD_RDV where DAT_RDV>TO_DATE('$today','DD/MM/YYYY') and COD_CAN is null order by DAT_RDV";
//echo "
$sql_getdates_libres";
$rs0 = $adocon->Execute($sql_getdates_libres);
$i=0;
while (!$rs0->EOF)
{
$DAT_RDV = format_datez_rdv($rs0->fields["DAT_RDV"]);
echo "\t\t<option value=$DAT_RDV>$DAT_RDV</option>";
if ($i==0) { $j="'$DAT_RDV'"; $i=1; } // garder la valeur du premier enregistrement
$rs0->MoveNext();
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$sql_getheures_libres = "select DAT_RDV, HEU_RDV from RDVD_RDV where DAT_RDV>TO_DATE('$today','DD/MM/YYYY') and COD_CAN is null group by DAT_RDV, HEU_RDV";
//echo "
$sql_getheures_libres";
$rs1 = $adocon->Execute($sql_getheures_libres); // or die ("Select impossible");
$i=0;
while (!$rs1->EOF)
{
$HEU_RDV = $rs1->fields["HEU_RDV"];
$DAT_RDV = format_datez_rdv($rs1->fields["DAT_RDV"]);
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array ('04/07/2011',8);
// ex : List[2]=new Array ('04/07/2011',9);
echo "<script>List[$i] = new Array('$DAT_RDV',$HEU_RDV);</script>";
$i++;
$rs1->MoveNext();
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
cs_hantouva
Messages postés12Date d'inscriptionvendredi 10 décembre 2010StatutMembreDernière intervention19 mars 2012 24 mars 2011 à 11:50
bonjour;
je viens d'utiliser votre code afin d'afficher les communes relative aux wilaya cepensdant jutilise une base de donnees sql server au lieu de my sql, la liste derouante de wilaya fonctionne cependant celle de commune( s'affiche vide et un message derreur saffiche avec, je ne trouve pas ou es le probleme jai repri le script ds head comme tel pourriez vous m'aider si vous avez une idee svp sachant que la partie connexion la bd s'effectue sans aucun pb
voici message derreur
Notice: Undefined offset: 1 in C:\wamp\www\\ECOF.php on line 258
Notice: Undefined offset: 2 in C:\wamp\www\ECOF.php on line 258
ligne 258: echo "<script>List[".$i."] = new Array(".($row[0]).",".($row[1]).",'".($row[2])."');</script>";
voici mon code
partie liste deroulante de wilaya
<select class="arrondi" name="cat" dir="ltr" OnChange="Remplir(cat.value)">
<option value="-1">- - - Choisissez une wilaya - - -</option>
<?php
$i=0;
$j=0;
$query=odbc_exec ($sqlconnect,"SELECT wilayalib FROM wilaya" );
while(odbc_fetch_into($query,$row))
{
echo "\t\t<option value=".($row[0]).">".($row[0])."</option>";
if ($i==0) { $j=$row[0]; $i=1; } // garder la valeur du premier enregistrement
}
</td>
<?php
// Séléction de les enregistrements de la table commune
$query=odbc_exec ($sqlconnect,"SELECT comlib FROM commune " );
while(odbc_fetch_into($query,$row))
// $i = initialise la variable i
$i=0;
{
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array (1,1,"Sous-catégorie 1");
// ex : List[2]=new Array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($row[0]).",".($row[1]).",'".($row[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des communes en utilisant la valeur j
?>
ma table wilaya contient comme champ: wilayalib,id_wilaya
table commune continent: comlib,id_com,id_wilaya
merci bcq
infoges
Messages postés9Date d'inscriptionjeudi 1 avril 2010StatutMembreDernière intervention 4 avril 2010 1 avril 2010 à 14:11
Bonjour frop01,
Dans le cadre de la préparation de mon projet de fin d'étude, j'ai une tâche pareille avec celle de ton code des deux listes déroulantes liées alimentées de la base de données MySql.
j'ai essayé ton code avec ta base de données et ça marche très bien mais en l'appliquant sur la mienne, il y aura un affichage du contenu de la première liste déroulante mais la deuxième liste reste vide si c'est possible peux-je vous envoyer mon code et ma base de données pour m'orienter vers la bonne solution. Franchement, j'ai essayé tant de fois de comprendre le principe du fonctionnement du code JavaScript avec celle de l'affichage de la deuxième liste déroulante sans cesse.
Dans l'attente de votre réponse, veuillez agréer Monsieur, mes salutations les plus distinguées.
Amicalement
cs_saille
Messages postés8Date d'inscriptionvendredi 27 novembre 2009StatutMembreDernière intervention15 février 2013 27 nov. 2009 à 11:49
Bonjour,
Je cherche a utiliser ce code, qui correspond tout à fait à ce dont j'ai besoin.
Ma seconde liste déroulante ne contient rien.
Je charge correctement ma première liste (en affichage code source j'ai entre autre :
A noter que j'ai mis entre ' ' l'option value (code postal), comme dans la tables, mais sans les ' ' c'est pareil.
Je charge correctement mon tableau (toujours en affichage code source) :
<script>List[0] = new Array(AINC,LE CHAMP DE LA VILLE,'03003');</script><script>List[1] = new Array(AINR,LES RECOLLETS,'03003') etc etc
Je n'ai rien modifié au script java, sauf le test puisque je veux tester le code postal :
if (List[i][2]==valeur)
Merci si quelqu'un a une idée
Saille désemparée
dilettante2008
Messages postés1Date d'inscriptionlundi 4 décembre 2000StatutMembreDernière intervention 1 octobre 2009 1 oct. 2009 à 07:58
Salut,
Juste merci pour la ressource, c'est simple et très efficace.
lhymn
Messages postés5Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention11 décembre 2008 10 déc. 2008 à 10:17
Merci pour ton lien pour le code en javax c'est clair que c'est plus simple et surtout moins lourd
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 22 avril 2008 à 11:01
C'es bon c'est réolu :) j'avais oublier d'inclure mais fichiers requis dans resultsPopulaetData.php
MDR... coment passer 2 jours sans comprendre lol :)
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 22 avril 2008 à 10:10
Hello,
J'ai essayer le script via ajax.... je n'arrive pas a le faire marcher...
Mon index.php :
<head>
...
<script type="text/javascript" language="javascript">
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
*/
function sendData(param, page)
{
if(document.all)
{
//Internet Explorer
var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
}//fin if
else
{
//Mozilla
var XhrObj = new XMLHttpRequest();
}//fin else
//définition de l'endroit d'affichage:
var content = document.getElementById("contenu");
XhrObj.open("POST", page);
//Ok pour la page cible
XhrObj.onreadystatechange = function()
{if (XhrObj.readyState 4 && XhrObj.status 200)
content.innerHTML = XhrObj.responseText ;
}
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
}//fin fonction SendData
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$rq="SELECT * FROM ListRegions ORDER BY regionsName ASC";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; }
}
?>
</select>
...
<?php
echo "<select name="city">";
$rq="SELECT * FROM ListCities WHERE id_regionale=".$j." ORDER BY citiesName ASC";
$result= mysql_query ($rq) or die ("Select impossible");
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option>
";
}
echo "</select>";
?>
...
resultsPopulateDatas.php :
<?php
// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) ){
$rq="SELECT * FROM ListCities WHERE id_regionale=".$_POST['id']." ORDER BY citiesName ASC";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0)
{
echo "<select size='1' name='city'>";
}
else
{
echo utf8_encode("Pas de sous catégories disponible");
}
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option>
";
}
echo "</select>";
}
?>
HELP ! THANKS :)
PS : la connexion database est défini ailleur.
J'arrive a afficher le premier select mais lors de la selection s'un des elements sa me retourne "select impossible"
ryoz
Messages postés2Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention12 mars 2007 12 mars 2007 à 16:07
Je n'ai pas pu mettre de note car il y a un pb, mais je mets 10/10 :)
C'est tout a fait ce ke je cherchais (mais pas en javascript)
Je te remercie beaucoup, ca va me faire gagner du temps
cs_marial
Messages postés13Date d'inscriptionjeudi 1 février 2007StatutMembreDernière intervention 5 juin 2007 5 févr. 2007 à 18:08
Moi je trouve ce code très moins explicite et pourquoi n'as-tu pas crée tes listes avec un exemple concret parce que là on ne sait où les ajouter !
cs_bixx
Messages postés2Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention21 août 2006 13 août 2006 à 15:55
Bonjour, deja merci pour ce code tres utile !!!
Je voulai avoir un renseignement car en faite lorsque je verifi si les listes contienne quelquechose, ma page me di qu'il ne sont pas rempli ?? est-ce normal ou pas ?
Je me suis donc dit que cela venait de mysql_fetch_rows car il propose que deux $rows pour les categorie et trois pour les sous_categorie.
J'ai donc pensé à mysql_fetch_array qui me fera une liste entiére de tout !! mais je ne suis pas encore sure que le problème vienne de mysql_fetch_rows !!
Merci d'avance
ce18ce
Messages postés5Date d'inscriptionmercredi 7 décembre 2005StatutMembreDernière intervention22 août 2006 7 mars 2006 à 10:53
Bonjour, Le script est tres bien fait, tres bien expliqué, merci encore !
Pour ajouter mon petit grain de sel, pour ceux comme moi qui désirait afficher les différents champs du formulaire sur la meme ligne, il suffit de remplacer la balise DIV par une balise SPAN :)
voila !
cécile
cs_guismo1er
Messages postés76Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention12 mars 2009 3 mars 2006 à 14:56
il y a moyen sans ajax, rien q'uavec un on change et c'est bon ;)
ahcorad
Messages postés106Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention23 octobre 2007 8 févr. 2006 à 10:43
comment peut-on faire une triple liste déroulante avec ta méthode ajax ????
ctzenfr
Messages postés10Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention 7 août 2010 15 oct. 2005 à 23:35
Suite...
Résolu en utilisant la méthode AJAX qui est vraiment terrible !
ctzenfr
Messages postés10Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention 7 août 2010 15 oct. 2005 à 15:00
Bonjour,
Petite question complémentaire si je puis me permettre.
Comment conserver la valeur sélectionnée de souscat avec un rechargement de page.
Je m'explique : post du formulaire, vérif des champs sur le serveur, un champ n'est pas validé, réaffichage du form avec les valeurs saisies et un message d'erreur.
Pour cat ça baigne avec !strcmp
if (!(strcmp($dt['0'], $_POST['cat']))) {echo 'selected="selected"'; $j=$dt[0]; $i=1;}
mais pour le second moi y'en a pas bien du tout parler le javanais... Euh le javascript sorry et je ne vois pas trop comment causer au serveur avec lui.
Merci d'avance.
ctzenfr
Messages postés10Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention 7 août 2010 14 oct. 2005 à 17:43
->Frop01,
Clair, précis et efficace... 10/10
Merci.
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 4 oct. 2005 à 18:24
:) pas aussi fort que ca :) mais merci pour le compliement :)
sinon pour afficher le résultat d'une rêquete sur plusieurs page, il existe plusieurs sources par ici.
NB ! toujours regarder les commentaires du code pour mieux comprendre et voir les critiques.
houda_mez
Messages postés6Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention 4 octobre 2005 4 oct. 2005 à 16:18
ça y est j'ai trouvé mon erreur en fait j'ai oublié de modifier la requete
puisque j'ai changé la valeur envoyée donc celle recupérer dans la requete de selection des sous categories doit changer puisque il s'agit de tri selon les id
merci beaucoup pour ton aide
et puisque t'es trop fort en php peut tu m'aider sur le probleme de pagination des resultats d'une requete je veux une source bien commentée si c'est possible
et merci encore une fois
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 4 oct. 2005 à 16:04
Envois le code source pour que je vérifie ainsi la structure de tes tables!!
PS : Prière de bien vouloir envoyer les codes sources sur le forum de phpcs et de faire
le lien vers le message du forum içi.
car ca commence sérieusement à être le désordre par ici.
Merci de votre compréhension.
houda_mez
Messages postés6Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention 4 octobre 2005 4 oct. 2005 à 14:59
ça marche toujours pas la liste des sous categories est vide ainsi ke la valeur envoyée de categorie
comment faire pour ke value de categorie et sous categorie soit designation
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 4 oct. 2005 à 12:59
salut,
dans les deux cas, le formulaire envoi la valeur contenue dans <option value=".($dt[0])."
il suffit de modifier à ta guise le contenu de value
ex: pour renvoyer la désignation pour les catégories : (n'oublie pas les apostrophes pour chaines de caractères)
<option value='".($dt[1])."'>"
pour les sous-catégories : (dans la partie javascript)
sel= sel + "<option value="+List[i][2]+">"+List[i][2]+"</option>";
Bonne continuation !!
houda_mez
Messages postés6Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention 4 octobre 2005 4 oct. 2005 à 12:29
bon j'ai utilisé les 2 codes celui ci et celui en utilisant ajax mais les codes ont le même probleme c'est l'envoi des id ma page resultat me donne 2 4 au lieu de categorie 2 et sous categorie4
j'ai essayé de changer le List[i][0] par List[i][2] pour ce code et
$dt[2] pour l'autre et ça pas marché pour les deux
pourrez vous m'aider svp
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 30 sept. 2005 à 14:18
lol
salut malalam,
non je parle de [url=""][url] qui ne marche pas dans les commentaires de phpcs ;)
Merci pour ton code :) @+
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 30 sept. 2005 à 13:08
Merci pour le merci ;-)
Tu mets des liens vers MON code sans me le dire ?????
Je plaisante hein lol. ;-) Merci de l'attention.
heu...sinon, qu'est-ce qui ne marche pas? Sur la page en lien, ça marche très bien ?
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 29 sept. 2005 à 16:12
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 29 sept. 2005 à 16:05
Salut à tous
Comme je l'ai dit plus haut :
"cette méthode n'est pas recommandé pour un grand nombre de données."
Dans le cas où le nombre de données est très important et que le fait d'utiliser un array bouffe trop de resource et de mémoire du serveur! il est recommendé d'utiliser la technologie AJAX pour interroger le serveur avec javascript pour tirer les informations voulus sans recharger la page.
Voici le même exemple que celui-ci mais utilisant AJAX :
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 16 sept. 2005 à 23:01
salut,
je pense que ca vient du fait que tu as enlever le paramètre "valeur" pour la fonction.
function Remplir(valeur){
@+
jerome78000
Messages postés1Date d'inscriptionjeudi 15 septembre 2005StatutMembreDernière intervention15 septembre 2005 15 sept. 2005 à 18:40
Bonjour je viens de faire quelques changement pour accéder à ma base de données. J'arrive bien à voir le menu categorie mais le menu sous-categorie reste vide. Pouvez vous me dire si je dois changer d'autres choses. Merci d'avance pour votre aide.
Voici mon code :
<html>
<head>
<title>Créer par Frop01 (Membre du Club CodeS-Source.com)</title>
<script>
List = new Array();
function Remplir(){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catégorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="Ajout6.php3">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="root";
$database="MyLibrary";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from table_categorie order by nomCategorie;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from table_sous_categorie order by nomSousCat;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array (1,1,"Sous-catégorie 1");
// ex : List[2]=new Array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
cs_manubarnum
Messages postés8Date d'inscriptionsamedi 30 octobre 2004StatutMembreDernière intervention21 novembre 2004 8 juil. 2005 à 08:45
Bonjour Frop01,
Et bien merci pour ta réponse, même tardive, elle reste bien sûr bienvenue:)
Je vais de ce pas essayer cette solution.
@+
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 7 juil. 2005 à 15:21
Salut,
Selon le message de NeoSqual :
"j'ai pour clés primaires des éléments texte et non pas des éléments numériques comme toi(1,2,3...)"
Suppossons que la clé primaire de Catégorie est varchar(1) et le idcat des sous-cartégorie est varchar(1)
<head>
<title>Créer par Frop01 (Membre du Club CodeS-Source.com)</title>
<script>
List = new Array();
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value=""+List[i][0]+"">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="Ajout6.php3">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="essai";
$i=0; // variable de test
$j=""; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value="".($dt[0])."">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from sous_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array (1,1,"Sous-catégorie 1");
// ex : List[2]=new Array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] =new Array(".($dt[0]).",'".($dt[1])."','".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir('$j');</script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
Dans le tableau List
on change de format du 2ème item de 1 à A et on doit mettre les quotes.
List[1]=new Array (1,1,"Sous-catégorie 1");
à
List[1]=new Array (1,"A","Sous-catégorie 1");
pareil pour les balises Option :
au lieu de :
<option value=1>truc</option>";
ca devient
<option value="A">truc</option>";
pareil pour le remplissage :
Remplir('$j'); au lieu de Remplir($j);
espérant que j'ai répondu à vos questions. N'hésitez pas à me demander d'autres précisions.
Si je ne répond pas tout de suite! c'est que j'ai énormément de boulot alors Merci de votre compréhension.
cs_manubarnum
Messages postés8Date d'inscriptionsamedi 30 octobre 2004StatutMembreDernière intervention21 novembre 2004 7 juil. 2005 à 14:08
Bonjour,
Et bien zut, je n'ai pas trouvé la solution à ce problème!
Tant pis, je me résoud à chercher une autre solution.
@+
cs_manubarnum
Messages postés8Date d'inscriptionsamedi 30 octobre 2004StatutMembreDernière intervention21 novembre 2004 20 juin 2005 à 11:49
Bonjour,
Et bien comme tout le monde je trouve cette source très utile!
Par contre, je rencontre le même problème que Neosqual... que je remercie pour son tuyau : j'avais pas vu que le problème pouvait venir d'identifiants de type caractères.
Je cherche un peu de mon côté et vous tient au courant le cas échéant.
@+
cs_manubarnum
Messages postés8Date d'inscriptionsamedi 30 octobre 2004StatutMembreDernière intervention21 novembre 2004 20 juin 2005 à 11:45
Bonjour,
Et bien comme tout le monde je trouve cette source très utile!
Par contre, je rencontre le même problème que Neosqual... que je remercie pour son tuyau : j'avais pas vu que le problème pouvait venir d'identifiants de type caractères.
Je cherche un peu de mon côté et vous tient au courant le cas échéant.
@+
sly1082
Messages postés2Date d'inscriptionvendredi 16 juillet 2004StatutMembreDernière intervention 3 juin 2005 3 juin 2005 à 10:43
Neosqual
j'ai le même problème que toi et je voulais savoir si tu as trouvé une solution. Je suis en train de me prendre la tête
cs_neosqual
Messages postés13Date d'inscriptionvendredi 11 juin 2004StatutMembreDernière intervention18 mai 2005 18 mai 2005 à 16:32
Bonjour!
Franchement géniale ton code Frop01!!!
J'ai néammoins une petite question...je l'ai intégré à mes tables qui sont a peu près similaire aux tiennes. Seule différence : j'ai pour clés primaires des éléments texte et non pas des éléments numériques comme toi(1,2,3...)
Je voulais juste savoir ce qu'il faut changer dans le code pour que les vérifs avec mes variables primaires non numériques se fassent correctement.
On notera que la première liste déroulante se crée sans problème, mais la deuxième reste vide.
J'ai essayé de changer les mysql_fetch_row en mysql_fetch_array mais cela n'a rien arrangé...
Merci d'avance pour l'aide apportée et encore félicitations pour le programme!
Neosqual
cs_Irukandji
Messages postés1Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention20 avril 2005 20 avril 2005 à 17:21
Bonjour;
Tout d'abord, Merci beaucoup à Frop01 pour son script...C'était parfait pour ce que j'avais à faire.
Ensuite, pour ce qui est de l'affichage du résultat...j'avais le même problème que Julik...car je voulais récupérer la désignation du champ sélectionné pour l'afficher dans une page de résultat.
Au cas , voilà un moyen simple et efficace (qui marche ...pour le moment ;-)):
Dans la page de résultat, insérez 2 requêtes SQL (code ci-dessous) en haut de la page pour récupérer les champs "designation" correspondants aux $id_cat et $id_scat sélectionnés.
--------------------------------------------------------------------
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="essai";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select designation from categorie where (id_cat = '".$cat."')";
$result= mysql_query ($rq) or die ("Select impossible");
$data = mysql_fetch_assoc($result);
$designation_cat=$data ['designation'];
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select designation from sous_categorie where (id_scat = '".$souscat."')";
$result= mysql_query ($rq) or die ("Select impossible");
$data = mysql_fetch_assoc($result);
$designation_scat=$data ['designation'];
?>
----------------------------------------------------------------------
A noter: pour l'affichage, les variables sont alors:
$designation_cat
et
$designation_scat
A+
Tchenouleur
Messages postés10Date d'inscriptionmercredi 5 mai 2004StatutMembreDernière intervention18 janvier 2008 18 janv. 2005 à 11:33
Bonjour,
Je cherchais un moyen de remplir des combo sans recharger la page et je suis tombé sur ce post que je viens d'implémenter dans mon code. Il a l'air très bien fait mais je ne connais rien en php vu que ça fait une semaine que j'ai commencé. Ma liste s'affiche bien dans le premier combo mais dans le second il me met sélection impossible. J'aimerais savoir si vous pouviez m'aider à réaliser mon code. Je vous l'affiche :
<?php include("connexion.php");?>
<html>
<head>
<title>Combo</title>
<script>
List = new Array();
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catégorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="Combo.php">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
// Séléction de tous les enregistrements de la table Section
$rq="Select * from section order by Sec_Libelle;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Classe
$rq="Select * from classe order Cla_Libelle;";
$result= mysql_query ($rq) or die ("Selection impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 12 janv. 2005 à 16:02
Salut,
pour lancer une requete dynamiquent sans recharger la page , il faudrait charger au début toutes les données dans un tableau car en javascript, on ne peut pas utiliser le php/mysql.
il te faut recharger la page avec les nouvelles données si la table contient beaucoup de données.
@+
Florianter
Messages postés5Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention11 janvier 2005 11 janv. 2005 à 21:44
Bonjour,
J'aimerais récupérer la variable "catégorie" selectionnée dans la première liste pour ensuite afficher une deuxieme liste en me connectant à une table sql qui change selon la variable.
C''est à dire :que ma connection s'effectuerait comme ça :
$rq="Select * from sous_categorie_$variable order by designation;";
Je ne sais pas comment faire... Qqn peut m'aider?
Merci d'avance
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 8 janv. 2005 à 21:46
Salut,
Merci mais c'est aps exactement ce que je cherche à faire.
En fait, je veux éditer une entrée déjà existante et il m'arrive ce qui est décrit dans mon dernier post...
Merci quand même
Julik
cs_sory1
Messages postés9Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention 8 janvier 2005 8 janv. 2005 à 21:36
Salut tout le monde
Je reprends la discussion un peu tard donc peut etre que j'ai pas tout compris par rapport à ce que tu veux faire Julik, mais, moi pour remedier au fait qu' au 1er chargement les tables s'affichent pas j'ai mis comme valeurs par defaut "Veuillez choisir une catégorie " dans la liste des categories et " Veuillez choisir une sous-catégorie " ds celle des souscat.
La solution de facilité :-)) !
je sais pas si tu as déjà pensé à ça ?
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 8 janv. 2005 à 20:32
Salut,
MErci pour ta réponse. MAis en fait c'est toujours la même technique qu'on applique, c'est-à-dire ajouter "Selected" dans le code lorsque c'est la bonne valeur de sous catégorie.
Or cette technique ne marche qu'à moitié...
En effet, quand je charge la page. La liste des sous catégories reste blanche... Alors que j'aimerais que la sous-catégorie apparaisse déjà...
Il faut que je change la liste des catégories et là en remettant la bonne catégorie (j'enlève la bonne, je met une autre, je remet la bonne), la sous catégorie se met directement sur la valeur enregistrée... Mais seulement après avoir fait ue manipulation de la liste déroulante catégorie...
C'est un problème qui me semble bizarre. Le code m'apparait en effet comme bon...
Une idée?
Cordialement
Julien
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 6 janv. 2005 à 12:46
en fait j'ai fini la dinde :)
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 6 janv. 2005 à 12:31
Salut
Mes meilleurs voeux pour 2005 ;)
bon il faut rajouter un champs qui se nomme "defaut" de type Tinyint (1)
ensuite mettre la valeur à 1 dans les enregistrements que tu veux que ca se soit par défaut
ex :
*****************************************
CREATE TABLE `sous_categorie` (
`id_scat` int(5) NOT NULL auto_increment,
`idcat` int(5) NOT NULL default '0',
`designation` varchar(50) NOT NULL default '',
`comment` varchar(255) NOT NULL default '',
`defaut` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id_scat`),
UNIQUE KEY `designation` (`designation`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;
#
# Contenu de la table `sous_categorie`
#
INSERT INTO `sous_categorie` VALUES (5, 1, 'Php & Mysql', 'Forums, Tutorials, Codes Sources ..', 0);
INSERT INTO `sous_categorie` VALUES (4, 3, 'Visual Basic', 'VB, VB.NET, Crystal Report, Access, SQL SERVER ..', 0);
INSERT INTO `sous_categorie` VALUES (6, 1, 'Javascript', 'Tutorials pour javascript, Forums ...', 0);
INSERT INTO `sous_categorie` VALUES (2, 1, 'Gifs animés, Icônes', 'Téléchargement gifs animés , clipart, Icones', 1);
INSERT INTO `sous_categorie` VALUES (1, 1, 'Templates', 'Sites de téléchargement de modèles de site web', 0);
INSERT INTO `sous_categorie` VALUES (3, 2, 'Pilotes', 'Drivers, pilotes, carte graphiques', 1);
INSERT INTO `sous_categorie` VALUES (7, 2, 'Freeware, sharware', 'Freeware, sharware', 0);
INSERT INTO `sous_categorie` VALUES (8, 3, 'SQL SERVER', 'Tutorials forum SQL SERVER', 1);
*************************************
ensuite
en rajouter cette valeur au tableau list
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>list[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[4]).");</script>";
$i=$i+1; // Incrémentation de $i
}
ensuite dans le remplissage :
if (list[i][1]==valeur)
{
if (list[i][3]==1)
{ ValeurSS="SELECTED";
}
else{
ValeurSS="";
}
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option "+ ValeurSS + " value="+list[i][0]+">"+list[i][2]+"</option>";
}
}
Voila le code complet :
"********************************
<html>
<head>
<title>Créer par Frop01 (Membre du Club CodeS-Source.com)</title>
<script>
list = new Array();
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<list.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (list[i][1]==valeur)
{
if (list[i][3]==1)
{ ValeurSS="SELECTED";
}
else{
ValeurSS="";
}
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option "+ ValeurSS + " value="+list[i][0]+">"+list[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="Ajout6.php3">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="combo";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from sous_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>list[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[4]).");</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
'*********************
et voila ;)
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 5 janv. 2005 à 19:32
Salut,
Bonne année et tout et tout.
Pour ce qui est de l'utilisation du boolean, j'en suis au point mort.
Tu pourrais éclairer ma lanterne?
Cordialement
Julien
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 25 déc. 2004 à 18:17
Salut,
ESt-ce que tu pourrais venir à mon secours pour ce foutu boolean? Bien sûr quand tu auras fini la dinde... ;o)
MErci
Joyeuses Fêtes
JUlien
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 14 déc. 2004 à 23:30
Salut,
Désolé pour le mauvais code.
Alors j'ai donc créé un champ "defaut" dans la table sous_catégorie. Avec pour valeur par défaut 1.
Ainsi toutes les entrées ont pour champ "defaut" 1.
Dans mon code pour éditer les valeurs d'une entrée, j'ai mis:
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[3]).");</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>valeurenr='$k';</script>"; //k contient la désignation de la ss catégorie voulue (c'est sûr et testé)
echo "<script>Remplir ($j); </script>";
Et dans la fonction:
<script>
List = new Array();
valeurenr="";
function Remplir(valeur)
{
var sel="";
sel ="<select size='1' name='sscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr && List[i][3]==1 ) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
Au final, j'obtiens la même chose qu'à ma dernière étape, à savoir: quand je charge la page, la liste des sous-catégories reste blanche... Alors que j'aimerais que la sous-catégorie apparaisse déjà...
Il faut que je change la liste des catégories et là en remettant la bonne correspondance (j'enlève la bonne, je met une autre, je remet la bonne), la sous-catégorie se met directement sur la valeur enregistrée...
En fait, je n'ai pas compris comment se servir de ce boolean. A quoi il sert, comment on change sa valeur et quand...
Ca fait trop... ;o)
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 14 déc. 2004 à 22:40
Salut,
Pardon si j'ai pas pu répondre :)
1- BOOLEAN a été ajouté en MySQL version 4.1.0,
mais on peut utiliser TINYINT(1) comme synonyme de BOOLEAN . Il accepte les valeurs entières dans la même plage que TINYINT ainsi que la valeur NULL. TRUE et FALSE peuvent être utilisés comme alias de 1 et 0.
2-
-- Dans le code que tu as mis tu n'as pas mis le teste pour List[i][3]=1 ??
-- pourquoi faire avec valeurenr = "10"; ???
Si ca marche pas remets le code que tu as fais ici
@+
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 14 déc. 2004 à 17:41
SAlut,
Je me rappelle à ton bon souvenir... ;o)
Si tu pouvais éclairer ma lanterne...
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 9 déc. 2004 à 19:39
Salut,
Merci pour ta réponse. MAis j'ai plusieurs soucis.
1. JE ne trouve pas de type bollean dans phpmyadmin... Du coup je le remplace par un char de 1. Déjà là ça doit plus le faire...
2. JE ne suis pas sûr d'avoir fait ce que tu voulais.
Ce que j'ai fait:
Dans le code:
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[3]).");</script>";
Dans la fonction: j'ai simplement ajouté le test List[i][3]=1 pour l'attribution de SELECTED :
<script>
List = new Array();
function Remplir(valeur,valeurenr){
var sel="";
sel ="<select size='1' name='sscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
valeurenr = "10";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
Est-ce ce que tu pensais? Si tu peux être un peu plus précis.
Merci Frop01! Tu n'aimes pas qu'on t'appelle grenouille? ;o)
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 9 déc. 2004 à 16:45
Salut julik ,
La solution réside dans l'ajout d'un autre champ boolean nommé "Defaut" dans la table Sous catégorie.
lorsque tu charges les données dans le tableau List, le dernier paramètres est 0 ou 1
0 = rien ; 1= valeur par défaut (séléctionné)
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1",0);
// ex : list[2]=new array (2,1,"Sous-catégorie 2",1);
ensuite dans Remplir tu testes si List[i][3]=1 then SELECTED
@+
NB : mon pseudo c'est FROP et non pas FROG ;)
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 9 déc. 2004 à 11:48
Salut,
CEla provient probablement du fait que tu tentes également de faire une 3ème liste de sous-sous catégories.
En effet tu rappelles une 2ème fois la fonction remplir qui est faite pour scat...
Essaye de faire le code sans la sous-sous catégorie... CA devarit marcher.
Après rajoute la ss-ss catégorie qui appellera une fonction remplir2() que tu adapteras à ss-ss catégorie.
Du genre:
<script>
list = new array();
function Remplir2(valeur){
var sel="";
sel ="<select size='1' name='soussouscat'>";
// Parcourir le tableau
for (var i=0;i<list.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (list[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+list[i][0]+">"+list[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV sscat par la nouvelle list à partir du variable SEL
document.getElementById('sscat').innerHTML=sel;
}
</script>
Voilo... A tenter...
Bonne chance.
Sinon Frog01, des idées pour mon dernier soucis?
Merci
Julik
trek92
Messages postés2Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention 9 décembre 2004 9 déc. 2004 à 10:42
Salut julik et merci pour ta reponse,
ca y est jai reussi a afiicher les categorie mais maintean jai un probleme pour afficher mes sous categories, cela m' affihe nien quelque chose ds mes sous categorie mais seulement la variable 0 ? saurai tu maider?
<script>
List = new Array();
valeurenr="";
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
<form method="POST" action="resultat.php">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="essai";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from sous_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
<select size="1" name="soussouscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from sous_sous_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-sous catégorie 1");
// ex : list[2]=new array (2,1,"Sous-sous catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-sous catégories en utilisant la valeur j
?>
</form></center>
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 9 déc. 2004 à 00:27
Salut trek92,
J'ai regardé vite fait ton code.
Je sais pas si c'est une erreur de copie, mais
de la 2ème ligne n'est pas à la bonne place...
D'autre part, respectes-tu bien la casse de tes tables dans tes requêtes?
Suis nouveau programmeur, désolé si c'est voulu...
Bonne chance..
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 8 déc. 2004 à 15:58
Bonjour,
Merci encore.
MAis le code ne marche qu'à moitié...
En effet, quand je charge la page. La liste des sous catégories reste blanche... Alors que j'aimerais que la sous-catégorie apparaisse déjà...
Il faut que je change la liste des catégories et là en remettant la bonne correspondance (j'enlève la bonne, je met une autre, je remet la bonne), la sous catégorie se met directement sur la valeur enregistrée...
C'est un brin embêtant...
Une autre idée?
Merci
Julien, qui commence à être désolé d'abuser ainsi de votre temps...
trek92
Messages postés2Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention 9 décembre 2004 8 déc. 2004 à 14:06
Salut, j' aimerai bien un peu d' aide, ma connection se fait bien mais je narive pa a afficher mes categories dans la liste deroulantes
mon code :
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="produits";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select NOM from fabricants order by NOM;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select CATEGORIE from categories order by CATEGORIE;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
<select size="1" name="soussouscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select VITESSE from vitesseppm order by VITESSE;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-sous catégorie 1");
// ex : list[2]=new array (2,1,"Sous-sous catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 8 déc. 2004 à 13:42
Supprimer la ligne inutile
valeurenr= valeurenr;
@+
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 8 déc. 2004 à 13:39
Salut ,
C'est tout a fait normal que ca marche pas parsque on appelle la fonction remplir une seule fois dans le programme et ensuite la valeur $k sera perdu.
la solution est de déclarée une variable valeurenr comme on a fait pour le tableau List:
<script>
List = new Array();
valeurenr="";
function Remplir(valeur){
valeurenr= valeurenr;
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
ensuite dans le code on affecte la valeur directement à valeurenr.
echo "<script>Remplir ($j); </script>"; echo "<script>valeurenr='le mot que tu ...';</script>";
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 8 déc. 2004 à 00:14
Bonsoir,
Merci pour vote aide.
CA ne marche pas vraiment... En fait je soupçonne qu'il y ait un problème dans le passage de la variable "valeurenr"...
Le fais-je de la bonne manière?
Voilà mon code: (sachant que $k contient bien la désignation de la sous catégorie)
echo "<script>Remplir ($j,$k); </script>";
appelle le code suivant:
<script>
List = new Array();
function Remplir(valeur,valeurenr){
var sel="";
sel ="<select size='1' name='sscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 7 déc. 2004 à 21:26
Salut,
Pardon si j'ai pas suivi votre discussion dès le début.
J'èspère que j'ai compris ;)
Voici comment procéder pour la sélection par défaut dans la deuxième liste :
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]=="Valeur que tu veux que ca soit séléctionné") { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
Bien sur vous pouvez aussi tester sur la valeur de l'index du tableau et non pas le contenu du texte.
@+
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 7 déc. 2004 à 12:11
J'ai mon projet à rendre sous peu. Donc si vous pouviez m'aider, ça m'arrangerait beaucoup.
Merci
Julien
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 6 déc. 2004 à 11:55
Bonjour,
Merci pour cette réponse.
MAis en fait ça j'avais réussi à le faire...
Mon problème se situe à la 2ème liste des sous-catégories. Là je cale pour introduire un "selected" du fait du javascript qui s'intercale... Je pense qu'il faudrait inclure cela dans le code javascript mais j'ai fait bon nombre de tentatives du style :
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][0];
if (valeurenr List[i][2]) {sel sel + " SELECTED";}
sel = sel + ">"+List[i][2]+"</option>";
}
veleurenr est la valeur de la variable que je veux sélectionner...
MAis sans succès.
Si vous avez une idée...
Merci
Julien
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009 6 déc. 2004 à 11:40
en fait voici le code exact:
$selected = "";
if ($dt[0]="cellequejeveux selectionner") $selected="selected";
echo "\t\t<option $selected value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009 6 déc. 2004 à 11:37
1ere question, il semble que tu te sois gouorré:
$sscat = $_POST['sscat'] au lieu de scat.
2eme question, si tu veux q'un champ soit selectionné tu peux faire:
tu dois avoir un while (patati patata)
echo <option name ="nom" value="$valeur">$valeur</option>
et tu remplace ca par:
while (patati patata)
$selected = "";
if ($valeur="celle que je veux selectionner") selected="selected"
echo <option $selected name="nom" value="$valeur">$valeur</option>
Voila, le principe est qu'une option de ton <select> est selectionnée si tu rajoute <option selected ...></option>
Et en fait, tu fais juste un test if pour vérifier que c'est bien cette option que tu veux selectionner. Si c'est celle la, tu rajoute 'selected', sinon, tu rajoute '', c'est a dire rien.
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 5 déc. 2004 à 20:23
Bonsoir,
J'aimerais qu'une certaine valeur (contenue dans une base mysql) soit déjà selectionnée dans la 2ème liste (celle des sous-catégories) lorsque j'ouvre la page.
J'ai déjà réussi à le faire pour la 1ère liste des catégories. Mais pas moyen pour la seconde...
Sauriez-vous comment faire?
Merci
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 8 nov. 2004 à 19:45
Bonsoir,
J'ai un autre soucis concernant ce code...
En effet, j'aimerais récupérer les valeurs choisies (cat et sscat) dans les listes déruoulantes.
Je procède la façon suivante:
Dans mon fichier de reception resultats.php4, je mets ceci:
$cat=$_POST['cat'];
$sscat=$_POST['scat'];
Et je reçois la valeur du champ 'id_cat' correspondant au choix pour $cat et rien du tout pour $sscat.
Pourrais-tu m'aider pour récuperer le champ 'designation' des 2 variables?
Merci
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 5 nov. 2004 à 12:58
Bonne continuation ;)
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 5 nov. 2004 à 12:08
En fait, je viens de le faire marcher!
J'ai simplement changé le nom de sscat dans <select size="1" name="sscat">...
Un peu logique en somme...
MErci encore
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 5 nov. 2004 à 11:52
Salut,
Merci pour cette réponse rapide.
J'ai appliqué ce que tu m'as dit simplement en copiant/collant le script et en changeant LIst et remplir en LIst2 et remplir2.
Malheuresement, je n'obtiens aucunes valeurs dans les listes de sous-catégories...
Je n'ai pas bien compris ce que tu voulais dire par "et charger les données dans List2 à partir de la base", cela vient peut-être de là...?
MErci pour ton aide
Julien
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 5 nov. 2004 à 02:45
Salut,
Pour faire la meme chose deux fois, il te faux un autre tableau :
comme ---> list = new array();
----> list2 = new array();
ensuite faire une autre procédure Remplir2 en changeant List par List2
et charger les données dans List2 à partir de la base.
Si tu n'as pas compris ce que je veux dire, reposte un autre message pour que je reformuler ma reponse.
Bonne continuation et merci pour l'interet que tu portes à l'égard de ce code source.
cs_julik
Messages postés22Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention14 décembre 2004 4 nov. 2004 à 23:30
Bonjour,
MErci pour ce code qui marche très bien.
Cependant j'ai un soucis lorsque je veux appliquer 2 fois ce code sur la même page pour les mêmes valeurs. Je n'arrive pas avoir de bons résultats du fait que je ne comprends pas totalement le code de départ.
J'ai essayé de multiples changements de noms de variables sans très bons résultats. J'arrive à obtenir une première sous catégorie, mais l'autre imossible.
Pourrais-tu éclairer ma lanterne?
Merci
Julien
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 11 sept. 2004 à 22:50
Voila c'est fait .
Il faut appeler la procédure Remplir après le chargement des données dans l'array List.
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009 11 sept. 2004 à 21:24
Il me semble que c'est possible. Je n'ai pas encore essayé, mais il suffit normalement de placer la fonction Remplir(dt[0]) juste apres le <select> des catégories
ce qui donne:
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
}
?>
</select>
<script>Remplir(cat.value)</script>
Voila!
cs_sory1
Messages postés9Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention 8 janvier 2005 9 sept. 2004 à 21:08
n'est pas ? je trouve aussi que c'est un joli code ! meme si la valeur initiale ne se charge pas au premier chargement de la page ...
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009 9 sept. 2004 à 18:43
Ok maintenan ca fonctionne. j'avais deja modifié l'erreur de majuscule sur list, mais je n'avais pas vu celle de Array. Merci encore. C'est une tres bonne source, tres utile. J'utilise ces sous liste dans 4 de mes sites et tous rechargeaient la page. Plus maintenant!!!!
Merci
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 7 sept. 2004 à 13:12
Alors,
L'erreur vient du non respect de la case majuscule.
Remplacer dans votre code :
array par Array
list par List
et normalement, ca doit marcher.
Merci zoukozouko de m'en avoir informé.
NB : pourtant le code que j'ai copier ici est juste mais l'affichage a changé.
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 7 sept. 2004 à 12:21
21 juin 2011 à 13:46
Je viens de pas mal cafouiller pour adapter cette super source à mon environnement !
Cependant, je vous le livre si ça peut aider.
Je suis en Oracle en ADODB et je n'ai qu'une table "normale" avec des dates (21/07/2011) et des heures entières (8 ou 9) et une case de rendez-vous (vide ou non)
Je veux afficher les dates uniques en 'cat' et les heures dispo de cette date en 'scat'.
Voilà le résultat qui tourne correctement, merci !!
<html>
<head>
<title>Créer par Frop01 (Membre du Club CodeS-Source.com)</title>
<script>
List = new Array();
function Remplir(valeur)
{
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie Date) correspond à la Date de la catégorie ex : List[2]=new Array ('04/07/2011',9);
if (List[i][0]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][1]+">"+List[i][1]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="rdvd_date.php">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
session_start();
require ('adodb.inc.php');
include ("fonctions/rdvd_fonc.php");
include ("config/rdvd_config.php");
$adocon = &ADONewConnection("oci8");
$adocon->PConnect($DB_HOST,$DB_USER,$DB_PASS);
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$today=date("d/m/Y");
$sql_getdates_libres = "select distinct DAT_RDV from RDVD_RDV where DAT_RDV>TO_DATE('$today','DD/MM/YYYY') and COD_CAN is null order by DAT_RDV";
//echo "
$sql_getdates_libres";
$rs0 = $adocon->Execute($sql_getdates_libres);
$i=0;
while (!$rs0->EOF)
{
$DAT_RDV = format_datez_rdv($rs0->fields["DAT_RDV"]);
echo "\t\t<option value=$DAT_RDV>$DAT_RDV</option>";
if ($i==0) { $j="'$DAT_RDV'"; $i=1; } // garder la valeur du premier enregistrement
$rs0->MoveNext();
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$sql_getheures_libres = "select DAT_RDV, HEU_RDV from RDVD_RDV where DAT_RDV>TO_DATE('$today','DD/MM/YYYY') and COD_CAN is null group by DAT_RDV, HEU_RDV";
//echo "
$sql_getheures_libres";
$rs1 = $adocon->Execute($sql_getheures_libres); // or die ("Select impossible");
$i=0;
while (!$rs1->EOF)
{
$HEU_RDV = $rs1->fields["HEU_RDV"];
$DAT_RDV = format_datez_rdv($rs1->fields["DAT_RDV"]);
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array ('04/07/2011',8);
// ex : List[2]=new Array ('04/07/2011',9);
echo "<script>List[$i] = new Array('$DAT_RDV',$HEU_RDV);</script>";
$i++;
$rs1->MoveNext();
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
24 mars 2011 à 11:50
je viens d'utiliser votre code afin d'afficher les communes relative aux wilaya cepensdant jutilise une base de donnees sql server au lieu de my sql, la liste derouante de wilaya fonctionne cependant celle de commune( s'affiche vide et un message derreur saffiche avec, je ne trouve pas ou es le probleme jai repri le script ds head comme tel pourriez vous m'aider si vous avez une idee svp sachant que la partie connexion la bd s'effectue sans aucun pb
voici message derreur
Notice: Undefined offset: 1 in C:\wamp\www\\ECOF.php on line 258
Notice: Undefined offset: 2 in C:\wamp\www\ECOF.php on line 258
ligne 258: echo "<script>List[".$i."] = new Array(".($row[0]).",".($row[1]).",'".($row[2])."');</script>";
voici mon code
partie liste deroulante de wilaya
<select class="arrondi" name="cat" dir="ltr" OnChange="Remplir(cat.value)">
<option value="-1">- - - Choisissez une wilaya - - -</option>
<?php
$i=0;
$j=0;
$query=odbc_exec ($sqlconnect,"SELECT wilayalib FROM wilaya" );
while(odbc_fetch_into($query,$row))
{
echo "\t\t<option value=".($row[0]).">".($row[0])."</option>";
if ($i==0) { $j=$row[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
partie code et liste de commune
<select class="arrondi" maxlength="20" name="souscat" >
</select>
</td>
<?php
// Séléction de les enregistrements de la table commune
$query=odbc_exec ($sqlconnect,"SELECT comlib FROM commune " );
while(odbc_fetch_into($query,$row))
// $i = initialise la variable i
$i=0;
{
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array (1,1,"Sous-catégorie 1");
// ex : List[2]=new Array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($row[0]).",".($row[1]).",'".($row[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des communes en utilisant la valeur j
?>
ma table wilaya contient comme champ: wilayalib,id_wilaya
table commune continent: comlib,id_com,id_wilaya
merci bcq
1 avril 2010 à 14:11
Dans le cadre de la préparation de mon projet de fin d'étude, j'ai une tâche pareille avec celle de ton code des deux listes déroulantes liées alimentées de la base de données MySql.
j'ai essayé ton code avec ta base de données et ça marche très bien mais en l'appliquant sur la mienne, il y aura un affichage du contenu de la première liste déroulante mais la deuxième liste reste vide si c'est possible peux-je vous envoyer mon code et ma base de données pour m'orienter vers la bonne solution. Franchement, j'ai essayé tant de fois de comprendre le principe du fonctionnement du code JavaScript avec celle de l'affichage de la deuxième liste déroulante sans cesse.
Dans l'attente de votre réponse, veuillez agréer Monsieur, mes salutations les plus distinguées.
Amicalement
27 nov. 2009 à 11:49
Je cherche a utiliser ce code, qui correspond tout à fait à ce dont j'ai besoin.
Ma seconde liste déroulante ne contient rien.
Je charge correctement ma première liste (en affichage code source j'ai entre autre :
<form method="POST" action="Ajout6.php3">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<option value='23001'>AHUN</option> etc etc
A noter que j'ai mis entre ' ' l'option value (code postal), comme dans la tables, mais sans les ' ' c'est pareil.
Je charge correctement mon tableau (toujours en affichage code source) :
<script>List[0] = new Array(AINC,LE CHAMP DE LA VILLE,'03003');</script><script>List[1] = new Array(AINR,LES RECOLLETS,'03003') etc etc
Je n'ai rien modifié au script java, sauf le test puisque je veux tester le code postal :
if (List[i][2]==valeur)
Merci si quelqu'un a une idée
Saille désemparée
1 oct. 2009 à 07:58
Juste merci pour la ressource, c'est simple et très efficace.
10 déc. 2008 à 10:17
22 avril 2008 à 11:01
MDR... coment passer 2 jours sans comprendre lol :)
22 avril 2008 à 10:10
J'ai essayer le script via ajax.... je n'arrive pas a le faire marcher...
Mon index.php :
<head>
...
<script type="text/javascript" language="javascript">
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
*/
function sendData(param, page)
{
if(document.all)
{
//Internet Explorer
var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
}//fin if
else
{
//Mozilla
var XhrObj = new XMLHttpRequest();
}//fin else
//définition de l'endroit d'affichage:
var content = document.getElementById("contenu");
XhrObj.open("POST", page);
//Ok pour la page cible
XhrObj.onreadystatechange = function()
{if (XhrObj.readyState 4 && XhrObj.status 200)
content.innerHTML = XhrObj.responseText ;
}
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
}//fin fonction SendData
</script>
...
</head
...
<select name="ListRegions" OnChange="sendData('id='+this.value,'resultsPopulateDatas.php')" onKeyUp="sendData('id='+this.value,'resultsPopulateDatas.php')">
<?php
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$rq="SELECT * FROM ListRegions ORDER BY regionsName ASC";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; }
}
?>
</select>
...
<?php
echo "<select name="city">";
$rq="SELECT * FROM ListCities WHERE id_regionale=".$j." ORDER BY citiesName ASC";
$result= mysql_query ($rq) or die ("Select impossible");
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option>
";
}
echo "</select>";
?>
...
resultsPopulateDatas.php :
<?php
// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) ){
$rq="SELECT * FROM ListCities WHERE id_regionale=".$_POST['id']." ORDER BY citiesName ASC";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0)
{
echo "<select size='1' name='city'>";
}
else
{
echo utf8_encode("Pas de sous catégories disponible");
}
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option>
";
}
echo "</select>";
}
?>
HELP ! THANKS :)
PS : la connexion database est défini ailleur.
J'arrive a afficher le premier select mais lors de la selection s'un des elements sa me retourne "select impossible"
12 mars 2007 à 16:07
C'est tout a fait ce ke je cherchais (mais pas en javascript)
Je te remercie beaucoup, ca va me faire gagner du temps
5 févr. 2007 à 18:08
13 août 2006 à 15:55
Je voulai avoir un renseignement car en faite lorsque je verifi si les listes contienne quelquechose, ma page me di qu'il ne sont pas rempli ?? est-ce normal ou pas ?
Je me suis donc dit que cela venait de mysql_fetch_rows car il propose que deux $rows pour les categorie et trois pour les sous_categorie.
J'ai donc pensé à mysql_fetch_array qui me fera une liste entiére de tout !! mais je ne suis pas encore sure que le problème vienne de mysql_fetch_rows !!
Merci d'avance
7 mars 2006 à 10:53
Pour ajouter mon petit grain de sel, pour ceux comme moi qui désirait afficher les différents champs du formulaire sur la meme ligne, il suffit de remplacer la balise DIV par une balise SPAN :)
voila !
cécile
3 mars 2006 à 14:56
8 févr. 2006 à 10:43
15 oct. 2005 à 23:35
Résolu en utilisant la méthode AJAX qui est vraiment terrible !
15 oct. 2005 à 15:00
Petite question complémentaire si je puis me permettre.
Comment conserver la valeur sélectionnée de souscat avec un rechargement de page.
Je m'explique : post du formulaire, vérif des champs sur le serveur, un champ n'est pas validé, réaffichage du form avec les valeurs saisies et un message d'erreur.
Pour cat ça baigne avec !strcmp
if (!(strcmp($dt['0'], $_POST['cat']))) {echo 'selected="selected"'; $j=$dt[0]; $i=1;}
mais pour le second moi y'en a pas bien du tout parler le javanais... Euh le javascript sorry et je ne vois pas trop comment causer au serveur avec lui.
Merci d'avance.
14 oct. 2005 à 17:43
Clair, précis et efficace... 10/10
Merci.
4 oct. 2005 à 18:24
sinon pour afficher le résultat d'une rêquete sur plusieurs page, il existe plusieurs sources par ici.
AFFICHAGE DE RÉSULTATS MYSQL SUR PLUSIEURS PAGES :
http://www.phpcs.com/code.aspx?id=24689
AFFICHAGE DYNAMIQUE DES RESULTATS D'UNE REQUETE MYSQL SUR PLUSIEURS PAGES :
http://www.phpcs.com/code.aspx?id=27578
Bon courage ;)
NB ! toujours regarder les commentaires du code pour mieux comprendre et voir les critiques.
4 oct. 2005 à 16:18
puisque j'ai changé la valeur envoyée donc celle recupérer dans la requete de selection des sous categories doit changer puisque il s'agit de tri selon les id
merci beaucoup pour ton aide
et puisque t'es trop fort en php peut tu m'aider sur le probleme de pagination des resultats d'une requete je veux une source bien commentée si c'est possible
et merci encore une fois
4 oct. 2005 à 16:04
PS : Prière de bien vouloir envoyer les codes sources sur le forum de phpcs et de faire
le lien vers le message du forum içi.
car ca commence sérieusement à être le désordre par ici.
Merci de votre compréhension.
4 oct. 2005 à 14:59
comment faire pour ke value de categorie et sous categorie soit designation
4 oct. 2005 à 12:59
dans les deux cas, le formulaire envoi la valeur contenue dans <option value=".($dt[0])."
il suffit de modifier à ta guise le contenu de value
ex: pour renvoyer la désignation pour les catégories : (n'oublie pas les apostrophes pour chaines de caractères)
<option value='".($dt[1])."'>"
pour les sous-catégories : (dans la partie javascript)
sel= sel + "<option value="+List[i][2]+">"+List[i][2]+"</option>";
Bonne continuation !!
4 oct. 2005 à 12:29
j'ai essayé de changer le List[i][0] par List[i][2] pour ce code et
$dt[2] pour l'autre et ça pas marché pour les deux
pourrez vous m'aider svp
30 sept. 2005 à 14:18
salut malalam,
non je parle de [url=""][url] qui ne marche pas dans les commentaires de phpcs ;)
Merci pour ton code :) @+
30 sept. 2005 à 13:08
Tu mets des liens vers MON code sans me le dire ?????
Je plaisante hein lol. ;-) Merci de l'attention.
heu...sinon, qu'est-ce qui ne marche pas? Sur la page en lien, ça marche très bien ?
29 sept. 2005 à 16:12
http://perso.wareteam.com/comment_demander_des_informations_au_serveur_sans_recharger_la_page-.php
29 sept. 2005 à 16:05
Comme je l'ai dit plus haut :
"cette méthode n'est pas recommandé pour un grand nombre de données."
Dans le cas où le nombre de données est très important et que le fait d'utiliser un array bouffe trop de resource et de mémoire du serveur! il est recommendé d'utiliser la technologie AJAX pour interroger le serveur avec javascript pour tirer les informations voulus sans recharger la page.
Voici le même exemple que celui-ci mais utilisant AJAX :
["http://perso.wareteam.com/comment_demander_des_informations_au_serveur_sans_recharger_la_page-.php" AFFICHER UNE LISTE DÉROULANTE EN FONCTION D'UNE AUTRE LISTE SANS RECHARGER LA PAGE OU PASSER L'INFORMATION PAR L'URL EN UTILISANT LA TECHNOLOGIE AJAX.]
PS : Merci à GRenard et malalam.
16 sept. 2005 à 23:01
je pense que ca vient du fait que tu as enlever le paramètre "valeur" pour la fonction.
function Remplir(valeur){
@+
15 sept. 2005 à 18:40
Voici mon code :
<html>
<head>
<title>Créer par Frop01 (Membre du Club CodeS-Source.com)</title>
<script>
List = new Array();
function Remplir(){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catégorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="Ajout6.php3">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="root";
$database="MyLibrary";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from table_categorie order by nomCategorie;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from table_sous_categorie order by nomSousCat;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array (1,1,"Sous-catégorie 1");
// ex : List[2]=new Array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
8 juil. 2005 à 08:45
Et bien merci pour ta réponse, même tardive, elle reste bien sûr bienvenue:)
Je vais de ce pas essayer cette solution.
@+
7 juil. 2005 à 15:21
Selon le message de NeoSqual :
"j'ai pour clés primaires des éléments texte et non pas des éléments numériques comme toi(1,2,3...)"
Suppossons que la clé primaire de Catégorie est varchar(1) et le idcat des sous-cartégorie est varchar(1)
ex SQL :
-----------------------------------------------------
CREATE TABLE `categorie` (
`id_cat` char(1) NOT NULL default '',
`designation` varchar(50) NOT NULL default '',
`comment` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_cat`),
UNIQUE KEY `designation` (`designation`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `categorie`
--
INSERT INTO `categorie` VALUES ('A', 'Ressources Webmaster', 'Site dédié aux webmasters. Tutorials, Exemples, Codes Sources, ressources, images, Cliparts, Gifs, Forums ...');
INSERT INTO `categorie` VALUES ('B', 'Downloads', 'Téléchargement freeware, shareware...');
INSERT INTO `categorie` VALUES ('C', 'Programmation', 'Developpement programmation');
-- --------------------------------------------------------
--
-- Structure de la table `sous_categorie`
--
CREATE TABLE `sous_categorie` (
`id_scat` int(5) NOT NULL auto_increment,
`idcat` char(1) NOT NULL default '0',
`designation` varchar(50) NOT NULL default '',
`comment` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_scat`),
UNIQUE KEY `designation` (`designation`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Contenu de la table `sous_categorie`
--
INSERT INTO `sous_categorie` VALUES (5, 'A', 'Php & Mysql', 'Forums, Tutorials, Codes Sources ..');
INSERT INTO `sous_categorie` VALUES (4, 'C', 'Visual Basic', 'VB, VB.NET, Crystal Report, Access, SQL SERVER ..');
INSERT INTO `sous_categorie` VALUES (6, 'A', 'Javascript', 'Tutorials pour javascript, Forums ...');
INSERT INTO `sous_categorie` VALUES (2, 'A', 'Gifs animés, Icônes', 'Téléchargement gifs animés , clipart, Icones');
INSERT INTO `sous_categorie` VALUES (1, 'A', 'Templates', 'Sites de téléchargement de modèles de site web');
INSERT INTO `sous_categorie` VALUES (3, 'B', 'Pilotes', 'Drivers, pilotes, carte graphiques');
INSERT INTO `sous_categorie` VALUES (7, 'B', 'Freeware, sharware', 'Freeware, sharware');
INSERT INTO `sous_categorie` VALUES (8, 'C', 'SQL SERVER', 'Tutorials forum SQL SERVER');
----------------------------------------------------------------
le code doit ressembler à ca :
-----------------------------------------------------------------
<html>
<head>
<title>Créer par Frop01 (Membre du Club CodeS-Source.com)</title>
<script>
List = new Array();
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value=""+List[i][0]+"">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="Ajout6.php3">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="essai";
$i=0; // variable de test
$j=""; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value="".($dt[0])."">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from sous_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array (1,1,"Sous-catégorie 1");
// ex : List[2]=new Array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] =new Array(".($dt[0]).",'".($dt[1])."','".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir('$j');</script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
-----------------------------------------------------------
Explication :
Dans le tableau List
on change de format du 2ème item de 1 à A et on doit mettre les quotes.
List[1]=new Array (1,1,"Sous-catégorie 1");
à
List[1]=new Array (1,"A","Sous-catégorie 1");
pareil pour les balises Option :
au lieu de :
<option value=1>truc</option>";
ca devient
<option value="A">truc</option>";
pareil pour le remplissage :
Remplir('$j'); au lieu de Remplir($j);
espérant que j'ai répondu à vos questions. N'hésitez pas à me demander d'autres précisions.
Si je ne répond pas tout de suite! c'est que j'ai énormément de boulot alors Merci de votre compréhension.
7 juil. 2005 à 14:08
Et bien zut, je n'ai pas trouvé la solution à ce problème!
Tant pis, je me résoud à chercher une autre solution.
@+
20 juin 2005 à 11:49
Et bien comme tout le monde je trouve cette source très utile!
Par contre, je rencontre le même problème que Neosqual... que je remercie pour son tuyau : j'avais pas vu que le problème pouvait venir d'identifiants de type caractères.
Je cherche un peu de mon côté et vous tient au courant le cas échéant.
@+
20 juin 2005 à 11:45
Et bien comme tout le monde je trouve cette source très utile!
Par contre, je rencontre le même problème que Neosqual... que je remercie pour son tuyau : j'avais pas vu que le problème pouvait venir d'identifiants de type caractères.
Je cherche un peu de mon côté et vous tient au courant le cas échéant.
@+
3 juin 2005 à 10:43
j'ai le même problème que toi et je voulais savoir si tu as trouvé une solution. Je suis en train de me prendre la tête
18 mai 2005 à 16:32
Franchement géniale ton code Frop01!!!
J'ai néammoins une petite question...je l'ai intégré à mes tables qui sont a peu près similaire aux tiennes. Seule différence : j'ai pour clés primaires des éléments texte et non pas des éléments numériques comme toi(1,2,3...)
Je voulais juste savoir ce qu'il faut changer dans le code pour que les vérifs avec mes variables primaires non numériques se fassent correctement.
On notera que la première liste déroulante se crée sans problème, mais la deuxième reste vide.
J'ai essayé de changer les mysql_fetch_row en mysql_fetch_array mais cela n'a rien arrangé...
Merci d'avance pour l'aide apportée et encore félicitations pour le programme!
Neosqual
20 avril 2005 à 17:21
Tout d'abord, Merci beaucoup à Frop01 pour son script...C'était parfait pour ce que j'avais à faire.
Ensuite, pour ce qui est de l'affichage du résultat...j'avais le même problème que Julik...car je voulais récupérer la désignation du champ sélectionné pour l'afficher dans une page de résultat.
Au cas , voilà un moyen simple et efficace (qui marche ...pour le moment ;-)):
Dans la page de résultat, insérez 2 requêtes SQL (code ci-dessous) en haut de la page pour récupérer les champs "designation" correspondants aux $id_cat et $id_scat sélectionnés.
--------------------------------------------------------------------
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="essai";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select designation from categorie where (id_cat = '".$cat."')";
$result= mysql_query ($rq) or die ("Select impossible");
$data = mysql_fetch_assoc($result);
$designation_cat=$data ['designation'];
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select designation from sous_categorie where (id_scat = '".$souscat."')";
$result= mysql_query ($rq) or die ("Select impossible");
$data = mysql_fetch_assoc($result);
$designation_scat=$data ['designation'];
?>
----------------------------------------------------------------------
A noter: pour l'affichage, les variables sont alors:
$designation_cat
et
$designation_scat
A+
18 janv. 2005 à 11:33
Je cherchais un moyen de remplir des combo sans recharger la page et je suis tombé sur ce post que je viens d'implémenter dans mon code. Il a l'air très bien fait mais je ne connais rien en php vu que ça fait une semaine que j'ai commencé. Ma liste s'affiche bien dans le premier combo mais dans le second il me met sélection impossible. J'aimerais savoir si vous pouviez m'aider à réaliser mon code. Je vous l'affiche :
<?php include("connexion.php");?>
<html>
<head>
<title>Combo</title>
<script>
List = new Array();
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catégorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="Combo.php">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
// Séléction de tous les enregistrements de la table Section
$rq="Select * from section order by Sec_Libelle;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Classe
$rq="Select * from classe order Cla_Libelle;";
$result= mysql_query ($rq) or die ("Selection impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
12 janv. 2005 à 16:02
pour lancer une requete dynamiquent sans recharger la page , il faudrait charger au début toutes les données dans un tableau car en javascript, on ne peut pas utiliser le php/mysql.
il te faut recharger la page avec les nouvelles données si la table contient beaucoup de données.
@+
11 janv. 2005 à 21:44
J'aimerais récupérer la variable "catégorie" selectionnée dans la première liste pour ensuite afficher une deuxieme liste en me connectant à une table sql qui change selon la variable.
C''est à dire :que ma connection s'effectuerait comme ça :
$rq="Select * from sous_categorie_$variable order by designation;";
Je ne sais pas comment faire... Qqn peut m'aider?
Merci d'avance
8 janv. 2005 à 21:46
Merci mais c'est aps exactement ce que je cherche à faire.
En fait, je veux éditer une entrée déjà existante et il m'arrive ce qui est décrit dans mon dernier post...
Merci quand même
Julik
8 janv. 2005 à 21:36
Je reprends la discussion un peu tard donc peut etre que j'ai pas tout compris par rapport à ce que tu veux faire Julik, mais, moi pour remedier au fait qu' au 1er chargement les tables s'affichent pas j'ai mis comme valeurs par defaut "Veuillez choisir une catégorie " dans la liste des categories et " Veuillez choisir une sous-catégorie " ds celle des souscat.
La solution de facilité :-)) !
je sais pas si tu as déjà pensé à ça ?
8 janv. 2005 à 20:32
MErci pour ta réponse. MAis en fait c'est toujours la même technique qu'on applique, c'est-à-dire ajouter "Selected" dans le code lorsque c'est la bonne valeur de sous catégorie.
Or cette technique ne marche qu'à moitié...
En effet, quand je charge la page. La liste des sous catégories reste blanche... Alors que j'aimerais que la sous-catégorie apparaisse déjà...
Il faut que je change la liste des catégories et là en remettant la bonne catégorie (j'enlève la bonne, je met une autre, je remet la bonne), la sous catégorie se met directement sur la valeur enregistrée... Mais seulement après avoir fait ue manipulation de la liste déroulante catégorie...
C'est un problème qui me semble bizarre. Le code m'apparait en effet comme bon...
Une idée?
Cordialement
Julien
6 janv. 2005 à 12:46
6 janv. 2005 à 12:31
Mes meilleurs voeux pour 2005 ;)
bon il faut rajouter un champs qui se nomme "defaut" de type Tinyint (1)
ensuite mettre la valeur à 1 dans les enregistrements que tu veux que ca se soit par défaut
ex :
*****************************************
CREATE TABLE `sous_categorie` (
`id_scat` int(5) NOT NULL auto_increment,
`idcat` int(5) NOT NULL default '0',
`designation` varchar(50) NOT NULL default '',
`comment` varchar(255) NOT NULL default '',
`defaut` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id_scat`),
UNIQUE KEY `designation` (`designation`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;
#
# Contenu de la table `sous_categorie`
#
INSERT INTO `sous_categorie` VALUES (5, 1, 'Php & Mysql', 'Forums, Tutorials, Codes Sources ..', 0);
INSERT INTO `sous_categorie` VALUES (4, 3, 'Visual Basic', 'VB, VB.NET, Crystal Report, Access, SQL SERVER ..', 0);
INSERT INTO `sous_categorie` VALUES (6, 1, 'Javascript', 'Tutorials pour javascript, Forums ...', 0);
INSERT INTO `sous_categorie` VALUES (2, 1, 'Gifs animés, Icônes', 'Téléchargement gifs animés , clipart, Icones', 1);
INSERT INTO `sous_categorie` VALUES (1, 1, 'Templates', 'Sites de téléchargement de modèles de site web', 0);
INSERT INTO `sous_categorie` VALUES (3, 2, 'Pilotes', 'Drivers, pilotes, carte graphiques', 1);
INSERT INTO `sous_categorie` VALUES (7, 2, 'Freeware, sharware', 'Freeware, sharware', 0);
INSERT INTO `sous_categorie` VALUES (8, 3, 'SQL SERVER', 'Tutorials forum SQL SERVER', 1);
*************************************
ensuite
en rajouter cette valeur au tableau list
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>list[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[4]).");</script>";
$i=$i+1; // Incrémentation de $i
}
ensuite dans le remplissage :
if (list[i][1]==valeur)
{
if (list[i][3]==1)
{ ValeurSS="SELECTED";
}
else{
ValeurSS="";
}
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option "+ ValeurSS + " value="+list[i][0]+">"+list[i][2]+"</option>";
}
}
Voila le code complet :
"********************************
<html>
<head>
<title>Créer par Frop01 (Membre du Club CodeS-Source.com)</title>
<script>
list = new Array();
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<list.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (list[i][1]==valeur)
{
if (list[i][3]==1)
{ ValeurSS="SELECTED";
}
else{
ValeurSS="";
}
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option "+ ValeurSS + " value="+list[i][0]+">"+list[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
</head>
<form method="POST" action="Ajout6.php3">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="combo";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from sous_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>list[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[4]).");</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
</form>
</html>
'*********************
et voila ;)
5 janv. 2005 à 19:32
Bonne année et tout et tout.
Pour ce qui est de l'utilisation du boolean, j'en suis au point mort.
Tu pourrais éclairer ma lanterne?
Cordialement
Julien
25 déc. 2004 à 18:17
ESt-ce que tu pourrais venir à mon secours pour ce foutu boolean? Bien sûr quand tu auras fini la dinde... ;o)
MErci
Joyeuses Fêtes
JUlien
14 déc. 2004 à 23:30
Désolé pour le mauvais code.
Alors j'ai donc créé un champ "defaut" dans la table sous_catégorie. Avec pour valeur par défaut 1.
Ainsi toutes les entrées ont pour champ "defaut" 1.
Dans mon code pour éditer les valeurs d'une entrée, j'ai mis:
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[3]).");</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>valeurenr='$k';</script>"; //k contient la désignation de la ss catégorie voulue (c'est sûr et testé)
echo "<script>Remplir ($j); </script>";
Et dans la fonction:
<script>
List = new Array();
valeurenr="";
function Remplir(valeur)
{
var sel="";
sel ="<select size='1' name='sscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr && List[i][3]==1 ) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
Au final, j'obtiens la même chose qu'à ma dernière étape, à savoir: quand je charge la page, la liste des sous-catégories reste blanche... Alors que j'aimerais que la sous-catégorie apparaisse déjà...
Il faut que je change la liste des catégories et là en remettant la bonne correspondance (j'enlève la bonne, je met une autre, je remet la bonne), la sous-catégorie se met directement sur la valeur enregistrée...
En fait, je n'ai pas compris comment se servir de ce boolean. A quoi il sert, comment on change sa valeur et quand...
Ca fait trop... ;o)
14 déc. 2004 à 22:40
Pardon si j'ai pas pu répondre :)
1- BOOLEAN a été ajouté en MySQL version 4.1.0,
mais on peut utiliser TINYINT(1) comme synonyme de BOOLEAN . Il accepte les valeurs entières dans la même plage que TINYINT ainsi que la valeur NULL. TRUE et FALSE peuvent être utilisés comme alias de 1 et 0.
2-
-- Dans le code que tu as mis tu n'as pas mis le teste pour List[i][3]=1 ??
-- pourquoi faire avec valeurenr = "10"; ???
Si ca marche pas remets le code que tu as fais ici
@+
14 déc. 2004 à 17:41
Je me rappelle à ton bon souvenir... ;o)
Si tu pouvais éclairer ma lanterne...
9 déc. 2004 à 19:39
Merci pour ta réponse. MAis j'ai plusieurs soucis.
1. JE ne trouve pas de type bollean dans phpmyadmin... Du coup je le remplace par un char de 1. Déjà là ça doit plus le faire...
2. JE ne suis pas sûr d'avoir fait ce que tu voulais.
Ce que j'ai fait:
Dans le code:
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."',".($dt[3]).");</script>";
Dans la fonction: j'ai simplement ajouté le test List[i][3]=1 pour l'attribution de SELECTED :
<script>
List = new Array();
function Remplir(valeur,valeurenr){
var sel="";
sel ="<select size='1' name='sscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
valeurenr = "10";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
Est-ce ce que tu pensais? Si tu peux être un peu plus précis.
Merci Frop01! Tu n'aimes pas qu'on t'appelle grenouille? ;o)
9 déc. 2004 à 16:45
La solution réside dans l'ajout d'un autre champ boolean nommé "Defaut" dans la table Sous catégorie.
lorsque tu charges les données dans le tableau List, le dernier paramètres est 0 ou 1
0 = rien ; 1= valeur par défaut (séléctionné)
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1",0);
// ex : list[2]=new array (2,1,"Sous-catégorie 2",1);
ensuite dans Remplir tu testes si List[i][3]=1 then SELECTED
@+
NB : mon pseudo c'est FROP et non pas FROG ;)
9 déc. 2004 à 11:48
CEla provient probablement du fait que tu tentes également de faire une 3ème liste de sous-sous catégories.
En effet tu rappelles une 2ème fois la fonction remplir qui est faite pour scat...
Essaye de faire le code sans la sous-sous catégorie... CA devarit marcher.
Après rajoute la ss-ss catégorie qui appellera une fonction remplir2() que tu adapteras à ss-ss catégorie.
Du genre:
<script>
list = new array();
function Remplir2(valeur){
var sel="";
sel ="<select size='1' name='soussouscat'>";
// Parcourir le tableau
for (var i=0;i<list.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (list[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+list[i][0]+">"+list[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV sscat par la nouvelle list à partir du variable SEL
document.getElementById('sscat').innerHTML=sel;
}
</script>
Voilo... A tenter...
Bonne chance.
Sinon Frog01, des idées pour mon dernier soucis?
Merci
Julik
9 déc. 2004 à 10:42
ca y est jai reussi a afiicher les categorie mais maintean jai un probleme pour afficher mes sous categories, cela m' affihe nien quelque chose ds mes sous categorie mais seulement la variable 0 ? saurai tu maider?
<script>
List = new Array();
valeurenr="";
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
<form method="POST" action="resultat.php">
<select size="1" name="cat" OnChange="Remplir(cat.value)">
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="essai";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from sous_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
<select size="1" name="soussouscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select * from sous_sous_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-sous catégorie 1");
// ex : list[2]=new array (2,1,"Sous-sous catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-sous catégories en utilisant la valeur j
?>
</form></center>
9 déc. 2004 à 00:27
J'ai regardé vite fait ton code.
Je sais pas si c'est une erreur de copie, mais
de la 2ème ligne n'est pas à la bonne place...
D'autre part, respectes-tu bien la casse de tes tables dans tes requêtes?
Suis nouveau programmeur, désolé si c'est voulu...
Bonne chance..
8 déc. 2004 à 15:58
Merci encore.
MAis le code ne marche qu'à moitié...
En effet, quand je charge la page. La liste des sous catégories reste blanche... Alors que j'aimerais que la sous-catégorie apparaisse déjà...
Il faut que je change la liste des catégories et là en remettant la bonne correspondance (j'enlève la bonne, je met une autre, je remet la bonne), la sous catégorie se met directement sur la valeur enregistrée...
C'est un brin embêtant...
Une autre idée?
Merci
Julien, qui commence à être désolé d'abuser ainsi de votre temps...
8 déc. 2004 à 14:06
mon code :
<form method="POST" action="Ajouts.php3">
<select size="1" name="cat" onChange="Remplir(cat.value)">
</select>
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="produits";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select NOM from fabricants order by NOM;";
$result= mysql_query ($rq) or die ("Select impossible");
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
<select size="1" name="souscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select CATEGORIE from categories order by CATEGORIE;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-catégorie 1");
// ex : list[2]=new array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
<select size="1" name="soussouscat">
</select>
<?php
// Séléction de tous les enregistrements de la table Sous-Catégorie
$rq="Select VITESSE from vitesseppm order by VITESSE;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
// Remplir le tableau (array) en javascript
// ex : list[1]=new array (1,1,"Sous-sous catégorie 1");
// ex : list[2]=new array (2,1,"Sous-sous catégorie 2");
echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
// des sous-catégories en utilisant la valeur j
?>
8 déc. 2004 à 13:42
valeurenr= valeurenr;
@+
8 déc. 2004 à 13:39
C'est tout a fait normal que ca marche pas parsque on appelle la fonction remplir une seule fois dans le programme et ensuite la valeur $k sera perdu.
la solution est de déclarée une variable valeurenr comme on a fait pour le tableau List:
<script>
List = new Array();
valeurenr="";
function Remplir(valeur){
valeurenr= valeurenr;
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
--------------------------------------------------
ensuite dans le code on affecte la valeur directement à valeurenr.
echo "<script>Remplir ($j); </script>"; echo "<script>valeurenr='le mot que tu ...';</script>";
8 déc. 2004 à 00:14
Merci pour vote aide.
CA ne marche pas vraiment... En fait je soupçonne qu'il y ait un problème dans le passage de la variable "valeurenr"...
Le fais-je de la bonne manière?
Voilà mon code: (sachant que $k contient bien la désignation de la sous catégorie)
echo "<script>Remplir ($j,$k); </script>";
appelle le code suivant:
<script>
List = new Array();
function Remplir(valeur,valeurenr){
var sel="";
sel ="<select size='1' name='sscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]==valeurenr) { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle list à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
</script>
7 déc. 2004 à 21:26
Pardon si j'ai pas suivi votre discussion dès le début.
J'èspère que j'ai compris ;)
Voici comment procéder pour la sélection par défaut dans la deuxième liste :
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
ValeurSS ="";
if (List[i][2]=="Valeur que tu veux que ca soit séléctionné") { ValeurSS="SELECTED";}
sel= sel + "<option "+ ValeurSS + " value="+List[i][0]+">"+List[i][2]+"</option>";
}
}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}
Bien sur vous pouvez aussi tester sur la valeur de l'index du tableau et non pas le contenu du texte.
@+
7 déc. 2004 à 12:11
Merci
Julien
6 déc. 2004 à 11:55
Merci pour cette réponse.
MAis en fait ça j'avais réussi à le faire...
Mon problème se situe à la 2ème liste des sous-catégories. Là je cale pour introduire un "selected" du fait du javascript qui s'intercale... Je pense qu'il faudrait inclure cela dans le code javascript mais j'ai fait bon nombre de tentatives du style :
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][0];
if (valeurenr List[i][2]) {sel sel + " SELECTED";}
sel = sel + ">"+List[i][2]+"</option>";
}
veleurenr est la valeur de la variable que je veux sélectionner...
MAis sans succès.
Si vous avez une idée...
Merci
Julien
6 déc. 2004 à 11:40
$selected = "";
if ($dt[0]="cellequejeveux selectionner") $selected="selected";
echo "\t\t<option $selected value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
6 déc. 2004 à 11:37
$sscat = $_POST['sscat'] au lieu de scat.
2eme question, si tu veux q'un champ soit selectionné tu peux faire:
tu dois avoir un while (patati patata)
echo <option name ="nom" value="$valeur">$valeur</option>
et tu remplace ca par:
while (patati patata)
$selected = "";
if ($valeur="celle que je veux selectionner") selected="selected"
echo <option $selected name="nom" value="$valeur">$valeur</option>
Voila, le principe est qu'une option de ton <select> est selectionnée si tu rajoute <option selected ...></option>
Et en fait, tu fais juste un test if pour vérifier que c'est bien cette option que tu veux selectionner. Si c'est celle la, tu rajoute 'selected', sinon, tu rajoute '', c'est a dire rien.
5 déc. 2004 à 20:23
J'aimerais qu'une certaine valeur (contenue dans une base mysql) soit déjà selectionnée dans la 2ème liste (celle des sous-catégories) lorsque j'ouvre la page.
J'ai déjà réussi à le faire pour la 1ère liste des catégories. Mais pas moyen pour la seconde...
Sauriez-vous comment faire?
Merci
8 nov. 2004 à 19:45
J'ai un autre soucis concernant ce code...
En effet, j'aimerais récupérer les valeurs choisies (cat et sscat) dans les listes déruoulantes.
Je procède la façon suivante:
Dans mon fichier de reception resultats.php4, je mets ceci:
$cat=$_POST['cat'];
$sscat=$_POST['scat'];
Et je reçois la valeur du champ 'id_cat' correspondant au choix pour $cat et rien du tout pour $sscat.
Pourrais-tu m'aider pour récuperer le champ 'designation' des 2 variables?
Merci
5 nov. 2004 à 12:58
5 nov. 2004 à 12:08
J'ai simplement changé le nom de sscat dans <select size="1" name="sscat">...
Un peu logique en somme...
MErci encore
5 nov. 2004 à 11:52
Merci pour cette réponse rapide.
J'ai appliqué ce que tu m'as dit simplement en copiant/collant le script et en changeant LIst et remplir en LIst2 et remplir2.
Malheuresement, je n'obtiens aucunes valeurs dans les listes de sous-catégories...
Je n'ai pas bien compris ce que tu voulais dire par "et charger les données dans List2 à partir de la base", cela vient peut-être de là...?
MErci pour ton aide
Julien
5 nov. 2004 à 02:45
Pour faire la meme chose deux fois, il te faux un autre tableau :
comme ---> list = new array();
----> list2 = new array();
ensuite faire une autre procédure Remplir2 en changeant List par List2
et charger les données dans List2 à partir de la base.
Si tu n'as pas compris ce que je veux dire, reposte un autre message pour que je reformuler ma reponse.
Bonne continuation et merci pour l'interet que tu portes à l'égard de ce code source.
4 nov. 2004 à 23:30
MErci pour ce code qui marche très bien.
Cependant j'ai un soucis lorsque je veux appliquer 2 fois ce code sur la même page pour les mêmes valeurs. Je n'arrive pas avoir de bons résultats du fait que je ne comprends pas totalement le code de départ.
J'ai essayé de multiples changements de noms de variables sans très bons résultats. J'arrive à obtenir une première sous catégorie, mais l'autre imossible.
Pourrais-tu éclairer ma lanterne?
Merci
Julien
11 sept. 2004 à 22:50
Il faut appeler la procédure Remplir après le chargement des données dans l'array List.
Aperçu : http://cyberscorp.e-odyssey.net/combo.php
Merci pour ces détails.
11 sept. 2004 à 21:24
ce qui donne:
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
}
?>
</select>
<script>Remplir(cat.value)</script>
Voila!
9 sept. 2004 à 21:08
9 sept. 2004 à 18:43
Merci
7 sept. 2004 à 13:12
L'erreur vient du non respect de la case majuscule.
Remplacer dans votre code :
array par Array
list par List
et normalement, ca doit marcher.
Merci zoukozouko de m'en avoir informé.
NB : pourtant le code que j'ai copier ici est juste mais l'affichage a changé.
7 sept. 2004 à 12:21
J'ai fais le test dans mon compte d'hébergement et voici le résultat :
http://cyberscorp.e-odyssey.net/combo.php
Effectivement, j'ai constaté des erreurs au niveau du tableau List (array) dans ton cas, et je vais me renseigner là dessus .
Merci.
1 sept. 2004 à 12:29
Je n'avais pas pensé à commenté cette partie du code. Merci !
Ajout6.php est une autre page qui va traiter les informations (Enregistrement ou autre)
Les Valeurs seront stockés dans les variables cat et souscat.
Exemple de récupération des données dans Ajout6.php :
$cat=$_POST['cat'];
$souscat=$_POST['souscat'];
Merci !
1 sept. 2004 à 12:21
<form method="POST" action="Ajout6.php3">