Liste déroulante php,bd MySQL,pb codification

Résolu/Fermé
Ludi - 15 sept. 2008 à 10:54
 AlucardDante - 13 févr. 2012 à 11:10
Bonjour,
Je débute en php et j'essaye de faire une petite page Web pour un service de mon entreprise.
Je dois faire 4 listes déroulantes dynamiques imbriquées avec possibilité d'ajouter un nouvel élément sans passer par une autre page.
J'y vais pas par pas, et pour l'instant j'en suis juste à faire 2 listes imbriquées. Cela fonctionne mais seulement si le champs qui filtre la seconde liste est en format numérique. Mon problème est que des codifications internes existent déjà (numérique + caractère) et je voudrais les récupérer. Si je ne peux pas les utiliser, je vais devoir créer 4 tables de correspondance, alors que sans ce pb, cela ne serait pas nécessaire.

Si quelqu'un a déjà eu ce pb?
Merci
A voir également:

66 réponses

papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
18 sept. 2008 à 10:03
Salut,

De rien avec plaisir, je t'avais proposé une explication en revanche, je ne t'ai donné que du code désolé... Ca me paraît assez clair.... Si tu souhaites que je le commente, pas de problèmes!

Gaerebut.... je regardais un peu ton code...
A la fonction GetStateChanged.... Dans ta condition, y'aurait pas un "=" en trop? :

function getStateChanged(result)
{
if (typeof(result) === 'string')
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
18 sept. 2008 à 10:07
Nop ;)

il y a =, il y a == et il y a === qui est aussi très peu utilisé mais il existe ! lol

= -> attribuer
== -> comparer
=== -> même valeur ET même type (entier, string, etc

A+

Gaerebut
0
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
18 sept. 2008 à 10:22
Ah ouais... autant pour moi!! comme tu dis on l'utilise pas souvent, on l'oublie vite!! Voilà qui va m'inciter à réviser un peu mes cours.... ^^

mdr Ludi, pas mal en effet... Dans le genre reconnaissante, tu bats des records ;-)
0
oh la honte!!!! :oops:
Arf, dur dur le matin!
J'espère que ça vous a au moins bien fait rigoler!
0

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

Posez votre question
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
18 sept. 2008 à 16:34
Ben ouai un peu ! Trois fois le même message ^_^'

Je crois qu'on a compris maintenant ! surtout que j'ai répondu à ton premier message dans la minute ou tu l'a posté ...

A+

Gaerebut
0
Bonjour!

Je suis en train de tester la solution de Gaerebut. (pas de favoritisme, j'ai commence par tester la 1ère!)
Malgré tes explications, je ne comprends pas ce qu'il faut que je mette dans la page ajax.js

function Ajax(str, page, result, champ)
//str est la chaine envoyé, page est la page php appellé (sans l'extension), result est l'id de l'élément ou sera afficher le résultat renvoyé par le serveur et str2 est une deuxième chaine d'envoyé


J'ai mis ça: function Ajax(q, ajax, info3, p)
mais j'ai un gros doute. Je ne connais pas le javascript (d'ailleurs le php, dès que ça devient compliqué, j'ai du mal aussi lol), alors il faut m'excuser! Et quand je teste j'ai des listes déroulantes vides, alors ça ne m'aide pas pour trouver mes erreurs!
0
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
25 sept. 2008 à 10:02
Salut,

Ce que je ne comprends pas dans ce cas, c'est comment les select se remplissent.... Et comment on fait pour récupérer les valeurs, y'a pas de 'value' dans les options.

Y'a bien un "onchange" dans les selects qui renvoi sur la function ajax, mais "onchange" sur quoi?

Manque les requêtes également
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
25 sept. 2008 à 10:05
Salut,

ben en fait dans le onchange on appelle la fonction javascript et on envoie en paramètre l'élément séléctionné dans le select !

Ensuite, on va sur la page PHP puis avec un requête simple, on créé le nouveau select avec une boucle .
Le résultat s'affichera dans le select d'après car on a précisé son ID dans les paramètre ! et tout ce qu'on écrira sera dans cette id en temps que id.value !

ça marche, je suis d'ailleur en train de m'en servir tout les jour depuis 1 mois (projet web pour mon entrepreneur :p)

A+

Gaerebut
0
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
25 sept. 2008 à 11:03
Salut Gaerebut :)

D'accord, mais les select sont vides, faut que le premier soit préalablement rempli non? pour qu'on puisse, sur un "onchange" appeler la fonction javascript qui renvoit la valeur de la variable qu'a fait l'utilisateur dans le premier select (grâce a value) pour remplir ensuite les autres select en fonction

Excuse mon ignorance je cherche à comprendre :)

Pour Ludi : peux-tu envoyer la dernière requête stp, celle qui récupère les info pour le select_info3. Merci. En cours réseau et rien à faire, je devrais avoir le temps de taper un peu de code...
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
25 sept. 2008 à 11:54
C'est pour ça que j'ai appellé la fonction avec l'événement onload de façon a remplir le premier :p

 <body onload="Ajax(0, 'ajax', 'affaires', 0)">


j'ai pensé à tout ^_^'

A+

Gaerebut
0
beles Messages postés 3 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 2 juin 2009
27 avril 2009 à 15:24
Bonjour Gaerebut,
Je suis actuellement en stage développement web. Je dois créer un module de recherche pour Joomla. J'utilise pour cela des listes déroulantes liées. Après de multiples recherches, j'ai trouvé votre solution qui me parait intéressante.
Malheureusement, je ne connais pas ajax. Ca fait un petit moment que je bataille et je n'arrive pas à m'en sortir. J'arrive bien à afficher la 1ère liste déroulante avec son contenu qui est récupéré dans une base de données.
Mais, pour la 2ème liste, je n'arrive pas à récupérer les variables p et q.
Auriez-vous une solution à me proposer?
Merci d'avance.

ps : Je ne sais pas si vous connaissez un peu la création de module pour Joomla mais cela me pose quelques contraintes. En effet, je ne peux pas construire mon module comme vous en trois fichiers.
Mon module est divisé en 5 fichiers :
- mod_rechercheAvancee.xml : ce fichier contient la description du module et ses procédures d'installation et de paramétrage.
- mod_rechercheAvancee.php : c'est le point d'entrée du module. Il initialise les variables nécessaires, appelle la partie fonctionnelle (helper.php) et applique la template (tmpl/default.php) avant de renvoyer le tout à Joomla.
- helper.php : ce fichier contient la partie fonctionnelle du module, telle que l'interaction avec la source de données, le traitement des informations, etc.
- tmpl/default.php : contient la partie esthétique du module, permet de mettre en forme le résultat de la partie fonctionnelle sous forme de code HTML.
- ajax.js
0
beles Messages postés 3 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 2 juin 2009
6 mai 2009 à 10:00
Bonjour,
S'il vous plait je suis vraiment dans la merde là.
J'aimerais avoir une explication sur les différents paramètres de la fonction Ajax.
Je pense que c'est ça que je n'ai pas bien compris.
Merci de me répondre.
0
Salut les gars!
Désolée, je n'étais encore pas là hier.
A vrai dire, je ne comprends pas la méthode, j'ai essayé, mais même ma première liste déroulante ne s'affiche pas!

Je ne replonge dedans ce matin, mais je pense que je vais abandonner sous peu, c'est trop compliqué pour mon niveau en php, et je n'ai hélas pas assez de temps pour m'y consacrer comme il faudrait.

à +
0
Merci papymucho!

Ta méthode est plus claire pour moi!
Malheureusement, seule la première liste déroulante s'affiche.
J'ai pourtant tous les éléments nécessaires:
- connexion.php
- index.php avec le formulaire dedans
- select_affaire.php
- select_localisation.php
- ajax.js
- jquery.js

J'ai ajouté " <script type="text/javascript" src="jquery.js"></script> ", pensant que c'était ça le problème. Mais non, rien ne se passe. Niveau matériel, je pense que c bon, je suis sous IE 7. J'ai regardé les scripts dont j'arrive à comprendre le fonctionnement, mais le n'arrive pas à mettre le doigt sur le pb...
Si tu veux bien encore me donner un coup de pouce?

Ludi
PS: Est-ce que dans "php pour les nuls", on apprend à faire ça???
0
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
26 sept. 2008 à 15:51
Ton fichier jquery.js, est décompressé dans le même dossier que celui de ton index? il porte le même nom que jquery.js?

La fonction javascript, tu l'as mise ou?

Fait un fichier javascript.js qui contient la fonction ajax();

Tu déclares ton fichier javascript.js de la même amnière que jquery.js

Nous allons faire quelques tests si tu le veux bien.
0
oui tout est bon de ce côté:
Il s'affiche vraiment comme un fichier javascript, et il est dans le même dossier.
0
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
26 sept. 2008 à 15:56
La fonction javascript, tu l'as mise ou?

Fait un fichier javascript.js qui contient la fonction ajax();

Tu déclares ton fichier javascript.js de la même amnière que jquery.js

Nous allons faire quelques tests si tu le veux bien.
0
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
26 sept. 2008 à 15:57
Ah pardon, je vois que tu l'as appelé ajax.js....

Tu le déclares bien aussi?*

<script type="text/javascript" src="ajax.js"></script>
0
Oui, le javascript, je l'ai mis dans ajax.js.

Et j'ai déclaré:
<script type="text/javascript" src="ajax.js"></script>
Je l'ai mis dans les HEAD de toutes les pages (sauf connexion.php et ajax.js et jquey.js)
0
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
26 sept. 2008 à 16:13
Bon.

Passe toute la fonction ajax en commentaire, et met celle-ci a la place :
		$.ajax
		(
			{
				type: "POST",
				url: "select_localisation.php",
				data: "var="+id_select,
				success: function(msg){alert( "Data Saved: "+msg );}

			}
		);




Puis fait un test, fais un choix dans ton menu déroulant.... Est-ce qu'une alert apparaît?
0
Ok, j'ai testé.
ALERT n'apparaît pas. Rien n'a changé sur le Web.

nb: Est-ce qu'il faut que je mette <script type="text/javascript" src="jquery.js"></script> quelque part au fait? Parce que du coup, je l'ai enlevé pour mettre <script type="text/javascript" src="ajax.js"></script>.
0
Ok, j'ai testé.
ALERT n'apparaît pas. Rien n'a changé sur le Web.

nb: Est-ce qu'il faut que je mette <script type="text/javascript" src="jquery.js"></script> quelque part au fait? Parce que du coup, je l'ai enlevé pour mettre <script type="text/javascript" src="ajax.js"></script>.
0