Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/09/2011, 19h12   #1
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 29
Points : 29
Par défaut Variable PHP dans Ajax

Bonjour,
J'ai ce petit bout de code:

La page principale
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.../...
<td class='locaux'>
	<select class='formelement' name='equipe1' id='equipe1' onchange='equ()'>
	<option value=''></option>
		<?php
		$query = "SELECT categorie, equipe FROM classement WHERE categorie='$cat' ORDER BY equipe";
		$result = mysql_query($query) or die('Erreur SQL !'.$sql.''.mysql_error());
		while($row = mysql_fetch_array($result)){
			echo"<option value='".$row['equipe']."'>".$row['equipe']."</option>\n";
		}
		?>
	</select>
</td>
.../...
Ma fonction javascript:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function equ(){
	var xhr = getXhr();
	xhr.onreadystatechange = function(){
	if(xhr.readyState == 4 && xhr.status == 200){
	leselect = xhr.responseText;
	document.getElementById('liste1').innerHTML = leselect;
   	}
}
	xhr.open("POST","../gymnase.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	sel = document.getElementById('equipe1');
	choix = sel.options[sel.selectedIndex].value;
	xhr.send("equipe1="+choix);
}
et mon programme qui affiche ma nouvelle liste:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
header('Content-Type: text/html; charset=ISO-8859-15');echo "<select name='gymnase' id='gymnase'>";
echo "<option value=''></option>";
require_once('./config/config.inc.php');
$query = "SELECT t1.id, t1.club, t2.id_club, t2.salle FROM clubs AS t1, salles AS t2 WHERE t1.club = '".utf8_decode($_POST['equipe1'])."' AND t1.id=t2.id_club ORDER BY t2.salle";
echo $query;
$result = mysql_query($query) or die ('Erreur SQL !'.$sql.''.mysql_error());
while($row = mysql_fetch_array($result)){
	echo "<option value='".$row['3']."'>".$row['3']."</option>";
	$gymnase=$row['3'];
}
 echo "</select>";
?>
Tout ceci fonctionne très bien si je n'ai qu'une ligne à remplir dans le formulaire. Seulement, le nombre de lignes à remplir est variable.
Alors voici comment j'ai fait:

toujours la page principale:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
      <?php
      $cpt=0;
      while($cpt < $_SESSION['matchs_add'])
      {
      ?>
.../...
<td class='locaux'>
	<select class='formelement' name='equipe1[<?php echo $cpt;?>]' id='equipe1[<?php echo $cpt;?>]' onchange='equ()'>
	<option value=''></option>
		<?php
		$query = "SELECT categorie, equipe FROM classement WHERE categorie='$cat' ORDER BY equipe";
		$result = mysql_query($query) or die('Erreur SQL !'.$sql.''.mysql_error());
		while($row = mysql_fetch_array($result)){
			echo"<option value='".$row['equipe']."'>".$row['equipe']."</option>\n";
		}
		?>
	</select>
</td>
.../...
      <?php
      $cpt++; } ?>
et voici mon code javascript ou ca coince parce que je ne sais pas comment récuperer la valeur de cpt...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function equ(){
	var xhr = getXhr();
	xhr.onreadystatechange = function(){
	if(xhr.readyState == 4 && xhr.status == 200){
	leselect = xhr.responseText;
	document.getElementById('liste1').innerHTML = leselect;
   	}
}
	xhr.open("POST","../gymnase.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	sel = document.getElementById('equipe1[<?php echo $cpt;?>]');
	choix = sel.options[sel.selectedIndex].value;
	xhr.send("equipe1[<?php echo $cpt;?>]="+choix);
}
J'ai mis en rouge ce qui ne fonctionne pas.
Si quelqu'un pouvait me dire comment récuperer la valeur de ma boucle php dans mon code javascript.

Merci d'avance
Equinoxe5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 22h53   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 574
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 574
Points : 4 077
Points : 4 077
Citation:
Envoyé par Equinoxe5 Voir le message
Si quelqu'un pouvait me dire comment récuperer la valeur de ma boucle php dans mon code javascript.
Par définition, non.

Poste ton code généré si le problème concerne réellement AJAX, sinon ça se passe côté PHP ^^
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 09h34   #3
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 29
Points : 29
Bonjour,
En fait, il n'y a pas de code généré puisqu'il y a une erreur avant. Voici le code d'erreur:

Code :
1
2
3
4
5
6
7
8
9
10
11
Détails de l’erreur de la page Web
 
Agent utilisateur : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMNTDF; InfoPath.2; .NET4.0C; Tablet PC 2.0)
Horodateur : Sat, 17 Sep 2011 07:32:50 UTC
 
 
Message*: Objet requis
Ligne*: 12
Caractère*: 2
Code*: 0
URI*: http://localhost.../javascript.js
Equinoxe5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 10h39   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Bonjour,
au lieu d'un compteur $cpt, il serait plus judicieux d'utiliser l'ID (auto-incrément = unique) de l'enregistrement : $row['id'].

PS : en code HTML, on utilisera plutôt les "..." pour les attributs de balises.
Ce qui permet de garder les '...' pour écrire le JavaScript ou PHP (inclus dans le HTML).

Un moyen très simple :
Citation:
<select class="formelement" name="equipe1[<?php echo $cpt;?>]" id="equipe1[<?php echo $row['id'];?>]" onchange="equ('<?php echo $row['id'];?>')">
Et :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function equ(idbd){
	var idbd; // id de l enregistrement (ID auto-incrément dans la bd)
	var xhr = getXhr();
	xhr.onreadystatechange = function(){
	if(xhr.readyState == 4 && xhr.status == 200){
	leselect = xhr.responseText;
	document.getElementById('liste1').innerHTML = leselect;
   	}
}
	xhr.open("POST","../gymnase.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	sel = document.getElementById('equipe1[idbd]');
	choix = sel.options[sel.selectedIndex].value;
	// on transmet : choix (-> equipe1) et idbd (-> id)
	xhr.send("equipe1="+choix+"&amp;id="+idbd);
}
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h09.


 
 
 
 
Partenaires

Hébergement Web