Bonjour a tous,
J'ai récupérer ce petit script sur ce même forum hier, je l'ai un peu modifie mais j'ai toujours le même message d'erreur.
"Erreur de syntaxe prés de 'test' a la ligne 1"
Jusqu'a la ligne 67 du fichier liste_liees.php tout va bien il me semble
Je vous met les fichiers:
config.php
<?php
$host="localhost";
$Login="root";
$Pass="";
$DB="test";
$Table="etudiants";
$champ_niv="niveau";
$champ_etud="etudiants";
?>
liste_liees.php
<html>
<head>
<!-- Script de listes deroulantes liees avec appel par AJAX, (evite le rechargement de la page) -->
<script language="Javascript"type="text/JavaScript">
// Requette AJAX
function makeRequest(url,id_niveau,id_ecrire){
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_ecrire); } //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_niveau);
data="val_sel="+obj.value;
http_request.send(data);
}
function traitementReponse(http_request,id_ecrire) {
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;
obj = document.getElementById(id_ecrire);
obj.innerHTML = affich_list;
}
else {
//alert('Un problème est survenu avec la requête.');
alert('There was a problem with the request.(Code: ' + http_request.status + ')');
}
}
}
</script>
</head>
<?php
include ("config.php");
// Connexion a la base de donnees
$AccesBase = mysql_connect($host,$Login,$Pass);
mysql_select_db($DB,$AccesBase);
$QuestionBase = "SELECT DISTINCT $champ_niv FROM $Table ORDER BY $champ_niv ASC " ;
$result_recherche=mysql_query($QuestionBase) or die (mysql_error());
$nombre_enr=mysql_num_rows($result_recherche);
?>
<body>
<form name="test1" method="post" action="liste_liees.php" >
<div id="id_list1">Niveau:<br>
<select name="niv1" id="id_niv1" onChange="makeRequest('repPhpAjax.php','id_niv1','id_list2')">
<option>-- Choisissez --</option>
<?php
while ($row=mysql_fetch_assoc($result_recherche)){
?>
<option value="<?php echo $row[$champ_niv]?>"><?php echo $row[$champ_niv]?></option>
<?php
}
?>
</select>
<br><br>
</div>
<div id="id_list2">
<!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->
</div>
</form>
</body>
</html>
repPhpAjax.php
<?php
// script PHP interrogation Base de donnees pour reponse a la requette AJAX
include ("config.php");
// Connexion a la base de donnees
$AccesBase = mysql_connect($host,$Login,$Pass);
mysql_select_db($DB,$AccesBase);
$QuestionBase = "SELECT * FROM $Table WHERE ".$champ_niv."='".$_POST["val_sel"]."' ORDER BY ".$champ_etud." ASC " ;
$result_recherche=mysql_query($DB) or die (mysql_error());
// construction de la liste deroulante
$aff=="";
$aff=$aff."Etudiants:<br>
<select name='niv1' id='cont_list2' >
<option>-- Choisissez --</option>";
while ($row=mysql_fetch_assoc($result_recherche)){
$aff.="<option value=\"$row[$champ_etud]\">$row[$champ_etud]</option>";
}
$aff=$aff."</select><br><br>";
// envoi reponse Php a Ajax
echo $aff;
?>
Si qqun voit la boulette je suis preneur :D
Merci d'avance
je vois comment acceder au champ avec Javascript par contre j'utilise une requete SQL pour faire la 2eme liste comment y integrer la valeur que le recupere avec le javascript. Il faudrait que je stocke la valeur récupérée avec le Javascript dans une variable qui pourrait etre utilisée dans mon code PHP mais je ne sais pas comment???
merci
1- tu acceptes que ta page se recharge, alors tu n'utilises pas javascript, mais dans la liste 1 tu mets onChange=Submit(). Dans <form tu mets action="ta_page_php.php"
Dans ta_page_php tu vérifie que $_POST['nom_liste1']!="" et tu réintéroges ta BD et charges alors ta deuxième liste.
Pour que la valeur sélectionnée de ta première liste subsistes, tu dois mettre dans tous les
<option value="valeur1" <?php if ($_POST['nom_liste1']=="valeur1"){echo "selected";}?> >Valeur1</option>
2- si tu ne veux pas que ta page se recharge, alors tu utilises Javascript et AJAX qui va appeler un autre script PHP qui lira la bd et chargera la liste 2 en fct du choix liste 1
Fais une recherche sur Google "Listes liées Ajax" ou si besoin j'ai un bout de code
il m'affiche le message suivant:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/vhosts/monsite.fr/httpdocs/espace_franchise/admin/articleajout.php on line 195
sachant que à la ligne 195 j'ai l code suivant:
<option value= "<?php echo $row_Liste1['type_article'];?>" <?php if ($_POST['type_article']==" $row_Liste1['type_article']"){echo "selected";}?> ><?php echo $row_Liste1['type_article'];?> </option>
stp dis moi c'est koi la source exacte de ce prob!!! merci