|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Ingénieur après-vente Inscription : mai 2011 Messages : 11 ![]() |
Bonsoir tout le monde,
Une question récurrente ici, mais toutefois toujours légèrement différente me pousse à ouvrir une nouvelle discussion pour mon problème. J'ai une base de données de machines qui sont de constructeurs différents, et installées chez différent clients. Ca donne à peu près les clés de table MySQL suivantes : Client, Constructeur, Type, Modèle. Je souhaite extraire dans une page UNE machine (pour remplir un rapport d'intervention OnLine) en choisissant dans l'ordre le client, ensuite le constructeur, le type et enfin le modèle de la machine. Pour le moment, je fais ça en pur PHP et ça fonctionne très bien, avec l'inconvénient de recharger la page à chaque changement dans mes listes. Je voudrais donc mettre un peu d'AJAX histoire de me compliquer la vie ;-) Une machine de même type et constructeur pouvant être installée chez différent clients, mes requêtes mySQL pour construire les 4 listes vont être les suivantes : Liste des clients : Code :
$res = mysql_query("SELECT COUNT( * ) AS Enregistrements , Customer FROM ToolBase GROUP BY Customer"); Code :
$res = mysql_query("SELECT COUNT( * ) AS Enregistrements , Manufacturer FROM ToolBase WHERE Customer='$Customer' GROUP BY Manufacturer"); Code :
$res = mysql_query("SELECT COUNT( * ) AS Enregistrements , System_type FROM ToolBase WHERE Customer='$Customer' AND Manufacturer='$Manufacturer' GROUP BY System_type"); Code :
$res = mysql_query("SELECT COUNT( * ) AS Enregistrements , Tool_name FROM ToolBase WHERE Customer='$Customer' AND Manufacturer='$Manufacturer'AND System_type='$System_type' GROUP BY Tool_name"); Mon (premier) problème, c'est que cet exemple ne fonctionne qu'une seule fois (je n'ai testé pour l'instant que l'interraction de la première liste sur la deuxième), c'est à dire que le choix de la liste 1 modifie bien l'affichage de la liste 2, mais une seule fois. Si je modifie mon choix de la liste 1, la liste2 ne bouge plus. Je suppose qu'il y a quelque part un rafraichissement qui ne se fait pas, mais je n'arrive pas à trouver ou... Quelqu'un avec de meilleurs yeux que moi pourrait-il me venir en aide ?? Merci d'avance !! |
|
|
00
|
|
|
#2 | ||||
|
Invité de passage
![]() Ingénieur après-vente Inscription : mai 2011 Messages : 11 ![]() |
pour être tout à fait complet, voilà mon exemple de départ qui ne fonctionne pas :
La page dans laquelle sera affichée mes 4 listes : test.php Code :
liste2.php Code :
(pas besoin de mettre liste3 et liste4, je n'en suis pas encore là...) |
||||
|
|
00
|
|
|
#3 | |||
![]() ![]() |
Bonjour,
Ca, c'est effectivement étrange ! Le code de la première liste n'est pas modifié. On a toujours : Code :
![]() [Edit] J'ai testé : ca fonctionne pour moi. ps : modifier (ou supprimer) le commentaire Citation:
Car dans liste2.php (et les autres), le test se fait sur : "val1 doit être numérique et différent de 0" Code :
if(isset($_POST['val1']) && is_numeric($_POST['val1']) && $_POST['val1']!=0) 1/ ton formulaire initial, (de <form ...> à </form>) 3/ ton code de liste2.php ? (avec le <select>) Tu es censé avoir : Code :
<select id="ididliste2" name="idliste2" onchange="changeLesListes(2);"> Code :
<select id="ididliste3" name="idliste3" onchange="changeLesListes(3);">
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
|
|||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Ingénieur après-vente Inscription : mai 2011 Messages : 11 ![]() |
merci pour cette réponse matinale.
Pour le moment, mon test n'a pas de liste ni de select dans les fichiers liste2, liste3 et liste4, ces fichiers affichent juste le choix fait en liste 1 (pour voir si ça marche) Les 2 fichiers de mon 2eme post sont donc tout ce que j'ai : le formulaire (avec le script inclus) et le fichier liste2. Je vais essayer de mettre des select pour voir. Et oui, pour le moment aussi, toutes les values des options sont numériques (quand je changerai pour du texte, je changerai également la condition) Pourrais-tu m'envoyer la source de ce qui fonctionne chez toi ? La seule erreur que me renvoie la console erreur de FF, quand je fais mon deuxième choix sur la liste 1, c'est "div3 is null" dans la ligne du script Code :
var val3 = div3.options[div3.selectedIndex].value; |
|
|
00
|
|
|
#5 | ||||||
![]() ![]() |
liste2.php :
Code :
Code :
Code :
Code :
<select id="ididliste4" name="idliste4"> Code :
<select id="ididliste2" name="idliste2" onchange="changeLesListes(2);"> Code :
<select id="ididliste3" name="idliste3" onchange="changeLesListes(3);">
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
|
||||||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Ingénieur après-vente Inscription : mai 2011 Messages : 11 ![]() |
Damned, comme ça, ça fonctionne au poil.
Je n'avais pas mis les "else" dans mes listes2,3 pour afficher la liste par défaut en cas d'erreur ou de nouveau choix. Ca veut dire que si on arrive pas boucler toutes les infos sur les 4 listes ça bloque ? En tout cas merci pour cette base de départ, je pense qu'avec quelques modifs je vais réussir à faire fonctionner mon truc. Parfait ! |
|
|
00
|
|
|
#7 |
![]() ![]() |
Non.
Ce qui peut éventuellement "bloquer" (ou empêcher un bon fonctionnement), ce serait d'avoir une erreur dans un des fichiers, car cette erreur ne va pas s'afficher à l'écran (vu que ce fichier est appelé via Ajax, et qu'il est "invisible" à l'écran) Ici, j'ai mis des if-esleif pour l'exemple (c'était plus simple et suffisant pour les tests). Mais on peut très bien faire un appel en base de données, ou afficher le contenu d'un array.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com