Formulaire et AJAX et PHP
1 message • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Formulaire et AJAX et PHP
J'ai un formulaire avec une liste déroulante contenant des noms de pays, quand j'en choisis un une seconde liste déroulante arrive en dessous avec la liste des états pour le pays choisit.
Jusque là tout fonctionne.
Maintenant quand je choisis un état dans la seconde liste, je cherche à faire venir une troisième liste avec les villes pour l'état voulu mais là, ça ne fonctionne pas.
Mes données proviennent biensur de différentes tables et les listes sont générées en PHP.
Voici le code :
Le fichier ajax.js
Le fichier ajax.php pour générer les listes :
La méthode liste_select() génère une liste déroulante.
Et la section de la page php avec la première liste contenant les pays :
Ce morceau de code fait partie d'une méthode dans une classe qui ne fait qu'afficher le formulaire avec ma liste plus quelques autres champs texte tout simples
Sinon, je remarque un truc :
Dans ajax.js si je commente la fonction GetIdState() et que dans l'url de la fonction sndReq je vire ceci +'&IDState='+IDState tout fonctionne jusqu'à la seconde liste (marche toujours pas pour la 3eme liste) mais si je laisse ce code plus rien ne tourne (plus d'accès à la seconde liste).
Jusque là tout fonctionne.
Maintenant quand je choisis un état dans la seconde liste, je cherche à faire venir une troisième liste avec les villes pour l'état voulu mais là, ça ne fonctionne pas.
Mes données proviennent biensur de différentes tables et les listes sont générées en PHP.
Voici le code :
Le fichier ajax.js
- Code: Tout sélectionner
function createRequestObject()
{
var ro;
ro = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
return ro;
}
var http = createRequestObject();
function sndReq(param,arg,arg2)
{
IDCountry = GetIdCountry();
IDState = GetIdState();
http.open('get', 'ajax.php?param='+param+'&IDCountry='+IDCountry+'&IDState='+IDState);
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse()
{
if(http.readyState == 4) {
var response = http.responseText;
var update = new Array();
if(response.indexOf('|') != -1) {
update = response.split('|');
document.getElementById(update[0]).innerHTML = update[1];
}
}
}
function GetIdCountry()
{
var ID_Country = document.getElementById('countryList').options[document.getElementById('countryList').selectedIndex].value;
return ID_Country;
}
function GetIdState()
{
var ID_State = document.getElementById('stateList').options[document.getElementById('stateList').selectedIndex].value;
return ID_State;
}
Le fichier ajax.php pour générer les listes :
- Code: Tout sélectionner
<?php
switch($_REQUEST['param']) {
/** ******************************************************************************
* Generation de la liste des etats
*/
case 'State':
$new_sql = 'SELECT ID_State, StateName
FROM '.$data->T_State.'
WHERE ID_Country = '.$_REQUEST['IDCountry'];
$StateList = '<select size="1" onChange="sndReq(\'City\');" id="stateList">';
$StateList .= $data->liste_select('ID_State', array('ID_State', 'StateName'), $data->T_State, 'StateName', $ID_Country, false, '', $new_sql, false);
echo 'State|<br>'.$listeDepartement;
break;
/** ******************************************************************************
* Generation de la liste des villes
*/
case 'City':
$new_sql = 'SELECT ID_City, CityName
FROM '.$data->T_City.'
WHERE ID_State = '.$_REQUEST['IDState'];
$listeVille = $data->liste_select('ID_City', array('ID_City', 'CityName'), $data->T_City 'CityName', '', false , '', $new_sql, true);
echo 'City|<br>'.$listeVille;
break;
}
?>
La méthode liste_select() génère une liste déroulante.
Et la section de la page php avec la première liste contenant les pays :
- Code: Tout sélectionner
$form .= '<tr bgcolor="#FFFFFF">
<td align="right">Pays :</td>
<td><select size="1" onChange="sndReq(\'State\');" id="countryList">
'.$this->liste_select('champ[ID_Country]', array('ID_Country', 'CountryName'), $this->T_Country, 'CountryName', $DefaultCountry, false, '', '', false).'
<div id="State"></div>
</td>
</tr>';
Ce morceau de code fait partie d'une méthode dans une classe qui ne fait qu'afficher le formulaire avec ma liste plus quelques autres champs texte tout simples
Sinon, je remarque un truc :
Dans ajax.js si je commente la fonction GetIdState() et que dans l'url de la fonction sndReq je vire ceci +'&IDState='+IDState tout fonctionne jusqu'à la seconde liste (marche toujours pas pour la 3eme liste) mais si je laisse ce code plus rien ne tourne (plus d'accès à la seconde liste).
1 message • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Référencement et Web 2.0
- Google Web Toolkit, pour créer des applications en AJAX
- Yahoo Maps API
- Google rejoint le projet Open AJAX créé par IBM
- Fin de l'API Google Search SOAP
- Définition(s) du Web 2.0
- Google ferme l'API SOAP aux nouveaux développeurs
- Optimisation du référencement d'un site en AJAX
- Ajouter un moteur de recherche d'images sur son site
- Nouvel outil dans le forum WebRankInfo
Consultez la description détaillée des produits ou services de Google suivants : Google Web Toolkit
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

le forum