AlBud
Messages postés49Date d'inscriptionmardi 18 juin 2002StatutMembreDernière intervention19 décembre 2006
-
16 déc. 2006 à 21:22
AlBud
Messages postés49Date d'inscriptionmardi 18 juin 2002StatutMembreDernière intervention19 décembre 2006
-
19 déc. 2006 à 20:34
Salut à tous,
J'ai pas l' habitude de poster mais la je butte depuis plusieurs jours sur un problème AJAX;
Ca m'enlèverai une grosse épine du pied si quelqu'un aurais une solution car ce code fonctionne en partie sous firefox mais pas sous IE :-(
J'ai une base contenant 3 tables: JEU, PLATEFORME et STANDARD
Un jeu c'est juste un id avec un nom de jeu
Une plateforme c'est aussi un id avec un nom de plateforme (x-box, ps1..)
Un standard c'est juste le lien entre un jeu et 0 ou n plateformes
Il y a une page qui me permet de d'ajouter mes plateformes à un jeu, cette page ne pose aucun problème par contre dans une autre page j'essaie de pouvoir ajouter dynamiquement x lignes de jeu et choisir la plateforme parmis celle existantes pour ce jeu et pour ce jeu uniquement donc j'utilise AJAX. Il y a des centaines de jeux dans la base et 10 fois plus de standards...impossible de tout stocker dans une page ... AJAX semble être la solution à condition que j'y arrive.
Vous aller mieu comprendre avec ceci, je vous donne la création de la "base" (attention j'ai mis un user et un password à vous de le redefinir dans les pages php), des données et les 2 pages nécessaires : index.php et liste_ajax.php
En gros sous IE et Firefox, je peux ajouter mes lignes dynamiquement via javascript, là où sa bloque c'est que pour x lignes ajoutées correspond x standards différents, là ca fonctionne sous FF mais sous IE la liste reste desespérement vide, j'ai essayé avec un DIV mais comme il faudrait que je crée dynamiquement des DIV ca semble poser des problème avec INNERHTML, j' ai donc contourner cela en prenant l' id de ma balise select
Enfin mon dernier problème est que chaque fois que j'ajoute une ligne, je perd tous mes champs plateforme qui se réinitialise alors que je voudrai qu'il reste à la donnée selectionnée, là je pense que c'est un problème de code, mais je sèche aussi.
--
-- CREATION DE LA BASE DE DONNEE ET DU CONTENU
--
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 19 déc. 2006 à 02:07
Salut
Ben tout d'abord je ne comprends pas du tout le fonctionnement de ton application...
Puis ton script n'est pas du tout mais alors pas du tout conforme!!!!
Les scripts se place soit dans le head de l'html (conseillé pour tout ce qui est ajax) ou alors dans le body aux endroits voulus... mais en aucun cas au début et n'importe où...
puis si tu veux que ta fonction onreadystatechange soit utilisée alors il faut que tu utilises le mode asynchrone de ajax !!! c'est à dire en ajoutant le paramètre true dans la fonction OPEN de l'objet ajax.
Puis j'avais jamais vu qu'on mettait du javascript dans le href !!! soit utilise la balise onclick="ta fonction()" ou alors href="javascript:ta fonction()" mais pas href="fonction()" ...
puis meme si cela ne fonctionne pas sous IE car on a pas le droit de changer le innerHTML d'une balise select (donc il faut générer entierement le select et pas seulement les options ), donc oui ... meme si l'aspect graphique ne fonctionne pas sous IE l'aspect application ne fonctionne mais alors pas du tout sous mozilla non plus... les selects sont modifiés on ne sait pourquoi puis lorsque on change le suivant ca remet a 0 le précédent etc....
Donc je pense avant de penser à l'aspect graphique tu devrais regarder les problèmes lourds (pb d'appli pure)
voilà donc a la rigueur explique vraiment ce que tu veux que ca te fasses car pour ma part j'ai pas trop compris, j'y ai cru au début mais en fait non...
AlBud
Messages postés49Date d'inscriptionmardi 18 juin 2002StatutMembreDernière intervention19 décembre 2006 19 déc. 2006 à 15:49
Merci pour ta réponse, j'ai essayé plusieurs autres méthodes mais sans aboutir. Pour ce que tu as décrit dans HEAD, tu as raison mais il faut savoir que l'appli est plus important j'ai donc recréer 2 pages qui fonctionne comme sous l'autre interface mais en + light donc c'est vrai que j'ai pas trop fait gaffe où je mettais quoi mais le problème est toujours là.
Pour le href est la fonction je l'utilise souvent, je ne sais pas si tu as pu executer la création de la table et les 2 scripts, tu verra ce que ca donne.
J'ai aussi essayer bien sur avec le SELECT mais le blème est qu'il impose que je mettai un DIV et donc créer des DIV dynamiquement j'ai essayé et ca le fait pas vraiment.
c'est difficile à expliquer sans que tu l'exécuter toi même, mais je vais essayer.
Au départ j'ai une ligne avec 2 listes box : jeu_1 et plateforme_1, à coté j'ai la possibilité de supprimer la ligne et en dessous je peux ajouter une nouvelle donc jeu_2 et plateforme_2 et ainsi de suite.
Si je choisi un jeu dans la première liste jeu_1 alors la liste plateforme_1 doit ne m'affiche que les plateformes qui la lie à ce jeu par exemple pour mon exemple : le jeu Need for Speed affichera dans plateforme PS1,Sega Mega-CD, Game Boy Advance. Donc si je vais sur la ligne 5 ème ligne JEU_5, le champ plateforme_5 affichera les plateforme correspondant au JEU_5.
Et ca je n'y arrive pas du tout du moins en AJAX car autrement je peux bien ajouter les lignes dynamiquement ligne par lignes mais pas actualisé la xème liste box plateforme en fonction de la xème ligne jeu.
mais sinon c'est quoi le but exact?? car j'ai examiné ton code et étant développeur javascript je ne comprends pas du tout le but de tout ca. ca te sert a quoi exactement ? car j'ai vu que tu fais une modification lorsque tu choisis aussi la plateforme... et je vois pas pourquoi.
Ben explique moi vraiment ce que tu veux !!! un petit cahier des charges quoi... et si tu veux ce weekend si j'ai 1h de libre je te ferai tout ca. Mais comme je t'ai dit il faut que je comprene avant le but. par exemple quels sont les traitements lors de la validation du formulaire??? car tu n'en parles pas...
AlBud
Messages postés49Date d'inscriptionmardi 18 juin 2002StatutMembreDernière intervention19 décembre 2006 19 déc. 2006 à 19:55
En fait je tiens un site d'ancien jeu et je voudrais passer complétement en PHP mais il me manque juste ce petit truc pour tout boucler, bref la haine.
oui j'ai mis bien sur TRUE et ca ne change rien, j'ai l'impression qu'il faille absolument définir un DIV pour IE, sans quoi c'est difficile pour lui de recevoir la réponse de l'objet AJAX, alors je dis pourquoi pas mais comment générer des DIV dynamiquement;
Voici 2 exemples tu vas comprendre:
Le premier c'est le code que j'ai mis sur le site avec la condition true en plus que tu m'as donné:
http://www.aitpast.com/liste/index.php
Tu vois on peux ajouter plusieurs lignes et choisir le jeu mais la plateforme reste vide.
Par contre, regarde autre exemple si je défini un DIV dans le code, quand je choisi un jeu, je peux voir les plateforme disponible pour ce jeu et c'est exactement ce que je veux mais dans la liste déroulante plateforme et non toujours dans le même DIV en haut à gauche
http://www.aitpast.com/liste/index2.php
Sympa de m'aider en tout cas car pour le moment aucune réponse nulle part :-(
Vous n’avez pas trouvé la réponse que vous recherchez ?
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 19 déc. 2006 à 20:22
Ben oui je sais bien que sous IE ca fonctionne mais ce que je voulais te dire c'est que maintenant dans firefox et pas IE on peut voir que ta requêtes ajax fonctionne bien car sous firefox la mise à jour des select ca marche directement par un innerHTML.
Bon par contre tu ne m'as pas répondu pour tout le fonctionnement et l'intérêt de tout ca ? c'est quoi le but ici d'associer un jeu avec une plateforme qui lui est déja propre ??? en fait ce que je te demande c'est qu'est que tu fais dans la page valider.php ??? qu'est-ce que tu fais quand on valide le formulaire ???
Car c'est très mal codé et expliqué et donc pour t'aider ( te filer un code correct et fonctionnel ) j'ai besoin de comprendre ce que tu veux... mais comme les traitements faits après la validation ne sont pas indépendants de la façon d'implémenter ton système et donc il faut que je saches de quoi je parle...
voilà et ensuite je te referai tout ca sans problèmes
AlBud
Messages postés49Date d'inscriptionmardi 18 juin 2002StatutMembreDernière intervention19 décembre 2006 19 déc. 2006 à 20:34
En fait un jeu a 0 ou n plateforme, le code que j'ai mis concerne une page sur des personnes qui bosse sur un jeu. Une personne peut bosser sur X jeu et sur un même jeu sur plusieurs plateformes. Il faut savoir qu'un même jeu a souvent été codé par divers personnes suivants les plateformes. Dans cette page tu n'a pas le code où je peux mettre un nom et prenom et ensuite paf la sélection dynamique Jeu et plateforme comme ca quand je peux afficher qui a fait quoi sur un jeu et surtout sur quel standard.
Valider.php c'est juste une récupération du nom et prénom de la personne que j'insére dans une table "personne", puis les liens dynamiques jeu et plateforme je les mets dans une nouvelle table "travaux" où je place l'id de la personne, l'id du jeu et l'id de la plateforme et x fois suivant le nombre de ligne inséré.