ajax ...
Posté : 13 janv. 2006, 01:38
Bonsoir, dites, j'ai besoin d'afficher 4 listes déroulantes, les unes en fonctions des autres
j'y arrive pour deux mais pas pour 4
voici mon code pour les 2:
table:
index.php :
maintenant je voudrais afficher mes villes en fonction des marques & régions, puis je voudrais afficher mes boutiques en fonction des marques, régions & ville!!!
voici mes tables ville et boutique:
voilà, j'ai donc réussit à le coder pour deux listes, mais j'arrive pas à pondre le code pour 4 listes !! car il faut afficher en fonction de beaucoup de choses ...
si quelqun veut bien m'aider, ce serait super gentil
merci
j'y arrive pour deux mais pas pour 4
voici mon code pour les 2:
table:
Code : Tout sélectionner
-- Structure de la table `marque`
--
CREATE TABLE `marque` (
`id_marque` int(5) NOT NULL auto_increment,
`nom` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_marque`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;
--
-- Contenu de la table `marque`
--
INSERT INTO `marque` VALUES (1, 'Police');
INSERT INTO `marque` VALUES (2, 'Banana');
INSERT INTO `marque` VALUES (3, 'Marque3');
INSERT INTO `marque` VALUES (4, 'Marque4');
-- Structure de la table `region`
--
CREATE TABLE `region` (
`id_region` int(5) NOT NULL auto_increment,
`idmarque` int(5) NOT NULL default '0',
`nom` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_region`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;
--
-- Contenu de la table `region`
--
INSERT INTO `region` VALUES (1, 1, 'Aquitaine');
INSERT INTO `region` VALUES (2, 1, 'Bourgogne');
INSERT INTO `region` VALUES (3, 2, 'Aquitaine');
INSERT INTO `region` VALUES (4, 2, 'Ile de France');
INSERT INTO `region` VALUES (5, 3, 'Bretagne');
INSERT INTO `region` VALUES (6, 4, 'Picardie');
<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="";
$host="";
$password="";
$database="";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement marque 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 marque
$rq="Select * from marque order by nom;";
$result= mysql_query ($rq) or die ("Select impossible");
echo "<form method='POST' action='valid.php'>";?> <select size="1" name="marque" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
<?php
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des marques
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 régions appartenant à la première marque.
echo "<select size='1' name='region'>";
$rq="Select * from region where idmarque=".$j." order by nom;";
$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>
</body></html>
et le fichier liresc.php qui me sert pour le OnChange de l'index:<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) ){
$user="";
$host="";
$password="";
$database="";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="Select * from region where idmarque=".$_POST['id']." order by nom;";
$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='region'>";
}
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>";
}
?>
voilà, donc là j'affiche mes régions en fonction des marquesmaintenant je voudrais afficher mes villes en fonction des marques & régions, puis je voudrais afficher mes boutiques en fonction des marques, régions & ville!!!
voici mes tables ville et boutique:
Code : Tout sélectionner
-- Structure de la table `ville`
--
CREATE TABLE `ville` (
`id_ville` int(5) NOT NULL auto_increment,
`idmarque` int(5) NOT NULL default '0',
`idregion` int(5) NOT NULL default '0',
`nom` varchar(255) NOT NULL default '',
PRIMARY KEY (`id_ville`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;
--
-- Contenu de la table `ville`
--
INSERT INTO `ville` VALUES (1, 0, 1, 'Bordeaux');
INSERT INTO `ville` VALUES (2, 0, 1, 'Léognan');
INSERT INTO `ville` VALUES (3, 0, 2, 'Dijon');
INSERT INTO `ville` VALUES (4, 0, 3, 'Cestas');
INSERT INTO `ville` VALUES (5, 0, 4, 'Paris');
-- Structure de la table `boutique`
--
CREATE TABLE `boutique` (
`id_boutique` int(5) NOT NULL auto_increment,
`idmarque` int(5) NOT NULL default '0',
`idregion` int(5) NOT NULL default '0',
`idville` int(5) NOT NULL default '0',
`nom` varchar(255) NOT NULL default '',
`detail` text NOT NULL,
PRIMARY KEY (`id_boutique`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
--
-- Contenu de la table `boutique`
--
si quelqun veut bien m'aider, ce serait super gentil
merci