Liste déroulante en fonction d'une autre
widi70
Messages postés
679
Statut
Membre
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonjour à tous, je cherche à actualiser une liste déroulante suivant la réponse d'une autre liste
et suivant les choix de ces différentes listes j'affiche des produits.
Donc j'ai trouver le script suivant:
http://perso.wareteam.com/comment_demander_des_informations_au_serveur_sans_recharger_la_page-.php
Mais le seul problème est que je n'arrive pas à adapter le fait d'afficher les produits après le second
choix.
Je ne comprend pas trop le code, pouvez vous m'aidez à le à coder la suite
Je vous remercie d'avance de votre aide
et suivant les choix de ces différentes listes j'affiche des produits.
Donc j'ai trouver le script suivant:
http://perso.wareteam.com/comment_demander_des_informations_au_serveur_sans_recharger_la_page-.php
Mais le seul problème est que je n'arrive pas à adapter le fait d'afficher les produits après le second
choix.
Je ne comprend pas trop le code, pouvez vous m'aidez à le à coder la suite
Je vous remercie d'avance de votre aide
A voir également:
- Liste déroulante en fonction d'une autre
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Fonction si et - Guide
- Liste code ascii - Guide
- Site dangereux liste - Guide
6 réponses
ok alors voici ce que j'ai fait pour l'instant un ajoutant seulement une troisieme liste par rapport au choix de la seconde:
index.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/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>
<body>
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="base";
$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 script_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
echo "<form method='POST' action='valid.php'>";?> <select size="1" name="cat" OnChange="sendData('idsscat='+this.value,'liresc.php')" onKeyUp="sendData('idsscat='+this.value,'liresc.php')">
<?php
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select><br><br>
<div id="contenu">
<?php
// affichage des sous-catégorie appartenant à la première catégorie.
echo "<select size='1' name='souscat'>";
$rq="Select * from script_sous_categorie where idcat=".$j." order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
}
echo "</select>";
?> </div></form>
<?php
// affichage des PRODUIT appartenant à la première SS _catégorie.
echo "<select size='1' name='prod_affiche'>";
$rq="Select * from script_produit where id_sscat=".$j." order by designation_prod;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
}
echo "</select>";
?>
</body>
</html>
liresc.php
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
// test des POST emis
if(isset($_POST['idsscat']) && !empty($_POST['idsscat']) ){
$user="root";
$host="localhost";
$password="";
$database="base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="Select * from script_sous_categorie where idcat=".$_POST['idsscat']." order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0)
{
echo "<form method='POST' action='valid.php'>";?> <select size="1" name="souscat" OnChange="sendData('idprod='+this.value,'lireprod.php')" onKeyUp="sendData('idprod='+this.value,'lireprod.php')">
<?php
}
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><br>";
}
echo "</select>";
}
?>
et le dernier que j'ai crée
lireprod.php
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
// test des POST emis
if(isset($_POST['idprod']) && !empty($_POST['idprod']) ){
$user="root";
$host="localhost";
$password="";
$database="base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="Select * from script_produit where id_sscat=".$_POST['idprod']." order by designation_prod;";
$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='prod_affiche'>";
}
else
{
echo utf8_encode("Pas de produits disponible");
}
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
}
echo "</select>";
}
?>
ALors bon ça ne marche pas car ma deuxieme liste déroulante prend les valeur de la troisième lors du choix, enfin ça marche pas.
Si vous pouvez m'aider ..........;
Je vous donne le SQL aussi :
--
-- Base de données: `base`
--
-- --------------------------------------------------------
--
-- Structure de la table `script_categorie`
--
CREATE TABLE `script_categorie` (
`id_cat` int(5) NOT NULL auto_increment,
`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 AUTO_INCREMENT=10 ;
--
-- Contenu de la table `script_categorie`
--
INSERT INTO `script_categorie` (`id_cat`, `designation`, `comment`) VALUES
(1, 'Ressources Webmaster', 'Site dédié aux webmasters. Tutorials, Exemples, Codes Sources, ressources, images, Cliparts, Gifs, Forums ...'),
(2, 'Downloads', 'Téléchargement freeware, shareware...'),
(3, 'Programmation', 'Developpement programmation'),
(9, 'Logiciels de gestion', 'Logiciel de gestion, finance, comptabilité, paie, erp, stock, planning ..');
-- --------------------------------------------------------
--
-- Structure de la table `script_produit`
--
CREATE TABLE `script_produit` (
`id_produit` int(11) NOT NULL,
`id_sscat` int(11) NOT NULL,
`designation_prod` text NOT NULL,
`commentaire_prod` text NOT NULL,
PRIMARY KEY (`id_produit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `script_produit`
--
INSERT INTO `script_produit` (`id_produit`, `id_sscat`, `designation_prod`, `commentaire_prod`) VALUES
(1, 1, 'PRODUIT 1', ''),
(2, 2, 'PROD 2', ''),
(3, 3, 'PROD 3', ''),
(4, 4, 'PROD 4', ''),
(5, 5, 'PROD 5', ''),
(6, 6, 'PROD 6', ''),
(7, 7, 'PROD 7', ''),
(8, 8, 'PROD 8', '');
-- --------------------------------------------------------
--
-- Structure de la table `script_sous_categorie`
--
CREATE TABLE `script_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 '',
PRIMARY KEY (`id_scat`),
UNIQUE KEY `designation` (`designation`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Contenu de la table `script_sous_categorie`
--
INSERT INTO `script_sous_categorie` (`id_scat`, `idcat`, `designation`, `comment`) VALUES
(5, 1, 'Php & Mysql', 'Forums, Tutorials, Codes Sources ..'),
(4, 3, 'Visual Basic', 'VB, VB.NET, Crystal Report, Access, SQL SERVER ..'),
(6, 1, 'Javascript', 'Tutorials pour javascript, Forums ...'),
(2, 1, 'Gifs animés, Icônes', 'Téléchargement gifs animés , clipart, Icones'),
(1, 1, 'Templates', 'Sites de téléchargement de modèles de site web'),
(3, 2, 'Pilotes', 'Drivers, pilotes, carte graphiques'),
(7, 2, 'Freeware, sharware', 'Freeware, sharware'),
(8, 3, 'SQL SERVER', 'Tutorials forum SQL SERVER');
Merci d'avance bcp de votre aide
index.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/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>
<body>
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="base";
$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 script_categorie order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
echo "<form method='POST' action='valid.php'>";?> <select size="1" name="cat" OnChange="sendData('idsscat='+this.value,'liresc.php')" onKeyUp="sendData('idsscat='+this.value,'liresc.php')">
<?php
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select><br><br>
<div id="contenu">
<?php
// affichage des sous-catégorie appartenant à la première catégorie.
echo "<select size='1' name='souscat'>";
$rq="Select * from script_sous_categorie where idcat=".$j." order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
}
echo "</select>";
?> </div></form>
<?php
// affichage des PRODUIT appartenant à la première SS _catégorie.
echo "<select size='1' name='prod_affiche'>";
$rq="Select * from script_produit where id_sscat=".$j." order by designation_prod;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
}
echo "</select>";
?>
</body>
</html>
liresc.php
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
// test des POST emis
if(isset($_POST['idsscat']) && !empty($_POST['idsscat']) ){
$user="root";
$host="localhost";
$password="";
$database="base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="Select * from script_sous_categorie where idcat=".$_POST['idsscat']." order by designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0)
{
echo "<form method='POST' action='valid.php'>";?> <select size="1" name="souscat" OnChange="sendData('idprod='+this.value,'lireprod.php')" onKeyUp="sendData('idprod='+this.value,'lireprod.php')">
<?php
}
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><br>";
}
echo "</select>";
}
?>
et le dernier que j'ai crée
lireprod.php
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
// test des POST emis
if(isset($_POST['idprod']) && !empty($_POST['idprod']) ){
$user="root";
$host="localhost";
$password="";
$database="base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="Select * from script_produit where id_sscat=".$_POST['idprod']." order by designation_prod;";
$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='prod_affiche'>";
}
else
{
echo utf8_encode("Pas de produits disponible");
}
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
}
echo "</select>";
}
?>
ALors bon ça ne marche pas car ma deuxieme liste déroulante prend les valeur de la troisième lors du choix, enfin ça marche pas.
Si vous pouvez m'aider ..........;
Je vous donne le SQL aussi :
--
-- Base de données: `base`
--
-- --------------------------------------------------------
--
-- Structure de la table `script_categorie`
--
CREATE TABLE `script_categorie` (
`id_cat` int(5) NOT NULL auto_increment,
`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 AUTO_INCREMENT=10 ;
--
-- Contenu de la table `script_categorie`
--
INSERT INTO `script_categorie` (`id_cat`, `designation`, `comment`) VALUES
(1, 'Ressources Webmaster', 'Site dédié aux webmasters. Tutorials, Exemples, Codes Sources, ressources, images, Cliparts, Gifs, Forums ...'),
(2, 'Downloads', 'Téléchargement freeware, shareware...'),
(3, 'Programmation', 'Developpement programmation'),
(9, 'Logiciels de gestion', 'Logiciel de gestion, finance, comptabilité, paie, erp, stock, planning ..');
-- --------------------------------------------------------
--
-- Structure de la table `script_produit`
--
CREATE TABLE `script_produit` (
`id_produit` int(11) NOT NULL,
`id_sscat` int(11) NOT NULL,
`designation_prod` text NOT NULL,
`commentaire_prod` text NOT NULL,
PRIMARY KEY (`id_produit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `script_produit`
--
INSERT INTO `script_produit` (`id_produit`, `id_sscat`, `designation_prod`, `commentaire_prod`) VALUES
(1, 1, 'PRODUIT 1', ''),
(2, 2, 'PROD 2', ''),
(3, 3, 'PROD 3', ''),
(4, 4, 'PROD 4', ''),
(5, 5, 'PROD 5', ''),
(6, 6, 'PROD 6', ''),
(7, 7, 'PROD 7', ''),
(8, 8, 'PROD 8', '');
-- --------------------------------------------------------
--
-- Structure de la table `script_sous_categorie`
--
CREATE TABLE `script_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 '',
PRIMARY KEY (`id_scat`),
UNIQUE KEY `designation` (`designation`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Contenu de la table `script_sous_categorie`
--
INSERT INTO `script_sous_categorie` (`id_scat`, `idcat`, `designation`, `comment`) VALUES
(5, 1, 'Php & Mysql', 'Forums, Tutorials, Codes Sources ..'),
(4, 3, 'Visual Basic', 'VB, VB.NET, Crystal Report, Access, SQL SERVER ..'),
(6, 1, 'Javascript', 'Tutorials pour javascript, Forums ...'),
(2, 1, 'Gifs animés, Icônes', 'Téléchargement gifs animés , clipart, Icones'),
(1, 1, 'Templates', 'Sites de téléchargement de modèles de site web'),
(3, 2, 'Pilotes', 'Drivers, pilotes, carte graphiques'),
(7, 2, 'Freeware, sharware', 'Freeware, sharware'),
(8, 3, 'SQL SERVER', 'Tutorials forum SQL SERVER');
Merci d'avance bcp de votre aide
salut, j'avais aidé déja qq un la dessus vas voir ce topic:
http://www.commentcamarche.net/forum/affich 2382261 ajax listes liees
http://www.commentcamarche.net/forum/affich 2382261 ajax listes liees
Bonjour je te remercie de ton aide, malheureusement ce post ne m'as pas été d'une grande aide car toutes mes listes se construisent très bien sauf que lorsque je fait un choix dans ma seconde liste tous les résultats de celle-ci sont transformer par les résultats de la troisieme.
Alors je sait pas trop si j'arrive à me faire comprendre.
Sinon j'ai trouvé ce site grâce ton post: http://www.roodali.com/index.php?2007/06/26/4-3-listes-deroulantes-liees-avec-ajax-php-mysql
mais il n'y a pas de zip rien à telecharger.
Donc bon j'espere que vous pourrez m'aider
Alors je sait pas trop si j'arrive à me faire comprendre.
Sinon j'ai trouvé ce site grâce ton post: http://www.roodali.com/index.php?2007/06/26/4-3-listes-deroulantes-liees-avec-ajax-php-mysql
mais il n'y a pas de zip rien à telecharger.
Donc bon j'espere que vous pourrez m'aider
Salut, je t'ai refondu un peu tes pages:
page index, il est inutile de creer tes listes 2 et 3 puisqu'elles vont être fonction du choix dans la 1, tu mets seulement les deux div qui vont les recevoir à la réponse de Ajax
index.php:
liresc.php
lireprod.php:
page index, il est inutile de creer tes listes 2 et 3 puisqu'elles vont être fonction du choix dans la 1, tu mets seulement les deux div qui vont les recevoir à la réponse de Ajax
index.php:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
je t'ai rajouté un argument a la fonction, l'id ou écrire a chaque reponse
*/
function sendData(param,page,id_ecrire)
{
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(id_ecrire);
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>
<body>
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="base";
$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 script_categorie ORDER BY designation;";
$result= mysql_query ($rq) or die ("Select impossible");
?>
<form method='POST' action='valid.php'>
<select size="1" name="cat" OnChange="sendData('idsscat='+this.value,'liresc.php','contenu2');" onKeyUp="sendData('idsscat='+this.value,'liresc.php','contenu2');">
<?php
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select><br><br>
<div id="contenu2"><!-- ici sera affichee la deuxieme liste --></div>
<br>
<div id="contenu3"><!-- ici sera affichee la troisieme liste --></div>
</form>
</body>
</html>
liresc.php
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
// test des POST emis
if(isset($_POST['idsscat']) && !empty($_POST['idsscat']) ){
$user="root";
$host="localhost";
$password="";
$database="base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="SELECT * FROM script_sous_categorie WHERE idcat=".$_POST['idsscat']." ORDER BY designation;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0){
?>
<select size="1" name="souscat" OnChange="sendData('idprod='+this.value,'lireprod.php','contenu3');" onKeyUp="sendData('idprod='+this.value,'lireprod.php','contenu3');">
<?php
while ($dt=mysql_fetch_row($result)){
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option>";
}
echo "</select>";
}else{
echo utf8_encode("Pas de sous catégories disponible");
}
}
?>
lireprod.php:
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
// test des POST emis
if(isset($_POST['idprod']) && !empty($_POST['idprod']) ){
$user="root";
$host="localhost";
$password="";
$database="base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="SELECT * FROM script_produit WHERE id_sscat=".$_POST['idprod']." ORDER BY designation_prod;";
$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='prod_affiche'>";
while ($dt=mysql_fetch_row($result)){
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
}
echo "</select>";
}else{
echo utf8_encode("Pas de produits disponible");
}
}
?>
Bonjour et merci beaucoup de ton aide.
Alors j'ai un petit probleme avec les codes que tu m'as donné, il ne s'affiche que la premiere liste déroulante.
Alors j'ai modifier dans
liresc.php et lireprod.php
echo "<select size='1' name='prod_affiche'>";
par
echo "<select size='1' name=contenu2'>";
et
echo "<select size='1' name='contenu3'>";
pour que index.php appel bien les bonnes variables, mais ça ne marche toujours pas
Merci beaucoup
Alors j'ai un petit probleme avec les codes que tu m'as donné, il ne s'affiche que la premiere liste déroulante.
Alors j'ai modifier dans
liresc.php et lireprod.php
echo "<select size='1' name='prod_affiche'>";
par
echo "<select size='1' name=contenu2'>";
et
echo "<select size='1' name='contenu3'>";
pour que index.php appel bien les bonnes variables, mais ça ne marche toujours pas
Merci beaucoup
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est normal que ça n'affiche que la première liste au début, les deux autres sont fonction du choix dans la précedente
La modif des name des listes 2 et 3 que tu as faites ne jouent pas à ce niveau la mais seulement quand le formulaire entier (avec les 3 listes ) sera envoyé au script valid.php
pour voir un peu ce qui se passe dans index.php dans la fonction entre:
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
rajoutes une alerte:
tu verra ainsi ce qui part si ça correspond bien à la sélection dans la liste
La modif des name des listes 2 et 3 que tu as faites ne jouent pas à ce niveau la mais seulement quand le formulaire entier (avec les 3 listes ) sera envoyé au script valid.php
pour voir un peu ce qui se passe dans index.php dans la fonction entre:
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
rajoutes une alerte:
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
alert("data envoyes: "+param);
XhrObj.send(param);
tu verra ainsi ce qui part si ça correspond bien à la sélection dans la liste
Salut,
je t'ai completement changé la fonction javascript, celle la je la connait pour l'utiliser tout le temps
index.php:
liresc.php
lireprod.php
il faut d'abord tester tes deux scripts appelés
par exemple pour tester liresc.php, tu mets une valeur provisoire pour $idsscat
et tu appelles le script directement en tapant son adresse dans ton navigateur, il doit t'afficher la liste correspondant à la sous cat provisoire que tu as mis
idem pour lireprod.php
aussi si pb pour voir ce que tu reçoit, tu décommentes dans la fonction: //alert(affich_list);
et pour voir ce que la fonction envoie aux scripts php, tu décommentes : //alert("valeurs envoyee: "+data);
voilà ça devrait marcher comme ça.
@lain
je t'ai completement changé la fonction javascript, celle la je la connait pour l'utiliser tout le temps
index.php:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
je t'ai changé completement la fonction Ajax
*/
function makeRequest(url,nom_champ_poste,id_lire,id_ecrire1,id_ecrire2){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire1,id_ecrire2); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
obj=document.getElementById(id_lire);
data=nom_champ_poste+"="+obj.value;
//alert("valeurs envoyee: "+data);
http_request.send(data);
}
function traitementReponse(http_request,id_ecrire1,id_ecrire2) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var affich_list=http_request.responseText;
//alert(affich_list);
obj1 = document.getElementById(id_ecrire1);
obj2 = document.getElementById(id_ecrire2);
//on efface d'abord leslistes eventuelement affichée
obj1.innerHTML = "";
obj2.innerHTML = "";
//puis on affiche le contenu de la liste concernée
obj1.innerHTML = affich_list;
}
else {
alert('Un problème est survenu avec la requête.');
}
}
}
}//fin fonction Ajax
</script>
</head>
<body>
<?php
// Paramètres de la Connexion à la base MYSQL
$user="root";
$host="localhost";
$password="";
$database="base";
$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 script_categorie ORDER BY designation;";
$result= mysql_query ($rq) or die ("Select impossible");
?>
<form method='POST' action='valid.php'>
<select size="1" name="cat" id="cat" OnChange="makeRequest('liresc.php','idsscat','cat','contenu2','contenu3');">
<?php
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select><br><br>
<div id="contenu2"><!-- ici sera affichee la deuxieme liste --></div>
<br>
<div id="contenu3"><!-- ici sera affichee la troisieme liste --></div>
</form>
</body>
</html>
liresc.php
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
// test des POST emis
//ce test est inutile si le script est appelé c'est qu'on lui envoie qq chose
//recup des valeurs postées
$idsscat=$_POST['idsscat'];
//pour tester ton script tu mets
//$idsscat=une valeur existante dans ta base
$user="root";
$host="localhost";
$password="";
$database="base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="SELECT * FROM script_sous_categorie WHERE idcat=".$idsscat." ORDER BY designation";
//ta table se nomme bien script_sous_categaorie ?
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0){
?>
<select size="1" name="souscat" id="souscat" OnChange="makeRequest('lireprod.php','idprod','souscat','contenu3','contenu2');">
<?php
while ($dt=mysql_fetch_row($result)){
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option>";
}
echo "</select>";
}else{
echo utf8_encode("Pas de sous catégories disponible");
}
?>
lireprod.php
<?php
header('Content-type: text') ; // on déclare ce qui va être affiche
// test des POST emis:
//ce test est inutile si le script est appelé c'est qu'on lui envoie qq chose
//recup des valeurs postées
$idprod=$_POST['idprod'];
//pour tester ton script tu mets
//$idsscat=une valeur existante dans ta base
$user="root";
$host="localhost";
$password="";
$database="base";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="SELECT * FROM script_produit WHERE id_sscat=".$idprod." ORDER BY designation_prod;";
$result= mysql_query ($rq) or die ("Select impossible");
if (mysql_num_rows($result)>0){
echo "<select size='1' name='prod_affiche'>";
while ($dt=mysql_fetch_row($result)){
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option>";
}
echo "</select>";
}else{
echo utf8_encode("Pas de produits disponible");
}
?>
il faut d'abord tester tes deux scripts appelés
par exemple pour tester liresc.php, tu mets une valeur provisoire pour $idsscat
et tu appelles le script directement en tapant son adresse dans ton navigateur, il doit t'afficher la liste correspondant à la sous cat provisoire que tu as mis
idem pour lireprod.php
aussi si pb pour voir ce que tu reçoit, tu décommentes dans la fonction: //alert(affich_list);
et pour voir ce que la fonction envoie aux scripts php, tu décommentes : //alert("valeurs envoyee: "+data);
voilà ça devrait marcher comme ça.
@lain
Salut,
en complement:
si on selection l'élément affiché par defaut dans la liste, le onChange ne lance pas la fonction Ajax.
pour remedier à ça il suffit d'ajouter une option Choisissez dans la liste
ex dans index.php
et tu fais pareil pour les script liresc.php et lireprod.php
et dans la fonction pour éviter d'appeler si Choisissez est resélectionné tu rajoutes à ce niveau la:
en complement:
si on selection l'élément affiché par defaut dans la liste, le onChange ne lance pas la fonction Ajax.
pour remedier à ça il suffit d'ajouter une option Choisissez dans la liste
ex dans index.php
..................
<form method='POST' action='valid.php'>
<select size="1" name="cat" id="cat" OnChange="makeRequest('liresc.php','idsscat','cat','contenu2','contenu3');">
<option value=-1>Choisissez</option>
<?php
while ($dt=mysql_fetch_row($result))
.............
et tu fais pareil pour les script liresc.php et lireprod.php
et dans la fonction pour éviter d'appeler si Choisissez est resélectionné tu rajoutes à ce niveau la:
................
obj=document.getElementById(id_lire);
if(obj.value==-1){
//si Choisissez a ete selectionné on sort de la fonction
return;
}
data=nom_champ_poste+"="+obj.value;
.........................