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

jQuery Discussion :

AJAX, PHP et mon formulaire


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Par défaut AJAX, PHP et mon formulaire
    Bonjour,

    Je ne suis pas un expert et découvre Ajax. J'ai vu ce qu'on pouvait en faire et c'est sympa surtout avec les formulaires... Mais quand on y arrive pas, ça change tous...
    J'ai un formulaire avec des input et des select. Mon objectif c'est de récupérer les informations saisies, faire des calcul en Php et retourner au client le résultat des calculs...

    Mon fichier offres.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
    if (session_status() == PHP_SESSION_NONE) {
            session_start();
    }
            
    include('../../shared/service/paramauto.php');
     
            global $energie;
            global $puissance;
            global $duree;
            global $work;
            global $rc;
            global $bronze;
            global $argent;
            global $or;
     
            if(isset($_POST['energie']) && !empty($_POST['energie']) 
                    && isset($_POST['puissance']) && !empty($_POST['puissance']) 
                    && isset($_POST['duree']) && !empty($_POST['duree']) ) 
                    {
                            $energie = $_POST['energie'];
                            $puissance = $_POST['puissance'];
                            $duree = $_POST['duree'];
                            $work = $_POST['work'];
     
                            if ($energie == "E") {
                                    foreach ($rc_pes as $id_puissance => $resp_civ) {
     
                                            if ($puissance == $id_puissance) {
                                                    $rc = $resp_civ;
                                                    $rc = $rc*($bns - $work);
                                                    $rc = $rc*$duree;
                                                    $rc = ceil($rc);
                                            }
                                    }
                            }
     
                            if ($energie == "D") {
                                    foreach ($rc_pdi as $id_puissance => $resp_civ) {
     
                                            if ($puissance == $id_puissance) {
                                                    $rc = $resp_civ;
                                                    $rc = $rc*($bns - $work);
                                                    $rc = $rc*$duree;
                                                    $rc = ceil($rc);
                                            }
                                    }
                            }
     
                            if ($duree == 0.53) {
                                    $rcom = 0.20;
                            } elseif ($duree == 1) {
                                    $rcom = 0.20;
                            }
    //============= A afficher dans le HTML======================
                            $bronze = $rc + $rcom;
                            $bronze = ceil($bronze);
     
                            $argent = $rc + $rcom + 250;
                            $argent = ceil($argent); 
                    }
    ?>
    Mon Ajax: Je me suis inspiré de code prix sur le net...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <script>
        function maVal() {
            var maVal = document.monform;
            var dataString = $(maVal).serialize();
            $.ajax({
                type: 'POST',
                url: '../../shared/service/offres.php',
                data: dataString,
                success: function (data) {
                    $('#bronze').html(data);
                    $('#argent').html(data);
                }
     
            });
            return false;
        }
    </script>

    Dans mon Html, je souhaite afficher #bronze et #argent. J'utilise donc des <div>:

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div>
       <h2><strong id="bronze"></strong></h2>
    </div>
    <div>
       <h2><strong id="argent"></strong></h2>
    </div>

    Malheureusement je n'arrive pas à afficher mes valeurs... Je dois certainement mal procéder j'imagine.
    Pourrais-je avoir une aide s'il vous plait?

    Cordialement

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    il manque un echo à la fin de ton fichier php : echo "bronze :".$bronze.", argent :".$argent;.

    je te suggère aussi de remplacer success d'ajax par done, car c'est déprécié selon la doc et ajouter aussi fail pour gérer les erreurs quand elles existent.

    J'imagine que tu fais appel à la fonction maVal() lors de la soumission du formulaire avec submit non ? sinon peux-tu montrer son code ?.

    es-tu sûr que $.ajax s'exécute ? regarde dans l'onglet "Network" ou "Réseau" de l'outil de développement du navigateur pour t'assurer...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Par défaut
    Bonjour Toufilk83

    Merci pour le retour. J'ai mis l'instruction echo et là je vois dans ma page l'affichage des valeurs. Mais il y'a un autre problème. J'affiche les deux valeurs dans chaque <Div>.

    Exemple: bronze = 1500 et Argent 1700. Dans chacune des <div> je vois afficher 15001700...
    Totalement bizarre ça. Il y'a t'il quelque chose que j'oublie coté affichage?


    Cordialement

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    Dans ce cas, Il fallait utiliser le type de donnée json en ajoutant dataType:"json" dans les paramètres d'ajax qui permet de récupérer un objet json que tu peux manipuler facilement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //json_encode est obligatoire et aucun echo ne doit apparaître en php appart celui-ci.
    echo json_encode(["bronze"=>$bronze,"argent"=>$argent]);
    puis dans done :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $.ajax({
    ....,
    dataType:"json"//obligatoire
    })
    .done(function(data){
      $('#bronze').html(data.bronze);
      $('#argent').html(data.argent);
    })
    .fail(function(erreur){
      alert("Erreur ajax :"+erreur.responseText);
    ]);
    Remarque : il est bien possible d'appliquer un split(",") et continuer sans "json"..., mais à mon avis il faut apprendre cette technique aussi.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Par défaut
    Bonsoir Toufik83,

    J'ai tourné votre solution dans tous les sens mais impossible de régler mon problème hélas. Je désespère...

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    Je comprends que cela te parait un peu difficile à résoudre car tu n'as pas l'habitude d'utiliser json, par-contre je te confirme que c'est très simple.

    Mais avant, il faut savoir utiliser les outils du navigateur, surtout les onglets "Network" et "console", par exemple :
    • Mettre un console.log("dataAjax :",data); dans done de ajax et voir ce que ça donne dans la console.
    • Voir l'onglet Network et le sous onglet XHR et cliquer sur le lien de l'appelle ajax (ayant le même nom du fichier php appelé) dans le volet en bas pour voir si la réponse du serveur et bien reçue ou pas.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Par défaut
    Bonjour,

    Merci pour votre dernier message. Il m'a vraiment permis d'avancer. Tout marche bien maintenant. J'utilise le Json et c'est vraiment super pratique...

    Merci pour tous

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/03/2012, 14h29
  2. [AJAX] AJAX, PHP/SQL et Formulaire
    Par DiPSoMaNiE dans le forum AJAX
    Réponses: 7
    Dernier message: 28/04/2009, 09h24
  3. [PHP-JS] probleme avec mon formulaire contact
    Par gtraxx dans le forum Langage
    Réponses: 27
    Dernier message: 03/10/2006, 00h41
  4. php : probleme avec mon formulaire
    Par rane dans le forum Langage
    Réponses: 39
    Dernier message: 29/06/2006, 20h13
  5. Je n'arrive pas à terminer mon formulaire en PHP
    Par snakejl dans le forum Langage
    Réponses: 12
    Dernier message: 10/05/2006, 22h35

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