bonjour,
le formulaire que je créé est pour enregistrer une commande de produit donc lors de la sélection d'un produit dans le menu déroulant et la quantité cela me fasse un calcule du prix.
Mais mes connaissances en JavaScript sont limitées donc je recherche comment récupérer le prix du produit dans la base de donnée lors de sa sélection dans le menu déroulant pour ensuite faire son calcul et l'insérer dans le champ tu prix total.

je travaille sur cake 2.

merci :)

10 réponses


extrarox
Réponse acceptée

Si tu as vu un code avec PHP simple, tu as du voir dans ta requête Ajax, tu as une option url, là tu mets un lien "controleur/action" qui retournera l'info dont tu as besoin.

moket
Auteur
Réponse acceptée

donc si j'ai bien compris je dois créer une action permettant de récupérer les donner dans mon contrôleur qui sera chargé a chaque changement dans le select avec la fonction url

extrarox
Réponse acceptée

oui c'est ça avec un retour json pour que le retour soit léger.

Tu as ta page online pour qu'on puisse te donner une piste ?

moket
Auteur

non elle est en local pour l'instant mais pour l'instant il n'y a que le form simple de créé et ce que je desir faire c'est recuperer le prix du produit sélectionné dans la liste déroulante "product_id" qui est associé a la table "products" pour ensuite calculer le prix en fonction de la quantité et ensuite pouvoir sauvegarder le tout dans ma BDD.

voila le form

<?php echo $this->Form->create('Fact'); ?>
    <?php echo $this->Form->input('id'); ?>
    <?php echo $this->Form->input('facture',array('label'=>'N° de facture : ')); ?>
    <?php echo $this->Form->input('client_id',array('label'=>'Client : ')); ?>
    <?php echo $this->Form->input('user_id',array('label'=>'Commande de : ')); ?>
    <?php echo $this->Form->input('created',array('label'=>'Date de création : ','dateFormat' => 'DMY')); ?>
    <?php echo $this->Form->input('product_id',array('label'=>'Produit : ')); ?>
    <?php echo $this->Form->input('quantity',array('label'=>'Quantité : ')); ?>
    <?php echo $this->Form->input('price',array('label'=>'Prix : ')); ?>
    <?php echo $this->Form->input('livstate',array('label'=>'Etat de livraison : ',"options"=>array(
                "attente" => "En attente",
                "cours" => "En cours",
                "livré" => "Livré",
            )
        )); ?>
    <?php echo $this->Form->input('livdate',array('label'=>'Date de livraison : ','dateFormat' => 'DMY')); ?>
    <?php echo $this->Form->input('paystat',array('label'=>'Etat de paiement : ',"options"=>array(
                "attente" => "En attente",
                "payé" => "Payé",
            ))); ?>
    <?php echo $this->Form->input('unpaydate',array('label'=>'Date de début d\'impayé : ','dateFormat' => 'DMY')); ?>
<?php echo $this->Form->end('Valider'); ?>
moket
Auteur

personne ne sait comment récupérer les données de la bdd en fonction de la sélection dans la liste déroulante ?
car je cherche depuis hier sans succès :/

si il faut des précisions sur mon code demandes et je rajouterais

Salut,

Il suffit de faire de l'Ajax si tu veux que ça se passe avant la validation :

$('#product_id').change(function(){//Changer #product_id par l'id créé par Cake, je sais plus ce qu'il crée
    $.ajax({//Là tu fais le traitement pour avoir la donnée qui te manque
        ...
        success:function(data){
            //->Ici tu récupéres la quantité
            $('#price').attr('value', data * quantite);//Et là tu le mets dans ton select, comme en haut #price doit être le bon id
        }

        ...
    });
});

A+

moket
Auteur

Merci pour ta réponse, je vais essayer ça :)

moket
Auteur

j'ai essayé l'ajax pour résoudre mon petit problème mais je bloque au niveau des requêtes avec cakephp.j'ai cherché sur le net mais je ne trouve aucune réponse sur la façon de formuler mes requêtes pour récupérer mes données une foi le changement dans la liste détectée par ajax, les seules réponses que je trouve sont pour un site en php simple et non pour cake.

moket
Auteur

Ok merci pour ces précisions je vais essayer de faire ça