8796 sujets

Développement web côté serveur, CMS

Bonjour,

Voila, je souhaiterai avoir un Combobox qui liste des valeur, et, avec la fonction OnChange, recuperer cette valeur. Par contre, je ne sais pas comment faire. Quelqu un aurait une idee ?



  $combo_types = "<FORM>";
  $recherche_types="select distinct(type) from commerce";
  $liste_types=mysql_query($recherche_types);
  $combo_types .= "<SELECT name=type OnChange=\"???">";
  $combo_types .= "<OPTION VALUE='%'>Indéfini</OPTION>"; 
  for ($cpt_type=0 ; $cpt_type<mysql_numrows($liste_types) ; $cpt_type++)
  {
     $choix_type=mysql_result($liste_types , $cpt_type , "type");
  	 $combo_types .= "<OPTION VALUE=$choix_type>$choix_type</OPTION>"; 
	
  }
  $combo_types .= "</SELECT>";
  $combo_types .= "</FORM>";
  print $combo_types;
  $toto = "???"; // C'est la que j'aimerai la valeur du Onchange
?>


Merci pour votre aide.

Antoine (PAI)
Ce sujet ne concerne pas la sémantique, je le déplace donc dans
le salon adéquate (PHP...)
Salut,

Euh... question bête : pourquoi ne pas mettre un method='post' dans ta balise form et rajouter un bouton pour le soumettre ? Comme ça tu n'as plus qu'à récupérer la valeur sélectionnée via un $_POST['type'] Smiley rolleyes
Bonjour,

Desole de m'etre trompe de sujet...

En fait, je veux creer une deuxieme combo box comme sous selection a la premiere, sans avoir a recharger la page. J'ai cree les 2 routines PHP, et il ne me reste plus qu'a recuperer la bonne valeur de la premiere combo pour la passer a la seconde.
PAI a écrit :
En fait, je veux creer une deuxieme combo box comme sous selection a la premiere, sans avoir a recharger la page. J'ai cree les 2 routines PHP, et il ne me reste plus qu'a recuperer la bonne valeur de la premiere combo pour la passer a la seconde.

Ben alors y a confusion Smiley murf : PHP étant interprété côté serveur il n'y a aucun moyen qu'il te suffise à faire ce que tu veux... Si tu ne veux pas recharger la page il va te falloir regarder du côté des langages clients : Javascript ou Ajax Smiley cligne
Salut,

PAI a écrit :
je souhaiterais avoir un Combobox qui liste des valeurs, et, avec la fonction OnChange, recuperer cette valeur.

En javascript (puisque c'est apparemment de ça dont tu as besoin), ça peut se faire simplement comme ça :
var nouvelleValeur;
document.getElementById('tonSelect').onchange = function(){
    nouvelleValeur = this.value;
};

A+
Merci pour vos reponses.

c'est vrai que la question peut parraitre hors contexte avec du PHP, mais je viens du monde L4G, et de la programmation evenementielle, alors, je raisonne encore comme ca.

Merci pour le source javascript, mais la, c'est encore pire, je n'ai aucune notion javascript, alors je ne sais pas trop quoi en faire..

Je vais peut-etre simplifier mon idee de base pour avancer, et faire sans choix de sous categorie.

Merci a tous

PAI.
Merci pour vos reponses.

c'est vrai que la question peut parraitre hors contexte avec du PHP, mais je viens du monde L4G, et de la programmation evenementielle, alors, je raisonne encore comme ca.

Merci pour le source javascript, mais la, c'est encore pire, je n'ai aucune notion javascript, alors je ne sais pas trop quoi en faire..

Je vais peut-etre simplifier mon idee de base pour avancer, et faire sans choix de sous categorie.

Merci a tous

PAI.
a écrit :
je n'ai aucune notion javascript, alors je ne sais pas trop quoi en faire
Ne laisse pas tomber parce que tu ne comprends pas. Javascript est de plus en plus incontournable dans le web, aujourd'hui. Ce serait dommage de ne pas t'y intéresser un peu. D'autant que ce que tu souhaites faire est tout à fait du niveau d'un débutant.

Rapidement :
Javascript est un langage de script interprété par le navigateur. Donc rien à voir avec PHP qui tourne, lui, sur le serveur. Une fois que le navigateur a reçu le fichier html correspondant à la page web, il le parse balise par balise et lorsqu'il tombe sur une balise <script type="text/javascript">, il l'interprète immédiatement. Les scripts sont la plupart du temps utilisés pour rajouter un comportement à des éléments de la page, chose dont sont incapables tant HTML que CSS.

PAI a écrit :
mais je viens du monde L4G, et de la programmation evenementielle
Reste un peu, y'a de l'évenementiel ici aussi Smiley smile Et en plus c'est précisement ce dont tu as besoin pour ton problème.

Lorsque l'utilisateur change la valeur d'un <select>, ce dernier lève un événement "change". Pour faire effectuer une action à un élément lors d'un événement, c'est super facile :
élément.on[i][nom del'évenement][/i] = action;

Dans ton code html, tu affecteras un attribut html "id" à ton <select> (ta "combobox"), ce qui te permettra de le désigner en javascript par :
document.getElementById('idDeTonSelect')

Il te faudra donc faire :
document.getElementById('idDeTonSelect').onchange = codeAExecuter;

Le code à exécuter, tu le mets dans une fonction, et emballez, c'est pesé.
function codeAExecuter() {
    /* pour le moment tu parles juste de récupérer la valeur */
    /* du <select>, c'est tout simple à faire : */
    var valeur = document.getElementById('idDeTonSelect').value;
}


Bon, y'a une dernière subtilité, c'est que quand le navigateur va lire ces instructions (à la réception de la page html), il aura pas encore lu toute la page, et donc peut-être ne trouvera-t-il pas ton select via document.getElementById('idDeTonSelect'). Ça génèrera une erreur et rien ne marchera. Il faut donc dire au navigateur d'attendre que la page ait levé l'évènement "load" (disant qu'elle a fini de se charger) pour éxécuter ton script. Ça donne en tout un truc dans le style :
<head>
    <meta http-equiv="Content-Type" .....>
    <title>....</title>
    <script type="text/javascript">
        function selectReactif() {
            document.getElementById('idDeTonSelect').onchange = codeAExecuter;
        }
        function codeAExecuter() {
            /* pour le moment tu parles juste de récupérer la valeur */
            /* du <select>, c'est tout simple à faire : */
            var valeur = document.getElementById('idDeTonSelect').value;
        }
        window.onload = selectReactif;
    </script>
</head>

Tu vois, c'est pas la mer à boire Smiley smile
Merci BEAUCOUP marcv. ce genre de message est vraiment super pour des novices comme moi dans un certain langage, et c'est vrai que ca vaut vraiment le coup de s'accrocher.

J'ai "reussi" a faire quelque chose (apres avoir galare, car Firefox ne m'affichait pas de variables avec la fonction alert (et oui, vieille habitude de debuggage, des alert partout Smiley cligne ). Bref, j'ai reussi a positionner ma variable sur le OnChange (donc, faire de l'evenementiel).

Si je peux abuser, maintenant, je voudrais savoir
1 - La variable a-t-elle une ie apres le script ? A savoir, puis-je l'utiliser dans la suite de mon code html .
2 - peut-on inclure du code php dans du javascript, et si oui, comment ?

merci pour ton aide.

Antoine
Salut,

pour ta 2ème question, je te redis que tu fais une confusion Smiley cligne :
PHP est (et ne peut être qu') exécuté avant que ta page html soit entièrement générée (langage serveur). Il peut éventuellement écrire du code javascript mais pas l'inverse car...
Javascript est un langage client : il est utilisé via des évènements (onchange, onclick...) directement dans ton navigateur et donc on ne peut pas y incorporer du code PHP Smiley rolleyes

A+
Salut,

PAI a écrit :

2 - peut-on inclure du code php dans du javascript, et si oui, comment ?

Comme le dis Heyoan, cela est impossible. Cependant, ce qui est possible c'est d'appelé un script PHP à partir d'une fonction Javscript. Cela s'appelle l'AJAX (Asynchronous JavaScript And XML).
Voici un article très intéressant trouvé sur developpez.com qui utilise comme exemple exactement ce que tu souhaites réaliser.

PAI a écrit :

1 - La variable a-t-elle une ie apres le script ? A savoir, puis-je l'utiliser dans la suite de mon code html .

Là encore, il y a une confusion dans ton esprit. En effet, les langages HTML et Javascript sont totalement indépendants. Le HTML n'est pas un langage de programmation proprement dit contrairement à Javascript ou PHP. Ce sont "simplement" des balises pour mettre en forme du texte et des images. Les variables Javascript sont accessibles uniquement dans le script Javascript. Par contre leur durée de vie est égale à la durée de vie de la page web c'est à dire jusqu'à son rechargement.

J'éspère que cela t'aidera à comprendre Smiley cligne
Re-salut,
a écrit :
peut-on inclure du code php dans du javascript, et si oui, comment ?
Non. Chronologiquement, PHP, HTML et Javascript sont trois étapes totalement indépendantes (hors Ajax et bidouilles avancées) :

1e étape : sur le serveur - PHP :
PHP sert à générer le code HTML qui va être envoyé. Une fois ce code généré et envoyé à ton ordinateur, tu peux oublier PHP, c'est déjà de l'histoire ancienne.

2e étape : sur ton pc - HTML
Une fois la page arrivée sur ton ordinateur, l'analyseur HTML de ton navigateur se met au travail. Il se construit tout d'abord une représentation de la structure de la page web en forme d'arbre généalogique (chaque balise étant parent, enfant, frère, etc. d'une autre). Puis il transcrit cet arbre, plus les CSS qui lui sont appliquées, en page web graphique (ce que tu vois à l'écran). Une fois ce travail effectué, tu peux également oublier HTML, il ne reste que la représentation arborescente du code.

3e étape : sur ton pc - Javascript
C'est alors à Javascript d'entrer en jeu (si tu as bien attendu l'évènement "load" de la page, sinon, il démarre avant, et évidemment, ça crée souvent des problèmes). Il n'agit véritablement que sur cette représentation arborescente de feu le code HTML, et va le plus souvent rendre certains éléments sensibles à des évènements.

a écrit :
La variable a-t-elle une ie apres le script ? A savoir, puis-je l'utiliser dans la suite de mon code html ?
Javascript a la possibilité de récupérer des informations sur certains éléments de la page (par exemple la valeur de ton select) et d'effectuer des actions sur d'autres éléments en fonction de cette valeur, ça oui. Mais l'utiliser "dans la suite du code HTML", ça na pas vraiment de sens. Disons que tu peux l'utiliser pour intervenir sur ton code HTML (plus exactement sur la représentation arborescente de la page).
Modifié par marcv (08 Jun 2007 - 19:51)