Menu

[ajax] listes liées [Fermé]

Messages postés
255
Date d'inscription
jeudi 16 décembre 2004
Dernière intervention
6 août 2008
- - Dernière réponse :  Denis - 1 mars 2012 à 17:21
J'ai utilisé la méthode exposée dans le tuto http://siddh.developpez.com/articles/ajax/#LIV-A
mais j'ai transposé à une table tb_pays et une table tb_ville....

j'ai beau cherché l'erreur, ma seconde liste est toujours vide quand je choisis un pays....
<?php include("haut.php") ; // contient la connexion avec la base ?>
<div id="corps">
		<script type='text/javascript'>
			var xhr = null; 
	 
			function getXhr(){
				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; 
				} 
			}
			
			/**
			* Méthode qui sera appelée sur le click du bouton
			*/
			function go(){
				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('ville').innerHTML = leselect;
					}
				}

				// Ici on va voir comment faire du post
				xhr.open("POST","ajaxville.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 du pays
				sel = document.getElementById('pays');
				idpays = sel.options[sel.selectedIndex].value;
				xhr.send("id_pays="+idpays);
			}
		</script>
		<form>
			<fieldset>
				<legend>lieux:</legend>
				<label>pays</label>
				<select name='pays' id='pays' onchange='go()'>
					<option value='-1'>Aucun</option>
					<?
						$res = mysql_query("SELECT * FROM tb_pays ORDER BY id_pays");
						while($row = mysql_fetch_assoc($res)){
							echo "<option value='".$row["id_pays"]."'>".$row["pays"]."</option>";
						}
					?>
				</select>
				<label>ville</label>
				<div id='ville' style='display:inline'>
				<select name='ville'>
					<option value='-1'>Choisir un pays</option>
				</select>
				</div>
			</fieldset>
		</form>
	</div>
	
<?php include("bas.php") ?>


et le fichier ajaxville.php
<?php
	echo "<select name='ville'>";
	if(isset($_POST["id_pays"])){
		$id_pays = $_POST["id_pays"];
		mysql_connect("localhost","root","");
		mysql_select_db("base_setlist");
		$res = mysql_query("SELECT * FROM tb_ville WHERE id_pays = $idpays ORDER BY ville");
		while($row = mysql_fetch_assoc($res))
		{
			echo "<option value='".$row["id_ville"]."'>".$row["ville"]."</option>";
		}
	}
	echo "</select>";
?>


merci:D
Afficher la suite 

20/37 réponses

Meilleure réponse
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
1143
4
Merci
il n'y a rien a télécharger

le principe d'AJAX:
- sur un evenement (un onChnage d'une liste par ex) on appelle une fonction Javascript/ajax

qui va en arrière plan, sans recharger la page, appeler un script php sur le serveur en lui passant la valeur selectionnées ds la liste1

- ce script va lire ds la BDD et genrer une liste2 et l'envoyer en réponse à Ajax

- à la réception de la réponse, Ajax va écrire la liste par innerHTML dans un div de ta page

<html>
<head>
<script type="text/javascript">
//fonction AJAX
//partie envoie de la requette, cette fct est appelée sur le onChange de la liste1
function makeRequest(url,id_lire,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_lire); //on vient lire la valeur selectionnée ds la liste1
		data="localisation="+obj.value; //on envoie la valeur au script php en POST
        http_request.send(data);
}

//partie traitement de la réponse
function traitementReponse(http_request,id_ecrire) {
	//qd on recoit la reponse:
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
					// cas avec reponse de PHP en mode texte:
			var reponse=http_request.responseText;
			//alert(reponse); //TEST
			
			//	on va ecrire la réponse, c a d la liste2 dans le div qui a pour id  id_ecrire
			var obj=document.getElementById(id_ecrire);
				obj.innerHTML=reponse;
		} 
		else {
                alert('Un problème est survenu avec la requête.');
        }
    }
}
</script>
</head>
</html>
<table>
<td align="center" style="border:2px solid">
<form action='result-affaire.php' method='POST'>
<select name="localisation" id="id_liste1" onChange="makeRequest('reponsePhpAjax.php','id_liste1','id_div_liste2');">
<!-- on appelle la fct sur le onChange en lui passant l'url du script php appelé,l'id de la liste 1, l'id ou iol faut ecrire la réponse-->
<?php

$sql='SELECT Localisation FROM affaire';
$list=mysql_query($sql) or die("Erreur de connexion au serveur SQL");
echo'<option>Sélectionnez la localisation</option>';
while ($data = mysql_fetch_array($list)){
	echo'<option value='.$data['*'].'>'.$data['Localisation'].'</option>';
}
?>
</select>
<p></p>
<input type="submit" name="affcicher" value="Afficher">
</form>
</td>

<div id="id_div_liste2"><!-- c'est la que par innerHTML AJAX va ecrire la liste2 --></div>

//ce n'est pas le script result-affaire.php  qu'il faut appeler mais par exemple reponsePhpAjax.php

le code de reponsePhpAjax.php:
<?php
	//recup de la valeur passée par Ajax, valeur selectionnée dans la liste 1
	$localisation=$_POST['localisation'];
	//connexion bdd
	mysql_connect......
	mysql_select_db.....
	//requette
	$sql="SELECT * FROM affaire WHERE Localisation='$localisation';";
	$list=mysql_query($sql) or die("Erreur de connexion au serveur SQL");
	$reponse='<select name="nom_affaire">';
	$reponse.='<option>S&eacute;lectionnez le nom de l affaire</option>';
	while ($data = mysql_fetch_array($list)){
		$reponse.='<option value='.$data['idAffaire'].'>'.$data['NomAff'].'</option>';

	}
	$reponse.='</select>';

	//on envoie la reponse, c'est a dire la liste complete ainsi generée à AJAX
	echo $reponse;
?>

Dire « Merci » 4

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 49529 internautes nous ont dit merci ce mois-ci

Messages postés
28
Date d'inscription
mercredi 25 juillet 2007
Dernière intervention
27 février 2009
27
1
Merci
salut, moi aussi je me suis pris la tête avec les listes déroulantes, j'ai un bon tuyau si vous le souhaitez :
http://www.roodali.com/...
http://www.roodali.com/...
ces les 2 seuls exemples que j'ai pu faire fonctionner, bon courage
1
Merci
sel = document.getElementById('pays'); c'est la que ca va pas pourquoi "pays"?
1
Merci
bonsoir;

j'avais le même problème, mais sur firefox seulment;

le probleme :

document.getElementById('ville').innerHTML = leselect;

cette instruction remplace le contenu html de la DIV "ville"; donc le select nomé "livre" sera replacé par un autre, et même si ils ont le même nom (le nouveau et l'ancien select), le firefox ne réussi pas à traiter le nouveau select,

la solution et de garder l'ancien select mais de supprimer son contenu (les options) et le remplacer par un autre, une petite requête sur le "Sheikh" google, j'ai trouver cette "fatwa" :

http://www.dhtmlgoodies.com/index.html?whichScript=ajax_chained_select

c bien fait et réussi,

good luck
enfin une info pertinente sur ce sujet ô combien sensible. merci...
Messages postés
13
Date d'inscription
mardi 12 mai 2009
Dernière intervention
6 juin 2009
1
1
Merci
bonjour redwire,
j'ai le même problème que toi si t' as encore ton code pourra tu le poster SVP !!
1
Merci
Bonjour, j'ai moi aussi un problème avec l'application de ce tutoriel. Quelqu'un pourrait-il m'aider à l'appliquer?? Merci d'avance de votre aide.
1
Merci
Bonjour,

Il y a quelques chose que je n'ai toujours pas compris avec AJAX, quels fichiers telecharger ??

Car je cherche moi aussi à faire une liste déroulante, et faire en sorte qu'une seconde liste déroulante se trouvant sur une autre page affiche certains résultats en fonction de la premiere.


Ma premiere liste déroulante sur index.php :

<table>
<td align="center" style="border:2px solid">
<form action='result-affaire.php' method='POST'>
<select name="Affaire">
<?php
$sql='SELECT Localisation FROM affaire';
$list=mysql_query($sql) or die("Erreur de connexion au serveur SQL");
{echo'<option>Sélectionnez la localisation</option>';}
while ($data = mysql_fetch_array($list))
{echo'<option value='.$data['*'].'>'.$data['Localisation'].'</option>';}
?>
</select>
<p></p>
<input type="submit" value="Afficher">
</form>
</td>


et ma seconde sur result-affaire.php :

$_SESSION['Localisation']=$_POST['Affaire'];
?>

<select name="Localisation">
<?php
if($_SESSION['Localisation']>0)
{
$sql="SELECT * FROM affaire WHERE Localisation='$_SESSION[Localisation]';";
$list=mysql_query($sql) or die("Erreur de connexion au serveur SQL");
{echo'<option>Sélectionnez le nom de l affaire</option>';}
while ($data = mysql_fetch_array($list))
{echo'<option value='.$data['idAffaire'].'>'.$data['NomAff'].'</option>';}
}
?>


Si quelqu'un pouvait m'eclairer parce que je n'ai rien saisi a ce qu'est vraiment AJAX, ce qui je pense pourrait m'etre d'une grande aide !
1
Merci
OK je vous remercie pour cette réponse rapide et efficace.

Seulement maintenant j'ai un autre soucis :
Suite à un choix dans une liste déroulante, sur une nouvelle page s'affiche le nom, l'adresse, le tel et l'e-mail de toutes les occurrences concernées (par le choix fait dans la liste déroulante, qui est un numéro de département).
A coté de chaque suite de données (j'entends par la le nom, l'adresse, le tel et l'e-mail), j'y ai mis un bouton afin qu'ensuite on puisse accéder à d'autres détails de la suite de données choisie.
Seulement j'ai déclaré une variable de session et comme celle ci n'est pas incrémentée elle s'écrase à chaque passage dans la boucle, voici le code :

--resultaff.php--
<?php
session_start();
?>
<html>
<body>
<form action='affinterv2.php' method='POST'>
<?php
$user="root";
$host="localhost";
$bdd="terawatt";
mysql_connect($host,$user) or die("Erreur de connexion au serveur SQL");
mysql_select_db($bdd);

$_SESSION['Localisation']=$_POST['Affaire'];
?>
<table style="border:2px solid">
<tr align="center">
<th width=200 height=35 style="border:1px solid">Département/Pays</th>
<th width=200 height=35 style="border:1px solid">Nom</th>
<th width=200 height=35 style="border:1px solid">Adresse</th>
<th width=200 height=35 style="border:1px solid">Etat</th>
<th width=200 height=35 style="border:1px solid">Intervenants</th>
</tr>
<?php
$sql="SELECT * FROM affaire WHERE Localisation='$_SESSION[Localisation]';";
$list=mysql_query($sql) or die("Erreur de la requête SQL");
while ($Donnees = mysql_fetch_array($list))
{
?>
<tr align="center">
<td width=200 height=35><?php echo $Donnees['Localisation']; ?></td>
<td width=200 height=35><?php echo $Donnees['NomAff']; ?></td>
<td width=200 height=35><?php echo $Donnees['Adresse']; ?></td>
<td width=200 height=35><?php echo $Donnees['Etat']; ?></td>
<td width=200 height=35><input type="submit" value="Voir les intervenants"></td>
</tr>
<?php
$_SESSION['NomAff']=$Donnees['NomAff'];
}
?>
</table>
</form>
</body>
</html>



Et j'aimerais pouvoir l'utiliser dans une reqûete d'une autre page du coup, en voici le code (en phase de test pour l'instant) :

--affinterv2.php--
<?php
session_start();
?>
<html>
<body>
<form action='affinterv.php' method='POST'>
<?php
$user="root";
$host="localhost";
$bdd="terawatt";
mysql_connect($host,$user) or die("Erreur de connexion au serveur SQL");
mysql_select_db($bdd);

$sql="SELECT Localisation, NomAff, Adresse, Etat FROM affaire WHERE Localisation='$_SESSION[Localisation]' AND NomAff='$_SESSION[NomAff]';";
$list=mysql_query($sql) or die("Erreur de la requête SQL");
$Donnees = mysql_fetch_array($list);

echo $Donnees['NomAff'];
?>
</form>
</body>
</html>




J'ai pensé à faire un tableau mais je n'ai pas su l'exploiter cela ne m'affiche rien de rien, alors que comme ça s'affichera seulement sur affinterv2.php, le nom de la derniere suite de données passée dans le tableau de resultaff.php. Et cela meme si je clique sur le bouton d'où, par exemple, le nom est "tartempion" qui se trouve en debut ou milieu du tableau, j'aurais toujours le nom du dernier inscrit sur le tableau.

Donc voila si vous pouviez m'aider, car je ne comprends rien à ces tableaux...
Merci par avance.
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
1143
1
Merci
NON , dans cette partie:

//fonction AJAX
//partie envoie de la requette, cette fct est appelée sur le onChange de la liste1
function makeRequest(url,id_lire,id_ecrire){
.....


il ne faut surtout pas remplace id_lire, id_ecrire ce sont des noms de variable correspondant aux argulents passés à la fonction, ainsi la fonction est "universelle"

par contre dans la partie appel de la fct:

<form action='result-affaire.php' method='POST'>
<select name="localisation" id="id_liste1" onChange="makeRequest('reponsePhpAjax.php','id_liste1','id_div_liste2');">
<!-- on appelle la fct sur le onChange en lui passant l'url du script php appelé,l'id de la liste 1, l'id ou iol faut ecrire la réponse-->


il faut bien mettre les valeurs correspondant au id= de la liste 1 et à id= du div ou tu veux ecrire
1
Merci
Pour parler plus schématisé je vais dire,j'essaye en fait de faire en sorte que si je choisis directement dans la liste fille que la liste mère se définisse toute seule.

Par exemple si dans ma liste 2 j'ai toutes mes "affaires" sans les trier par "Localisation" et que j'en choisisse une de Toulouse, que ça m'affiche directement dans la liste 1 que c'est une affaire de Toulouse.

Je sais pas si je me suis bien expliqué ^^'
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
1143
1
Merci
ha oui je pige

liste 1 les noms de ville


liste 2 toutes les affaires

si on choisi Toulouse dans la liste1 => la liste 2 par ajax n'a plus que les affaire de Toulouse

deuxième possibilité

si on choisit directement une affaire de Toulouse dans la liste2 Toulouse va apparaitre dans la liste1

Alors pour faire ça:

tu mets ta liste 1 dans un <div id="id_premiere_liste">

tu mets comme je t'ai dit ci dessus une liste 2 dans le div ou Ajax va ecrire plus tard construite avec une boucle while

tu lui mets un onChange qui appele la fonction ajax mais cette fois ci en inversant les id passés en arguments lors de l'appel fct

ii_lire=id_liste2 id_ecrire=id_premiere_liste

cette fonction Ajax va appeler une autre url, un script php qui va lire dans la bdd les villes et mettre selected celle qui correspond

c'est un peu compliqué a expliquer mais c'est jouable
Messages postés
255
Date d'inscription
jeudi 16 décembre 2004
Dernière intervention
6 août 2008
101
0
Merci
personne? je pige toujours pas pourquoi ça marche pas...

merci...
g exactement le meme soucis... pourtant le tuto à l'air clean. je n'arrive meme pas à faire marcher l'exemple donné (sans rienc changer), la deuxième liste reste vite qd on change la première... as suivre...
> spalc -
suite a mon précédent post - du nouveau (en bien)
J'ai eu le meme soucis en recopiant exactement le code de SIDDH sur developpez.com. Impossible de le faire marcher, la deuxième liste reste vide.
Par contre en téléchargeant l'archive zip contenant toutes les sources de l'article de SIDDH, ca marche (le code est par endroit différent que celui du tutoriel).
Il faudra juste mettre en commentaire "alert(xhr.readyState);" dans auteurs.php pour éviter les alertes, et ca marche très bien (pour moi en tout cas sous WAMP).
ol migo como te illemasse
0
Merci
Le problème peut être dû à l'emplacement du fichier ajax.php. J'avais mis mon fichier ajax.php dans le dossier ou j'en avais besoin mais en fait il était impossible de l'appeler, j'ai donc mis mon ajax.php dans ma racine. ++
0
Merci
Bonsoir,

dans ta page:

<div id='ville' style='display:inline'>
<select name='ville'>
<option value='-1'>Choisir un pays</option>
</select>
</div>


tout ce qui est entre <div id='ville' style='display:inline'> et </div> ne sert à rien puisque tu va écrire par la réponse Ajax <select .... et toutes les options

Mais ce n'est pas ça qui gène.

Essayes en mettant comme requette dans ajax.ph:

		$res = mysql_query("SELECT * FROM tb_ville WHERE id_pays = '".$id_pays."' ORDER BY ville");


car tu as mis $id_pays = $_POST["id_pays"]; un peu plus haut, donc pas bonne variable

de plus il faut des ' de part et d'autre de la valeur à tester.

@lain
Alain_42
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
1143 > Nikoninho
Messages postés
57
Date d'inscription
mardi 27 mars 2007
Dernière intervention
16 mai 2008
-
Salut Nikoninho,

Reponse à ta première question:

<?php
// construction du champ texte
//en faisant   .=    ça concatène la chaine
$aff="";
$aff.="<strong><font color='blue'>Adresse : </font></strong>";
$aff.="<input name='Sourcedelademande' id='sourcedemande' value='".$jour."/".$mois."/".$annee."'>";
// envoi reponse Php a Ajax	
	echo $aff;
?>


j'ai pas mal modifié ta 3 ième ligne $aff.= il ne faut pas remttre <?php puisque tu es déjà dans le php
Nikoninho
Messages postés
57
Date d'inscription
mardi 27 mars 2007
Dernière intervention
16 mai 2008
3 > Alain_42
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
-
En fait ça marche si je met le onchange dans le "select".
==> ça affiche la date à chaque option

J'aimerais que la date s'affiche uniquement lorsque l'on séléctionne l'option "sge" dnas le menu déroulant.

merci pour ta réponse
Alain_42
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
1143 > Nikoninho
Messages postés
57
Date d'inscription
mardi 27 mars 2007
Dernière intervention
16 mai 2008
-
Grr j'ai mélangé les deux réponses !
Nikoninho
Messages postés
57
Date d'inscription
mardi 27 mars 2007
Dernière intervention
16 mai 2008
3 > Alain_42
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
-
RE!!

Bon c'est bon j'ai tout réadapté et tout marche nickel!!

- dernier soucis : sous la version d'ie que j'utilise dans l'entreprise lorsque je selectionne une valeur dont je ne fais aucun traitement il m'affiche quand même le div... c'est à dire un leger espace vide aprés le champ...
[à la place du champs qui devrait apparait quand on fait la selection de l'élément associé au traitement (sge...)]

Tu m'as suivi?

Sur la version que j'utilise sur mon portable je n'ai pas ce probleme... cela vient de la version d'internet explorer...
( je suis connecté au réseau de l'entreprise avec mon pc portable et avec un pc de l'entreprise aussi... ce qui me permet de lancer mon application sur le réseau à partir de l'un ou l'autre des ordinateurs)

De même j'ai un autre probléme du même type :
- sur mon pc pas de soucis lorsque je tape "fra" pour rechercher la france dans ma liste de selection c'est bon je tombe direct dessus mais par contre si je me met sur celui ci sa ne marche plus ==> ici j'aurais tous les pays qui commencent par un "a" c'est à dire la dérnière lettre tapée... pourquoi?

Peut-etre y a t-il une option dans les params d'ie???

MERCI
Alain_42
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
1143 > Nikoninho
Messages postés
57
Date d'inscription
mardi 27 mars 2007
Dernière intervention
16 mai 2008
-
lorsque je selectionne une valeur dont je ne fais aucun traitement il m'affiche quand même le div...

si tu as mis onChange dans la balise <select automatiquement tu appelles par Ajax le script php

donc il te répond. Vois si en mettant seulement dans le cas sans traitement:

$aff=""; 
echo aff; 

ça supprimes ton Pb ?

ou alors essayes en remplaçant ton <div id="liste2"></div> par <span id="liste2"></span> ??

- sur mon pc pas de soucis lorsque je tape "fra" pour rechercher la france dans ma liste de selection c'est bon je tombe direct dessus mais par contre si je me met sur celui ci sa ne marche plus ==> ici j'aurais tous les pays qui commencent par un "a" c'est à dire la dérnière lettre tapée... pourquoi?

la je ne vois pas trop, il faudrait que tu me donnes le code des deux fichiers. En MP si tu veux.
0
Merci
J'ai aussi pensé à nommer la balise <input> seulement ça ne fonctionne pas non plus....
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
1143
0
Merci
Dans ton cas il n'y a aucun interêt à utiliser les sessions

il faut mettre un lien a chaque ligne, si tu préféres un bouton tu peux toujours mettre une image de bouton à la place

-resultaff.php--

<html>
<body>
<form action='affinterv2.php' method='POST'>
<?php
$user="root";
$host="localhost";
$bdd="terawatt";
mysql_connect($host,$user) or die("Erreur de connexion au serveur SQL");
mysql_select_db($bdd);

//$_SESSION['Localisation']=; 
?>
<table style="border:2px solid">
<tr align="center">
<th width=200 height=35 style="border:1px solid">Département/Pays</th>
<th width=200 height=35 style="border:1px solid">Nom</th>
<th width=200 height=35 style="border:1px solid">Adresse</th>
<th width=200 height=35 style="border:1px solid">Etat</th>
<th width=200 height=35 style="border:1px solid">Intervenants</th>
</tr>
<?php
$sql="SELECT * FROM affaire WHERE Localisation='$_POST['Affaire'];";
$list=mysql_query($sql) or die("Erreur de la requête SQL");
while ($Donnees = mysql_fetch_array($list))
{
?>
<tr align="center">
<td width=200 height=35><?php echo $Donnees['Localisation']; ?></td>
<td width=200 height=35><?php echo $Donnees['NomAff']; ?></td>
<td width=200 height=35><?php echo $Donnees['Adresse']; ?></td>
<td width=200 height=35><?php echo $Donnees['Etat']; ?></td>
<!-- on met un lien qui va appeler la page affinterv2.php en lui passant par l'url les parametres localisation et nom-->
<td width=200 height=35><a href="affinterv2.php?loc=<?php echo $Donnees['Localisation']; ?>&nom=<?php echo $Donnees['NomAff']; ?>">Voir les intervenants</a></td>
</tr>
<?php
//$_SESSION['NomAff']=$Donnees['NomAff'];
}
?>
</table>
</form>
</body>
</html> 


et affinterv2.php

<html>
<body>
<form action='affinterv.php' method='POST'>
<?php
if(issset($_GET['loc'])) {
	$localisation=$_GET['loc'];
}
if(issset($_GET['nom'])) {
	$nomAff=$_GET['nom'];
}
$user="root";
$host="localhost";
$bdd="terawatt";
mysql_connect($host,$user) or die("Erreur de connexion au serveur SQL");
mysql_select_db($bdd);

$sql="SELECT Localisation, NomAff, Adresse, Etat FROM affaire WHERE Localisation='$localisation' AND NomAff='$nomAff';";
$list=mysql_query($sql) or die("Erreur de la requête SQL");
$Donnees = mysql_fetch_array($list);

echo $Donnees['NomAff'];
?>
</form>
</body>
</html>

0
Merci
Encore merci de votre réponse qui est elle aussi tres efficace, seulement je ne comprends pas pourquoi du coup on parle de $_GET dans affinterv2.php alors que resultaff.php contient un formulaire avec $_POST ??
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Dernière intervention
13 février 2017
1143
0
Merci
on parle de $_GET dans affinterv2.php alors que resultaff.php contient un formulaire avec $_POST

parce que le script est appelé non pas par le <formulaire mais par le lien et on récupére l'info dans l'URL de ce lien
0
Merci
Ok ok je vois, bah je te remercie encore une fois Alain, et te souhaite une bonne soirée.

En te disant peut etre a une prochaine ^^, surement meme je pense.



Merci beaucoup de ton aide et de ton efficacité :)
0
Merci
Bonjour, encore moi, j'aurais besoin d'un eclaircissement sur le code ajax que tu m'as donné, les "id_lire", et "id_ecrire" sont bien à remplacer par les id de chaque liste ?? Et "url", par reponsePhpAjax.php( dans ton exemple) c'est bien ça ? ou par la nom de la page dans laquelle il y a ce code ??

Merci