Bonjour,

Je viens de me lancer dans l'ajax aujourd'hui et j'essaye de faire des listes liées. Je suis le tutoriel qui est ici http://siddh.developpez.com/articles/ajax/#LIV-A mais avec ma base de données qui est un fichier .mdb.

Pour l'instant je n'est fait que la première partie(réponse au format texte), c.a.d sans la partie responseXML. Je vais passer à la suite une fois que j'aurais régler mon problème.

Voilà mon problème:
Quand j'adapte le code php du tuto qui traite la requete ajax, sa marche:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
echo "<select name='livre'>";
//connexion BDD
$pdo = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\wamp\www\stage_info\developpement\Crystal.mdb;Uid=",
	"", "", array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
//requete SQL
$sql="SELECT CODE_LIGNE,DESI_LIGNE, count(*) FROM ENTETES_CARTES_PAPIER where CODE_UP='CA' and  CODE_ATEL='00' group by CODE_LIGNE,DESI_LIGNE";
$resultats = $pdo->query($sql);
$resultats->setFetchMode(PDO::FETCH_OBJ);
while($res = $resultats->fetch()){
	echo "<option value='".$res->CODE_LIGNE."'>".$res->CODE_LIGNE."</option>";
}
$resultats->closeCursor();
echo "</select>";
?>

Le problème c'est que je travail en php objet, et donc que j'ai des fonctions qui me permettent de faire ma connexion à ma bdd, mes requetes sql, mais qui se trouve dans d'autres fichiers. J'essaye d'adapter mon code, ce qui me donne ceci:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
require_once 'Saisie.php';
class  ajaxLivre extends Saisie {	
	echo "<select name='livre'>";
	//execute requete sql pour récupérer mes Lignes par Atelier
	$resultats = recupLigneParAtelier('00'); 	
	$resultats->setFetchMode(PDO::FETCH_OBJ);
	while( $resultat = $resultats->fetch() ){
		echo "<option value='".$resultat->CODE_LIGNE."'>".$resultat->CODE_LIGNE."</option>";
	}
	$resultats->closeCursor();
	echo "</select>";
}
?>

et là, j'ai l'erreur suivante:

Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting function (T_FUNCTION) in C:\wamp\www\stage_info\Modele\ajaxLivre.php on line 6.
En faite c'est quand je déclare ma classe que sa me fait l'erreur. Ma fonction recupLigneParAtelier() est dans Saisie.php donc je suis obligé d'utiliser cette classe.

Voici son code:

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
require_once 'Modele.php';
class Saisie extends Modele {
	// Renvoie la liste des atelier
	public function recupAtelier(){
	$UP="CA";
		$sql="SELECT CODE_ATEL,DESI_ATEL, count(*) FROM ENTETES_CARTES_PAPIER where CODE_UP='".$UP."' group by CODE_ATEL,DESI_ATEL";
		//echo $sql;
		$reponse = $this->executerRequete($sql);
		return $reponse;
	}
	// Renvoie la liste des lignes par atelier
	public function recupLigneParAtelier($atelier){
	$UP="CA";
		$sql="SELECT CODE_LIGNE,DESI_LIGNE, count(*) FROM ENTETES_CARTES_PAPIER where CODE_UP='".$UP."' and  CODE_ATEL='".$atelier."' group by CODE_LIGNE,DESI_LIGNE";
		//echo $sql;
		$reponse = $this->executerRequete($sql);
		return $reponse;
	}
}
?>

et voici mon code javascript( c'est celui du tuto):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function getXhr(){
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	   xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
	   try {
		xhr = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	}
	}
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   xhr = false; 
	} 
	return xhr;
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
	var xhr = getXhr();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			leselect = xhr.responseText;
			// On se sert de innerHTML pour rajouter les options a la liste
			document.getElementById('livre').innerHTML = leselect;
		}
	}
	// Ici on va voir comment faire du post
	xhr.open("POST","Modele/ajaxLivre.php",true);
	// ne pas oublier ça pour le post
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	// ne pas oublier de poster les arguments
	// ici, l'id de l'auteur
	sel = document.getElementById('auteur');
	idauteur = sel.options[sel.selectedIndex].value;
	xhr.send("idAuteur="+idauteur);
}
et mon code html(j'ai laissé les memes id que dans le tuto) :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div id="panneau_gauche">
	<fieldset  class="Choix de localisation">
		<legend>Recherche</legend>
		<br>
		<select name="auteur" id='auteur' onchange="go();" style="width:230px"> 
			<option>Projet</option> 
			<?php 
                                foreach ($contenu as $key):
                                        echo '<option value="'.$key['CODE_ATEL'].'"> Atelier: '.$key['CODE_ATEL'].' - '. $key['DESI_ATEL'].'</option>'; 
                                endforeach ;
                        ?>
		</select>	
		<span id="loader" style="display: none;"><img src="UI/img/loader.gif" alt="loading" /></span>
		<div id='livre' style='display:inline'>
			<select name="livre">
				<option value='-1'>Choisir un auteur</option>
			</select>
		</div>
	</fieldset>
</div>

J'ai besoin d'un peu d'aide car je bloque depuis une journée la dessus.

merci d'avance.