IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] Dom(javascript) et php5


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [DOM] Dom(javascript) et php5
    Bonsoir à tous,

    Je dois développer une appli en php5 (interfacée bdd Mysql), dans celle-ci les utilisateurs, pour certains dossiers doivent pouvoir entrer plusieurs adresses postales.
    Les noms de rue de la ville sont enregistrées dans une table, dont je récupère les entrées dans un curseur, pour les représenter dans une balise <select>.
    Je souhaite utiliser une fonction javascript (utilisant le DOM) pour créer un tableau, si l'utilisateur veut ajouter 1 @, il clique sur un bouton la fct DOM ajoute une ligne au tableau, à chaque ligne sa balise select présentant les noms de rue .
    Je ne sais pas comment développer intelligement le truc:

    - passer à cette fonction js un tableau des résultats (5000 entrées peut-être!!) ?
    - enregistrer le script js avec l'extension php et mêler le tout ( peut-être qu'il est trop tard et que je délire sec mais bon je tente le coup...)

    - j'ai pensé aussi à créer d'abord le tableau chaque <td> ayant un id, et de cibler la td ensuite avec la fct innerHtml en lui passant le select(mais çà ne me semble pas trop génial non plus avec cette fct...)?

    Bref, que des questions... Qu'en pensez-vous ?
    éspère que j'ai été claire...
    Merci à tous

  2. #2
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Le plus propre, c'est effectivement d'ajouter des lignes dans ton tableau avec le DOM.

    Pour les villes, le plus simple est de proposer un "input type=text" ainsi, l'utilisateur tapes le nom de sa ville (ou seulement les premier caracteres, ou le code postal, ou...)

    A coté de ce input tu met un petit bouton, et lorsque l'on clique dessus, une requete XmlHttpRequest est envoyée au serveur, le serveur renvoit les noms de villes approchant de celui saisi grace à une requete SQL, avec une limite (20 noms par exemple)

    Quand le navigateur recoit la reponse, tu transforme le input en "select" avec comme choix possible les noms renvoyés par le serveur.

    Comme ça tu evite de charger 5000 noms en js (c'est un peu bcp quand meme) et l'utilisateur n'est pas perdu dans une liste enorme de villes.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci d'avoir pris le temps de répondre.
    En fait, il ne s'agit que d'une seule ville, Paris. Les noms des voies sont dans la bdd, et je suis obligée de les proposer toutes en choix dans un select.
    J'ai fais un petit essai là, en créant auparavant le select, de manière à ne pas réinterroger la base s'il y a plusieurs adresses, et je passe le select à la fct js

    code:

    <script language="JavaScript" type="text/javascript">
    var compteur =0;
    function ajoute (anId,aSelect){
    compteur++;
    var tableau = document.getElementById(anId);
    var ligne = document.createElement ('tr');
    var colonne1 = document.createElement('td');
    var colonne2 = document.createElement('td');
    var objetSelect = document.getElementById(aSelect).cloneNode(true);
    objetSelect.setAttribute( "id","select"+compteur);
    objetSelect.style.display = 'block';
    var texte = document.createTextNode (objetSelect.id);
    colonne1.appendChild (objetSelect);
    colonne2.appendChild (texte);
    ligne.appendChild (colonne1);
    ligne.appendChild (colonne2);
    tableau.appendChild(ligne);
    }
    </script>

    jusque là pas de problème, mais ma balise select d'essai ne comporte que 3 éléments !!! Mais je ne vois toujours pas comment faire autrement ?

    Merci

  4. #4
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    et je suis obligée de les proposer toutes en choix dans un select.
    Il y a une raison particuliere ? Parce qu'en terme d'ergonomie, un select enorme, c'est pas terrible...

    mais ma balise select d'essai ne comporte que 3 éléments
    Tu pourrais montrer le code de ta balise ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Points : 151
    Points
    151
    Par défaut
    Utilise ajax, un objet xmlHttpRequest qui envoi une requete a un script php qui lui te renvoi les données a mettre dans tes listes (données en xml ou json (peut être plutot json d'ailleurs, si tu cherches un peu il ya des tutos, c'est tout facile! ))

    Après, à chaque clic sur le bouton ajoute tu rajoutes une ligne au tableau en dom et tu rajoute un select à cette ligne que tu rempli en JS avec les données json renvoyées par ta requete xhr.


    Voila tout ca c'est très clair ... dsl mais en même temps je n'etais pas sur d'avoir tout compris

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par buzzkaido
    Il y a une raison particuliere ? Parce qu'en terme d'ergonomie, un select enorme, c'est pas terrible...



    Tu pourrais montrer le code de ta balise ?
    oui, pas de souci : la balise d'essai :

    <select name="MySelect" id="MySelect" style="display:none">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>

    Et la raison particulière est que l'appli est utilisée par des architectes, il ne doit absolument pas y avoir d'erreurs dans les noms de rues, et c'est la version 3 , les précédentes aplli était en vbscript (et access) et les noms de rues leur ont toujours été proposées.
    Donc je suis obligée de faire comme çà...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par highman
    Utilise ajax, un objet xmlHttpRequest qui envoi une requete a un script php qui lui te renvoi les données a mettre dans tes listes (données en xml ou json (peut être plutot json d'ailleurs, si tu cherches un peu il ya des tutos, c'est tout facile! ))

    Après, à chaque clic sur le bouton ajoute tu rajoutes une ligne au tableau en dom et tu rajoute un select à cette ligne que tu rempli en JS avec les données json renvoyées par ta requete xhr.


    Voila tout ca c'est très clair ... dsl mais en même temps je n'etais pas sur d'avoir tout compris
    tu rajoutes une ligne au tableau en dom et tu rajoute un select à cette ligne que tu rempli en JS : justement c'est mon pb là :rajouter le select en js qui peut contenir jusqu'à 4 ou 5000 entrées de rues.

    Je veux bien essayer json ou ajax mais çà ne changera rien à mon pb de taille de select à placer avec js

    objet xmlHttpRequest qui envoi une requete a un script php qui lui te renvoi les données a mettre dans tes listes : là pareil, je ne saisis pas bien la différence entre cette solution et un résultat de requêe dans un curseur php5

    Merci à toi

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Points : 151
    Points
    151
    Par défaut
    http://dcabasson.developpez.com/arti...ion-pas-a-pas/

    Avec une autocompletion, peut-être ...

    A vrai dire si tu veux que toutes tes rues soient directement visible tu ne vas pas avoir le choix... Mais j'ai des select avec 300 clients dans mon appli et ca me rend déja dingue !


    Bonne chance

  9. #9
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    justement c'est mon pb là :rajouter le select en js qui peut contenir jusqu'à 4 ou 5000 entrées de rues.
    Le plus simple serait peut-etre alors de generer (avec le php) un tableau Javascript qui contient toutes tes rues, un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?PHP
      echo "tableau = Array();";
      for ($i=0;$i<$nbRues;$i++)
      {
         echo "tableau[".$i."][valeur] = \"".$rueID[$i]."\";
         echo "tableau[".$i."][nom] = \"".$rueNom[$i]."\";
      }
    ?>
    Et ensuite charger se tableau dans les select au fur et à mesure que tu les créé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function chargerSelect(idSelect)
    {
       for (i=0;i<tableau.length;i++)
          document.getElementById.options[i] = new Option(tableau[i][nom],tableau[i][valeur]);
    }
    Bon, le code n'est pas garantit, mais à peu de choses près, ça doit pouvoir marcher

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Merci à tous les 2
    Merci pour votre aide, je vais examiner tout çà et faire des essais, je compléterai le post dès qu'une solution satisfaisante sera en place.
    Pour l'instant je suis encore dans mes maquettes d'écrans à faire valider!! (proche de la persistance rétinienne çà vous dit quelque chose, je pense...)

    @ +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] IDE Javascript avec completion intelligente
    Par nicorama dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/03/2008, 19h42
  2. [DOM et JAVASCRIPT] comment iterer sur un noeud
    Par AliJava dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/12/2007, 09h24
  3. [DOM] fonction javascript dans html
    Par nopnop dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/04/2007, 09h53
  4. [DOM] Probleme JAVASCRIPT XML STRING DOM
    Par seb0634 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/11/2006, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo