Bonjour,
Dans un premier temps, je lisais une bdd, pour la convertir en xml.
Que de temps perdu !
J'ai donc créer directement mes xml :
cat00.xml (avec id, libelle) et
cat01.xml (avec id, libelle, parent).
Mais dons mon code de page "boutique00.php", je n'y arrive plus.
Pour une lecture plus efficace du code,
j'ai volontairement supprimer tout ce qui avait rapport avec "simpleXML".
Bon, je sais "oXHR.js" et "cat01.php" n'ont plus rien à faire, maintenant.
Idem pour le code javascript en début de page "boutique00.php" !
A la lecture du code, vous aurez vite compris qu'il s'agit de listes déroulantes
dépendante de la précédente (d'où l'utilisation d'une zone "parent" dans "cat01.xml").
Ce code fonctionne nickel (tel quel, avec lecture des 2 bdds) !
Pouvez-vous m'aider à modifier mon code pour que :
la lecture de la bdd "shop_categorie00" soit remplacée par la lecture de "cat00.xml", et que
la lecture de la bdd "shop_categorie01" soit remplacée par la lecture de "cat01.xml".
Les structures sont toutefois identiques :
shop_categorie00 (avec id, libelle) remplacée par cat00.xml (avec id, libelle) et
shop_categorie01 (avec id, libelle, parent) remplacée par cat01.xml (avec id, libelle, parent).
J'ai aussi un souci avec le onchange dans :
<select id="categorie00" style="width:280px;" onChange="request(this);">
(dans "boutique00.php")
J'ai quand même laissé "oXHR.js" (dans /js)
J'ai aussi laissé "cat01.php" (dans /php)
Voici maintenant "boutique00.php"
Modifié par jytest (28 Jul 2011 - 11:29)
Dans un premier temps, je lisais une bdd, pour la convertir en xml.
Que de temps perdu !
J'ai donc créer directement mes xml :
cat00.xml (avec id, libelle) et
cat01.xml (avec id, libelle, parent).
Mais dons mon code de page "boutique00.php", je n'y arrive plus.
Pour une lecture plus efficace du code,
j'ai volontairement supprimer tout ce qui avait rapport avec "simpleXML".
Bon, je sais "oXHR.js" et "cat01.php" n'ont plus rien à faire, maintenant.
Idem pour le code javascript en début de page "boutique00.php" !
A la lecture du code, vous aurez vite compris qu'il s'agit de listes déroulantes
dépendante de la précédente (d'où l'utilisation d'une zone "parent" dans "cat01.xml").
Ce code fonctionne nickel (tel quel, avec lecture des 2 bdds) !
Pouvez-vous m'aider à modifier mon code pour que :
la lecture de la bdd "shop_categorie00" soit remplacée par la lecture de "cat00.xml", et que
la lecture de la bdd "shop_categorie01" soit remplacée par la lecture de "cat01.xml".
Les structures sont toutefois identiques :
shop_categorie00 (avec id, libelle) remplacée par cat00.xml (avec id, libelle) et
shop_categorie01 (avec id, libelle, parent) remplacée par cat01.xml (avec id, libelle, parent).
J'ai aussi un souci avec le onchange dans :
<select id="categorie00" style="width:280px;" onChange="request(this);">
(dans "boutique00.php")
J'ai quand même laissé "oXHR.js" (dans /js)
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
J'ai aussi laissé "cat01.php" (dans /php)
header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8" ?>';
echo "<list>";
$parent = (isset($_POST["parent"])) ? htmlentities($_POST["parent"]) : NULL;
if ($parent) {
date_default_timezone_set('Europe/Brussels');
require_once("connexionMysql.inc.php");
$query = mysql_query("SELECT * FROM shop_categorie01 ".
"WHERE parent=".
mysql_real_escape_string($parent).
" ORDER BY libelle");
while ($back = mysql_fetch_assoc($query)) {
echo '<item id="'.$back['id'].'" libelle="'.$back['libelle'].'" />';
}
echo "</list>";
}
Voici maintenant "boutique00.php"
<html>
<head>
...
<script type="text/javascript" src="js/oXHR.js"></script>
<script type="text/javascript">
<!--
function request(oSelect) {
var value = oSelect.options[oSelect.selectedIndex].value;
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
readData(xhr.responseXML);
document.getElementById("loader00").style.display = "none";
} else if (xhr.readyState < 4) {
document.getElementById("loader00").style.display = "inline";
}
}
xhr.open("POST","php/cat01b.php",true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("parent="+value);
}
function readData(oData) {
var nodes = oData.getElementsByTagName("item");
var oSelect = document.getElementById("categorie01");
var oOption, oInner;
oSelect.innerHTML = "";
for (var i=0, c=nodes.length; i<c ; i++) {
oOption = document.createElement("option");
oInner = document.createTextNode(nodes[i].getAttribute("libelle"));
oOption.value = nodes[i].getAttribute("id");
oOption.appendChild(oInner);
oSelect.appendChild(oOption);
}
}
-->
</script>
</head>
<body>
...
<table id="tableoptions" border="0" cellspacing="0" style="vertical-align:middle;">
...
<tr>
<td style="padding:7px;">Document</td>
<td style="padding-left:5px;">
<select id="categorie00" style="width:280px;" onChange="request(this);">
<option value="none">Choisissez, svp !</option>
<?php
require_once("php/connexionMysql.inc.php");
$query = mysql_query("SELECT * FROM shop_categorie00 ORDER BY libelle");
while ($back = mysql_fetch_assoc($query)) {
echo "\t\t\t\t<option value='".$back['id']."' >".$back['libelle']."</option>\n";
}
?>
</select>
<span id="loader00" style="display: none;"><img src="images/boutique/loader.gif" alt="loading" width="16" height="16" /></span>
</td>
</tr>
<tr>
<td style="padding:7px;">Descriptif</td>
<td style="padding-left:5px;">
<select id="categorie01" style="width:280px;">
</select>
<span id="loader01" style="display: none;"><img src="images/boutique/loader.gif" alt="loading" width="16" height="16" /></span>
</td>
</tr>
...
</table>
</body>
[/i][/i] Modifié par jytest (28 Jul 2011 - 11:29)