Forum Clubic

Comment écrire une fonction onchange dans mon php ?

bonjour, voila j’ai un nouveau soucis avec php :frowning: ! en plus d’être novice, je cumule avec une difficulté de plus le javascript et là je suis un inculte !
Voila je résume :
j’ai 2 tables sur mysql, 1 table T_ville avec uniquement les villes (une rubrique donc que j’ai appelé ville)
une 2ème table T_contact avec 3 rubriques ville , nom et tél.
Lorsque je sélectionne par une option value la ville, je voudrais avoir dans le deuxième champs du formulaire uniquement les contacts correspondants à la ville choisie.
je sais que je dois utiliser la fonction onchange mais je ne sais pas du tout comment faire pour créer cette fonction ni la syntaxe et comment on l’insère dans mon php je suppose que c’est après le select name du deuxième champs.
Alors j’ai vu énormément de forum traitant ce sujet mais soit ça ne correspondait pas vraiment soit c’était trop compliqué et confus pour moi ! donc s’il pouvait y avoir quelque chose de simple pour que je puisse me sortir de ce problème
d’avance merci

Concrètement?

Quand tu change d’élément dans ton formulaire pour choisir les villes, tu lances un événement “onchange” auquel tu peux rattacher un gestionnaire d’événement (une fonction etc).

Genre …

Pour le reste, soit la mise à jour des villes, plusieurs choix :

  1. AJAX pour mettre à jour la seconde liste en demandant à PHP d’afficher la liste des contacts dans la ville
  2. envoyer le formulaire au complet à PHP, et gérer le changement de ville

Etc.

A toi de voir…

oui j’avais hésité de passer par un submit de façon à renvoyer le formulaire php mais il me semblait que de faire un onchange était plus facile, on restait sur le client et donc plus rapide. Ajax je ne connais pas du tout j’ai regardé sur les forums mais honnêtement j’ai beaucoup de mal à comprendre. Je n’ai pas envi de faire du copier coller de bout de codes qui peut être fonctionnerait sans comprendre ce que je fais. C’est la raison pour laquelle une fonction javascript me parraissait être la meilleure solution. Inconvénient syntaxiquement je ne sais pas trop l’utiliser c’est pourquoi je suis ici à demander les compétences de personnes qui auraient l’habitude de ça.
c’est la fonction onchange() qui me pose problème, comment l’écrire?

Pour le onchange, faut soit que tu renvoie le formulaire, soit Ajax. Sinon, tu charges tout tes contacts, et tu filtres uniquement en javascript. ça peut être plus lourd, et long en exécution.

AJAX, ça reste du Javascript. Avec prototypejs:

Genre onchange=“updateContactList(this, this.form );”

puis dans updateContactList() :

function updateContactList(countryForm, form) {
  countryForm.enabled = false;
  form.enabled = false; // XXX faudrait désactiver aussi le formulaire
  launchAjaxEvent(function (r) {
    // ajout des options AJAX
    $('contactForm').innerHTML = r.html; // on va dire code HTML du résultat
    countryForm.enabled = true;    
    form.enabled = true; // XXX faudrait réactiver aussi le formulaire
  });  
}

Documente toi sur AJAX, c’est que j’ai pas la doc, pas trop le temps de compléter l’exemple. Et il te restera plus qu’en php à ajouter la partie qui va te renvoyer du code HTML (j’aime pas trop perso) du genre :

XXX...