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

Vue hybride

rockt13 Conseil Javascript Ajax 17/02/2009, 08h27
marcha Salut, Tu pourrais... 17/02/2009, 08h32
DoubleU Si tu n'as pas besoin de la... 17/02/2009, 09h21
rockt13 Héllo DoubleU Je ne... 17/02/2009, 09h26
rockt13 J'avais pensé effectivement... 17/02/2009, 09h21
marcha Tu pourrais faire les choses... 17/02/2009, 09h30
le_chomeur +1 avec marcha , je préconise... 17/02/2009, 09h37
rockt13 D'après ce que je viens de... 17/02/2009, 09h47
rockt13 Finalement je crois que je... 22/02/2009, 22h31
marcha Essaie ceci: $arr =... 23/02/2009, 10h17
rockt13 Salut à tous, Finalement... 02/03/2009, 08h23
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    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 : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    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 Expert 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
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    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>

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    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) ?

  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 : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    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
    Par défaut
    +1 avec marcha , je préconise également le tableau json

  8. #8
    Membre Expert 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
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    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 ...

  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 : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Essaie ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $arr = array();
    $arr[] = array ('libele' => 'kiwi' , 'prix1'=>3 , 'prix2'=>3,'prix3'=>4,'show'=>true);
    $arr[] = array ('libele' => 'pomme' , 'prix1'=>3 , 'prix2'=>3,'prix3'=>4,'show'=>true);
     
    echo json_encode($arr);

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Salut à tous,
    Finalement j'ai résolu mon pb en utilisant le split() pas trés propre certes.
    Je penses que j'aurai tôt ou tard à faire à l'utilisation du JSON donc ce n'est que partie remise
    En tout cas merci pour votre aide

    Bonne journée bye

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

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