[ajax] listes liées

Fermé
redwire Messages postés 254 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 6 août 2008 - 17 sept. 2006 à 15:16
 Denis - 1 mars 2012 à 17:21
J'ai utilisé la méthode exposée dans le tuto https://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

36 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié le 18 nov. 2019 à 13:00
il n'y a rien a télécharger

le principe d'AJAX:
- sur un evenement (un onChange 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>
<body>
<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>
</table>
<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

</body>
</html>


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é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;
?>
4
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 !
2
sel = document.getElementById('pays'); c'est la que ca va pas pourquoi "pays"?
1
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
1
enfin une info pertinente sur ce sujet ô combien sensible. merci...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
black-ice-50 Messages postés 13 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 6 juin 2009 1
6 juin 2009 à 14:32
bonjour redwire,
j'ai le même problème que toi si t' as encore ton code pourra tu le poster SVP !!
1
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
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();
?>
<[https://www.commentcamarche.com/contents/498-html-langage 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.
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié le 18 nov. 2019 à 12:51
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',<bold>'id_liste1','id_div_liste2'</bold>);">
<!-- 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
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é ^^'
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
8 mars 2010 à 17:28
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
1
redwire Messages postés 254 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 6 août 2008 91
18 sept. 2006 à 18:04
personne? je pige toujours pas pourquoi ça marche pas...

merci...
0
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...
0
spalc > spalc
11 mai 2007 à 12:07
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).
0
ol migo como te illemasse
0
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
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 = <bold>'".$id_pays."'</bold> 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
0
Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008 3
24 avril 2008 à 16:17
Salut alain42!

Je suis attentivement tes discussions en relations avec les listes déroulantes depuis un moment ==> un grand bravo pour ta patience!!
J'ai essayé de réutiliser ton code car je suis débutant et stagiaire, et que ce dont j'ai besoin est exactement la solution que tu proposes!!

Par contre je rencontre un petit soucis au niveau de ma deuxiéme requete. En effet tout fonctionne trés bien jusqu'a la selection dans la premiere liste, ensuite le navigateur m'affiche un message d'alerte "un probléme est survenu au niveau de la requete"!!
J'ai essayé de retourner cette requete dans tous les sens mais ça ne marche pas!!

J'ai vu que tu as "sauvé" pas mal de personnes, pourraIs-tu en sauver une de plus STP???

je te donnerais plus de renseignements dans mon prochain post si tu me réponds ;)

Merci
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008
24 avril 2008 à 16:36
Salut,

oui je peux te donner un petit coup de main si tu veux.

Quel est ton pb ?

@lain
0
Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008 3 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
24 avril 2008 à 16:53
C'est génial!! j'ai réussi à l'adapter merci beaucoup!!!!!!!
J'ai bataillé toute la journée ;)

J'aurais peut-être besoin d'aide un peu plus tard pour quelques conseils.

En tout cas bravo c'est super comme code!

Encore merci
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008
24 avril 2008 à 16:55
C'est vrai que l'Ajax quand on y a goutté ??
0
Nikoninho Messages postés 57 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 16 mai 2008 3 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
25 avril 2008 à 10:42
Salut ALAIN!

Je me permet de te re-déranger pour te poser quelques petites questions :

- Je voudrais afficher (dans le rep_PhpAjax.php) le titre de la seconde liste déroulante comme suit :
<strong><font color="blue">Adresse : </font></strong>
Comment dois-je m'y prendre ?

- Je souhaiterais effectuer une autre application de ton code, je m'explique :
Je souhaite faire apparaître un champs de texte avec une valeur dedans lorsque l'on fait un choix (et uniquement ce choix la) dans la premiere liste déroulante....

J'ai essayé de réutiliser ton code mais je ne suis pas parvenu à le faire marcher, car il est vrai que je n'ai pas tout compris!!
Je te montre les parties de code que j'ai réadapté :

CODE :

branchement.php (qui remplace "listes_liees.php")

<form name="test1" method="post" action="branchement.php"  >

<strong><font color="blue">Source demande : </font></strong>
	<select name="Sourcedelademande" onsubmit="document.test1.submit();" />
	<option value=" "> </option>			
			<option value="SGE" id="sge" onChange=
"makeRequest('datesge.php','sge','datesge')"> SGE </option>
		
			<option value="MAIL" > MAIL </option>
			
			<option value="COURRIER" > COURRIER </option>
				
			<option value="1DG" > 1DG </option>
			
			<option value="CAHORS" > CAHORS </option>
						
			<option value="TELACTF" > TEL ACTF </option>
					
			<option value="PhysiqueATCF" > Physique ATCF </option>
				
			<option value="PôleConseil" > Pôle Conseil </option>
					
			<option value="FAX" > FAX </option>
			
	</select>

<div id="datesge">
	<!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->
	</div>


datesge.php (Qui remplace rep_PhpAjax.php)

<?php
// construction du champ texte
$aff="";
$aff=$aff."
<input name='Sourcedelademande' id='sourcedemande' value="
<?php echo $jour;echo "/";echo $mois;echo "/";echo $annee;?>">
// envoi reponse Php a Ajax	
	echo $aff;
?>

MERCI
0
J'ai aussi pensé à nommer la balise <input> seulement ça ne fonctionne pas non plus....
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié le 18 nov. 2019 à 12:49
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
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 ??
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 mars 2010 à 17:23
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
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
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
0
En effet ça marche beaucoup mieux :) J'avoue avoir quelques difficultés à comprendre l'ajax et tes conseils et explications m'aident beaucoup !

Merci encore
0
J'ai trouvé.... =D
0
Moi j'ai script ajax telecharger pour liste liée, le dexieme niveau depend du premier niveau mon probleme c'est que lorsque je choisie valeur dans le premier champ le deuxieme niveau reste vide.

Comment faire pour que je losrque je choisie valeur dans premier niveau j'aurais resultat?
0