begin process at 2012 05 29 15:46:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

PHP/Javascipt et formulaire dynamique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

PHP/Javascipt et formulaire dynamique

jeudi 20 août 2009 à 18:01:56 | PHP/Javascipt et formulaire dynamique

tiquisrd

Bonjour,
je suis entrain de monter une page PHP avec un formulaire qui contient, entre autre, une liste de départements (requête PHP/MySQL).
Je souhaiterais pouvoir afficher une liste des villes du département une fois celui-ci sélectionné mais sans avoir à recharger complètement le formulaire.
En cherchant par-ci par-la, j'ai trouvé 1 technique utilisant XMLHttpRequest(); et innerHTML mais il semble (http://www.siteduzero.com/tutoriel-3-4552-le-dom.html) que cette technique ne respecte pas les standards du web et soit IE propriétaire...
Il est expliqué dans ce site une autre méthode pour afficher du texte utilisant appendChild.
Cependant, je ne vois pas comment rendre cela interactif!
En effet, ce qui est ajouté par le appendChild est prévu et ne permet pas (il me semble) d'inclure une requête PHP.
Quelqu'un pourrait-il m'aider?!!
Merci
Renan

vendredi 21 août 2009 à 06:05:19 | Re : PHP/Javascipt et formulaire dynamique

Bul3

Membre Club

Bonjour,

>>1 technique utilisant XMLHttpRequest();
ajax pour les intimes

>>et innerHTML mais il semble que cette technique
>>ne respecte pas les standards du web
>>et soit IE propriétaire...
ajax et innerHTML ne sont pas exclusif IE
et en quoi ne respecteraient-il pas les
soit-disant standards du web ?

>>une autre méthode pour afficher du texte utilisant appendChild.
oui, on peut aussi. createElement + appendChild
c'est un peu "plus compliqué", enfin, si on peut dire,
mais innerHTML risque de dégrader les performances
si de nombreux ajouts consécutifs sont faits

>>je ne vois pas comment rendre cela interactif!
je ne comprend pas bien la question ?
rien à changer sauf remplacer l'affichage
du résultat de ajax.

pour l'instant, cela doit renvoyer du html
à afficher directement ( je ne dis pas que
ce n'est pas bien, mais ajax est fait pour
retourner des informations qui seront traitées
par le javascript, pas du html ) renvoyez
les données en php nécessaires à la construction
par createElement+appendChild

>>appendChild est prévu et ne permet pas
>>d'inclure une requête PHP.
ça ne veut rien dire ça
appendChild ajoute des éléments
une requête php n'a rien à voir
la réponse du php, par contre, devrait retourner
des données pour que le javascript les traite
et pourquoi pas fasse des appendChild

un exemple de select liées ici
on construit le 2ème select non pas avec innerHTML
mais en utilisant select.length, select.options[index].text...
qu'on peut remplacer par createElement+appendChild
( si on y tient, pour le plaisir )

Cordialement [mon Site] [M'écrire] Bul

samedi 22 août 2009 à 15:26:38 | Re : PHP/Javascipt et formulaire dynamique

tiquisrd

Bonjour,
merci pour cette réponse!
J'ai passé un peu de temps à décortiquer tes exemples, et j'ai toujours quelques problèmes:
- la méthode "PHP pure" nécessite, si j'ai bien compris, de recharger la page pour mettre à jour le 2° select, ce qui est ennuyeux dans le cas d'un formulaire à plusieurs champs. Je me suis donc penché sur la méthode java...
- j'ai suivi, il me semble, les instructions et honteusement copié... mais cela ne marche toujours pas.
Le fichier correspondant au 2° select (ajax1.php) fonctionne lorsque je l'appelle directement dans le navigateur:

Code PHP :

<?php require_once('../../Connections/bd.php'); ?>
<?php
header('Content-type:text/html;charset=ISO-8859-1');
//Liste des villes du département
mysql_select_db($database_bd1, $bd1);
$code='WHERE dpt_ville="' . $_GET["tb2"] . ' " ';
$query_ville1 = "SELECT * FROM mdm_ville_cat " . $code . "ORDER BY nom_ville" ;
$ville1 = mysql_query($query_ville1, $bd1) or die(mysql_error());
$row_ville1 = mysql_fetch_assoc($ville1);
$totalRows_ville1 = mysql_num_rows($ville1);
$t="";
for ($nb=0;$nb<$totalRows_ville1;$nb++)
{
$i=mysql_result($ville1,$nb,"id_ville");
$t.="\t".$i;
}
echo $t;
?>


Le code du 1° select fonctionne aussi puisqu'il affiche bien ce que je veux voir:
Code PHP :
<?php

//Liste des departements
mysql_select_db($database_bd1, $bd1);
$query_departement1 = "SELECT * FROM mdm_departement_cat ORDER BY nom_dpt ASC";
$departement1 = mysql_query($query_departement1, $bd1) or die(mysql_error());
$row_departement1 = mysql_fetch_assoc($departement1);
$totalRows_departement1 = mysql_num_rows($departement1);
?>
<select name="tb1" id="tb1" size=3 onchange='appel();'>
<?php
for ($nb=0;$nb<$totalRows_departement1;$nb++)
{ $i=mysql_result($departement1,$nb,"id_dpt");
$j=mysql_result($departement1,$nb,"nom_dpt");
echo '<option value="' . $i . '">'.$j.'</option>';
}
?></select>
<select name="tb2" id="tb2" size=3></select>


Pourtant, lorsque je clique sur un numéro, rien ne se passe...

La fonction est après mise à jour avec mes variables:
Code Javascript :
<script type="text/javascript">

function xmlhttp()
{ var x;
try { x = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { try { x = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { x = new XMLHttpRequest(); }
catch (e) { x=false; }
}
}
return x;
}
function appel()
{ var xml = xmlhttp();
if(!xml)
{ alert("XmlHttpRequest non supporté"); }
else { xml.onreadystatechange = function()
{ if(xml.readyState==4)
{ var opt=xml.responseText.split("\t");
tb2.length=0;
for ( var n=1;n<opt.length;n++ )
{ tb2.length++;
tb2.options[tb2.length-1].text=opt[n];
}
}
}
xml.open("GET", "./javascript/ajax1.php?tb2="+tb1.options[tb1.selectedIndex].text, true);
xml.send(null);
}
}
</script>


Aurais-tu une idée??
Merci!
Renan

samedi 22 août 2009 à 15:52:49 | Re : PHP/Javascipt et formulaire dynamique

Bul3

Membre Club
Réponse acceptée !


>>la méthode "PHP pure" nécessitee recharger la page
disons que la méthode 2 recharge la page,
en php, c'est ainsi, sauf si on mettait
le résultat dans un iframe ( caché ) et
qu'on réutilisait cet iframe
mais là : ajax est là pour ça

>>ce qui est ennuyeux dans le cas d'un formulaire
>>à plusieurs champs
ça dépend de comment on fait cela...

>>Pourtant, lorsque je clique sur un numéro,
>>rien ne se passe...
si si ( l'impératice )
il se passe toujours quelque chose
ne serait-ce qu'un message d'erreur !

il faut déterminer d'où ça vient !
erreur javascript lors de l'appel ? du retour ?
erreur php pour traiter le paramètre transmis ?
dans la recherche ? dans la génération de la réponse ?
erreur dans les url ?

aucune raison que cela ne fonctionne pas
( mon exemple fonctionne )
nous n'avons pas toutes les billes pour tester
et moi,sans tester, je suis bien trop limité
pour voir ce qui cloche dans les script
que vous nous mettez
regardez les choses au fur et à mesure
des alert, echo bien placés.
et


samedi 22 août 2009 à 20:00:35 | Re : PHP/Javascipt et formulaire dynamique

tiquisrd

J'ai installé FireBug! c'est vraiment très utile!! Merci!
Mais malheureusement, je ne comprends rien au Javascript...
Pourrais-tu me dire ce qui cloche quand on a :

tb1 is not defined
xml.open("GET", "./jav...options[tb1.selectedIndex].text, true);\n

pourtant la table est définie juste après le script, cf le code collé au dessus!
Merci!

dimanche 23 août 2009 à 10:40:58 | Re : PHP/Javascipt et formulaire dynamique

Bul3

Membre Club

>> xml.open("GET", "./javascript/ajax1.php?tb2="+tb1.options[tb1.selectedIndex].text, true);

tel que c'est fait là, ça appelle le php
"./javascript/ajax1.php"
( donc dans le répertoire où l'on est, dans
le sous-répertoire "javascript", le php "ajax1.php" )

tb1, c'est le "1er" select
qui donc doit être de la forme <select name="tb1" id="tb1" ...>
ce serait mieux, d'ailleurs, de faire

var t1=document.getElementById("tb1");
xml.open("GET", "./javascript/ajax1.php?tb2="+t1.options[t1.selectedIndex].text, true);



>>pourtant la table est définie juste après le script,
ah... vous avez oublié que le html/javascript,php...
sont des langages interprétées ?
les lignes sont exécutées dans l'ordre où elles
se présentent !
donc cet ordre doit être donné après le select

>>je ne comprends rien au Javascript...
ben.... si vous voulez utiliser, il faudrait
vous y mettre ! non ?
entre nous, le javascript est toujours facultatif,
on peut toujours s'en passer, pourquoi vouloir
utiliser si on ne connait pas ?



Cette discussion est classée dans : dynamique, php, formulaire, liste, javascipt


Répondre à ce message

Sujets en rapport avec ce message

Creation liste dynamique php [ par houloul1 ] Bonjour à tous ,et merci d'avoir pris le temps de lire ce message.Mon souci est le suivant :je voudrai qu'apres avoir saisi un code postal cela affich formulaire dynamique [ par refkaben ] Bonjour et meilleurs voeux pour tout monde. Je veux faire un formulaire dont les champs s'ajoute en cliquant sur un bouton.J'ai créé une fonction en j Formulaire et frame [ par abcxtreme ] Bonjour à tous, J'ai le sousci suivant : J'ai un index.php qui lance deux fichiers .php 1 - contient sous forme de liste le contenu succint d'une ta Checkbox et formulaire dynamique [ par petitelarve ] bonjour, Je cherche un moyen d'afficher des liste et  des textearea suite au check sur une checkbox.Par exemble , si on click sur la checkbox Auteur, Liste déroulante dynamique PHP/AJAX [ par Vins974 ] Bonjour à tous !!! J'ai besoin de votre aide svp .. Je crée un site , et j'ai besoin d'insérer 3 listes déroulantes dynamiques. Je m'explique <img sr Formulaire dynamique [ par zebu238 ] Bonjour à tous ,et merci d'avoir pris le temps de lire ce message.Mon souci est le suivant :je voudrai qu'apres avoir saisi un code postal cela affich JAVASCRIPT ET PHP [ par daris ] Bonjour j'ai un code javascript  qui returne une variable determination et je voudrai recuperer determination mais en php dans la même page.Merci d'av liste de selection [ par amenesca ] Bonjour à tous, Mon formulaire (en php) contient des champs de texte à remplir ainsi qu'une liste de sélection.je voulais changer la deuxième partie d Session, javascript, php [ par nico1214 ] Bonjour,Je ne sais pas si je suis dans le bon thème...Je voudrais savoir s'il est possible de "retenir" une variable et sa valeur en javascript. En ph Aide 3eme liste dynamique ??? [ par morpheus22170 ] bonjour j'arrive à faire 2 listes dynamiques, c'est à dire quand je choisis la section infomatique, j'ai les catégories souris-écrans-unités-imprimant


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,789 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales