5568 sujets

Sémantique web et HTML

Bonjour,


J'ai une(des) erreur(s) dans les codes qui suivent.
J'en perds mon html !
Pouvez-vous m'aider ?

Mon problème, c'est que la 1ere liste déroulante ne contient que "Choisissez, svp !".
Jamais n'apparaissent les "libelle" de la bdd "shop_categorie00".
Par ailleurs la 2e liste déroulante ne s'affiche tout naturellement pas !
(que ce soit sur Chrome, IE8 ou Firefox5)


Mes bdd utilisées sont :
shop_categorie00 (avec id, libelle)
et
shop_categorie01 (avec id, libelle, parent)
A noter que "parent" de shop_categorie01 lie vers "id" de shop_categorie00 !


<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/cat01.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 width="200"></td>
        <td width="300"></td>
        </tr>
        <tr>
        <td colspan="2" style="padding:7px;" bgcolor="#0E72B5" class="blanc bold">Titre : prix en ligne instantané</td>
        </tr>
        <tr>
        <td colspan="2" style="padding:7px;">
        Afin d'établir un devis,<br>veuillez choisir parmi toutes les options suivantes :</td>
        </tr>
        <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("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>


Voici cat01.php (dans le dossier /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 oXHR.js (dans le dossier /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;
}
[/i][/i]
Modifié par jytest (28 Jul 2011 - 01:50)