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 :

Conseil Javascript Ajax


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut Conseil Javascript Ajax
    Bonjour à tous voici mon problème.
    J'ai une base de donnée contenant des matières premières du genre (kiwi,œuf,lait..)
    Chaque matière première possède 3 prix (prix_ht,prix_kg,prix_pce) , et chaque matière première possède également une unité.
    Dans ma page je veux calculer un prix je m'explique :
    J'ai un menu déroulant qui récupère toutes les matières premières et l'affiche dans un select, j'ai un champ texte pour définir la quantité , et j'ai un autre menu déroulant ( select ) pour choisir l'unité (kg,litre,gramme,unité) et j'ai un champ texte résultat.
    je veux mettre à jour le champ résultat , en appelant la fonction javascript refresh_calc() à chaque fois que l'on change un des SELECT.
    Mon problème c'est que je ne sais pas comment passer à ma fonction javascript le bon prix en fonction de l'unité choisi....
    Ce que j'ai fait , j'ai pris le prix_kg, que je concaténais au nom du champ(des ma requette sql) genre (3-kiwi,5-œuf,4-lait..) donc ce que je passais a ma fonction javascript c'était la value du SELECT , mais lorsque je veux passer les 3 prix de chaque matière première comment dois je procéder?
    Peut être des input type hidden ?
    J'espère avoir réussi à exposer assez simplement mon problème.
    Ça serait cool si quelqu'un pouvez m'aider car ça fait un bon moment que je bute sur ce problème.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Tu pourrais concaténer tous les prix, par ex: kiwi-2-3-4.5
    tu utilise split('-') pour transformer ça en tableau et tu extrait le prix à l'index
    qui correspond au choix de l'unité ?

  3. #3
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Si tu n'as pas besoin de la validation w3c, tu peux passer les prix dans des attributs persos sur les champs de ton formulaire, du genre:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id="kiwi" pht="3" pkg="3.5"  ppce="4">...</select>

    Et apres tu récupères les valeurs avec un simple
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    monselect.getAttribute("pht")

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    J'avais pensé effectivement concaténer tous les prix mais je trouvais ça un peut barbare et dans le cas ou mes prix sont à virgules ça ne pose pas de problème?
    Car une fois la 1er ligne rempli et le prix calculer l'utilisateur peut avec un bouton ADD (et l'utilisation de la librairie prototype AJAX ), rajouter la ligne dans la recette , et donc elle s'affichera en dessous , dans un tableau , la matière 1er sera supprimé du SELECT, et en fasse de la nouvelle ligne du tableau il y aura un bouton suppr qui aura pour effet la suppression de la ligne et le renvoi de la matière 1er dans le SELECT , mais au moment de se renvoi les 3 prix seront perdu , donc je pourrai pas remettre en forme (kiwi-prix1-prix2-prix3) ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Si tu n'as pas besoin de la validation w3c, tu peux passer les prix dans des attributs persos sur les champs de ton formulaire, du genre:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id="kiwi" pht="3" pkg="3.5"  ppce="4">...</select>

    Et apres tu récupères les valeurs avec un simple
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    monselect.getAttribute("pht")
    Héllo DoubleU
    Je ne comprends pas trés bien ou mettre ce que tu me propose , voici actuellement mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <select name="ingredient" id="ingredient" onChange="javascript:refresh_calc();">
    <?
       while($val=mysql_fetch_assoc($req_fourniture))
       {
        ?>
            <option name="ingredient" value="<? echo            $val['nom_produit']."-".$val['prix_kg']; ?>" <? echo $val['nom_produit']; ?></option>
    <?
        }
    ?>
     
    </select>

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Tu pourrais faire les choses différemment, au lieu de générer un select
    qui contient les informations, tu pourrais générer un JSON javascript, dans ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var articles = [
      { libelle: 'kiwi', prix1: 2.5, prix2: 4, prix3: 5.5, show: true },
      { libelle: 'oeuf', prix1: 2.5, prix2: 4, prix3: 5.5, show: true },
    ];
    C'est super simple à générer depuis PHP avec json_encode

    Ensuite tu fais une fonction qui construit le select d'après la variable articles.
    et qui crée l'option si show==true

    Pour chaque manipulation, tu modifie tes flag show et tu reconstruit complètement ta liste.

  7. #7
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    +1 avec marcha , je préconise également le tableau json

  8. #8
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    @rockt13 : désolé, c'est pas dans le select qu'il faut mettre les attributs, mais dans chaque options (matin, toussa... )

    sinon la solution de marcha est probablement la meilleure ^^

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    D'après ce que je viens de lire sur JSON (que je ne connaissais pas du tout) , ça semble bien répondre à mon besoin, en plus l'idée de mettre show=true/false va pas mal me faciliter les choses
    Par contre côté mise en œuvre je ne vois pas trop comment procédé ,car les exemples que j'ai trouvé sont assez complexes et/ou font intervenir un fichier externe JSON.
    Aurais-tu un petit exemple?
    est ce que la procédure est la suivante :
    1)creer un tableau php que je remplie via ma requette SQL ,
    2)puis ce tableau je le converti avec $all_val= json_encode($montableau) ,
    3)puis je récupère via mon script javascript $all_val ( je ne vois pas du tout comment le récupérer )
    4)à quel moment je met en place mont SELECT?avec AJAX?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    @rockt13 : désolé, c'est pas dans le select qu'il faut mettre les attributs, mais dans chaque options (matin, toussa... )

    sinon la solution de marcha est probablement la meilleure ^^
    Np , du coup ça m'intéresse car c'est quelque chose comme ça que je voulais faire , mais je ne savais pas qu'on pouvait mettre des attributs qui ne sont pas propre à la balise SELECT , enfin je vais essayer d'abord la technique de marcha , pour essayer de faire proprement les choses

  11. #11
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    pour définir ton json dans javascript tes étapes 1 et 2 sont ok.

    pour que javascript puisse l'utiliser le plus simple c'est de générer
    directement le javascript depuis php, dans ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "<script type='text/javascript'>\n";
    echo "var articles = $ton_json;\n";
    echo "</script>\n";
    les \n c'est juste pour faire joli et faciliter le débugage quand tu fais apperçu
    de la source dans ton navigateur.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "<script type='text/javascript'>\n";
    echo "var articles = $ton_json;\n";
    echo "</script>\n";
    Et une fois que j'ai fait ceci , lorsque m'a fonction refresh_calc() sera appelée articles sera connu dans refresh_calc()?
    A quel moment mon select est mis en place?

  13. #13
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    en écrivant ceci, 'article' est une variable visible de toute tes fonctions,
    elle est globale.

    Pour construire ton select, fais une fonction que tu place dans le head

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function buildSelect() {
    }
    et tu l'appelle une première fois au chargement de la page sur l'évènement
    onload du body, ou alors tu mets un script après la balise qui doit contenir
    ton select avec juste buildSelect(); dedans.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type='text/javascript'>
    buildSelect();
    </script>

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    donc à partir de là , c'est dans buildselect() que je vais creer en javascript mon menu select du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    buildselect()
    {
    var i=0;
    while(i < $mon_json.size())
    {
         if($mon_json[i].show==true)
         {
             ajouter_option_auselect($mon_json.libelle[i]);
         }
         i++;
    }
    }

  15. #15
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    oui, quelque chose dans ce gout là

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    merci beaucoup je vais essayer de mettre tout ça en place

    (J'ai cependant encore une question le json , est il détruit au changement de page , ou lors d'un refresh ?

  17. #17
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    étant donné que tu le génère depuis php, il fait partie de la page.

    Quand celle-ci est rechargée ton "application" est réinitialisée, donc
    oui il est détruit, mais il reprends sa valeur initiale. donc tu va perdre
    l'était des flags uniquement, si tel est ta question ?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Oui c'est tout à fait ce que je voulais savoir
    mais ça me convient parfaitement

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Bonjour
    J'essai enfin de mettre le code proposé en place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var articles = [
      { libelle: 'kiwi', prix1: 2.5, prix2: 4, prix3: 5.5, show: true },
      { libelle: 'oeuf', prix1: 2.5, prix2: 4, prix3: 5.5, show: true },
    ];
    En fait je ne vois pas comment faire un tableau en php qui puisse me générer ce genre de JSON
    Car la doc donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
     
    echo json_encode($arr);
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"a":1,"b":2,"c":3,"d":4,"e":5}
    moi il me faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $arr = array ('libele' => kiwi , 'prix1'=>3 , 'prix2'=>3,'prix3'=>4,'show'=>true);
    Mais pour en avoir plusieurs sur la meme ligne ...je ne sais pas comment faire, à vrais dire j'ai trés rarement manipulé des tableau en php.

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par marcha Voir le message
    Salut,

    Tu pourrais concaténer tous les prix, par ex: kiwi-2-3-4.5
    tu utilise split('-') pour transformer ça en tableau et tu extrait le prix à l'index
    qui correspond au choix de l'unité ?
    Finalement je crois que je vais utiliser cette solution , car le JSON me semble trop complexe à mettre en place ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AJAX] Redirection javascript & Ajax
    Par Florent08800 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/02/2007, 10h22
  2. [AJAX] JavaScript, Ajax et XML
    Par tclariss dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/10/2006, 22h53
  3. [AJAX] Ajax, formulaire, div et select
    Par n8ken dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/09/2006, 10h51
  4. [AJAX] Demande de conseils en AJAX
    Par koolway dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/05/2006, 23h12

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