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

Langage PHP Discussion :

mettre à jour un champ de formulaire


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut mettre à jour un champ de formulaire
    Bonsoir,

    j'ai un formulaire html qui contient plusieurs champs dont un champ "total" :

    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
    <form method="post" name="dep"
     action="action_depenses.php" enctype="x-www-form-urlencoded">
      <table>
        <tbody>
          <tr>
            <td>
            <p>Date: </p>
            </td>
            <td><input id="datepicker" name="date"
     type="text"></td>
          </tr>
          <tr>
            <td>Objet: </td>
            <td><input size="30" name="objet"
     type="text"></td>
          </tr>
          <tr>
            <td>Montant: </td>
            <td><input size="30" name="montant"
     type="text"></td>
          </tr>
          <tr>
            <td>Total: </td>
            <td><input size="30" name="total"
     type="text"></td>
          </tr>
          <tr>
            <td><input value="Envoyer" type="submit"></td>
          </tr>
        </tbody>
      </table>
    </form>
    dans l'action de ce formulaire je voudrais mettre à jour ce total. Voilà ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    $total=0;
     while ($ligne=mysql_fetch_array($result,MYSQL_NUM))
         $total+=$ligne[0];	 
    ?>
    <script>
    dep.total=<?php echo $total; ?>
    </script>
    Mais le total reste à 0 ; qu'aurait-il fallu faire ?

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    dans l'action de ce formulaire je voudrais mettre à jour ce total.
    cela veut dire quoi ?
    C'est le champ "total" que tu veux renseigner ?

  3. #3
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Je ne pense pas que tu puisses accéder à l'input total de cette manière en javascript. Le mieux est encore de définir un id à l'input total et de le mettre à jour via getElementById.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input size="30" name="total" type="text" id="total">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
       document.getElementById('total').value = <?php echo $total; ?>;
    </script>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Laurent,
    encore une fois, tes explications manquent de précision...
    "Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
    Il faudrait nous expliquer plus précisément l'enchainement des actions, et comment elles sont effectuées (via Ajax ?).

    Vu que tu calcules le total en PHP, si c'est "en direct", il suffit de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            <td><input size="30" name="total" type="text" value="<?php echo $total; ?>" /></td>
    Si c'est via Ajax :
    - Ajax appelle un fichier PHP qui effectue le calcul, et renvoie $total.
    - la valeur "$total" est récupérée en JavaScript et mise dans une variable total_recupere_via_ajax.
    Alors c'est la solution ci-dessus qui devrait fonctionner, avec :
    <td><input size="30" name="total" type="text" value="" id="total" /></td>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
       document.getElementById('total').value = total_recupere_via_ajax;
    </script>
    Qui s'écrit en jQuery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       $('#total').val(total_recupere_via_ajax);
    Dernière modification par Invité ; 28/10/2012 à 11h38.

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    désolé de ne pas répondre plus tôt mais j'étais privé de internet toute la journée et viens juste de le récupérer Merci de vous intéresser à mon problème.
    C'est bien le champ "total" que je veux mettre à jour.
    Il n'y a pas d'Ajax (que je ne maîtrise pas du tout), mais j'ai pensé que une chose qui coinçait, c'est que l'action n'était pas dans le même fichier que le formulaire ; j'ai donc tout mis ensemble :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>jQuery UI Datepicker - Default functionality</title>
      <link rel="stylesheet"
     href="http://code.jquery.com/ui/1.9.0/themes/base/jquery-ui.css">
      <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
      <script src="http://code.jquery.com/ui/1.9.0/jquery-ui.js"></script>
      <link rel="stylesheet" href="/resources/demos/style.css">
      <script src="jquery.ui.datepicker-fr.js"></script>
      <script>
    $(function() {
    $( "#datepicker" ).datepicker();
    });
      </script>
    </head>
    <body>
    <form method="post" name="dep" action="" enctype="x-www-form-urlencoded">
      <table>
        <tbody>
          <tr>
            <td>
            <p>Date: </p>
            </td>
            <td><input id="datepicker" name="date"type="text"></td>
          </tr>
          <tr>
            <td>Objet: </td>
            <td><input size="30" name="objet" type="text"></td>
          </tr>
          <tr>
            <td>Montant: </td>
            <td><input size="30" name="montant" type="text"></td>
          </tr>
          <tr>
            <td>Total: </td>
            <td><input size="30" name="total" id="total" type="text"></td>
          </tr>
          <tr>
            <td><input value="Envoyer" type="submit"></td>
          </tr>
        </tbody>
      </table>
    </form>
     
    <?php 
    include_once("connect.php");
    include_once("config.php");
     
    $id_conn = connect();
     
    $date=$_POST['date'];
    $objet=$_POST['objet'];
    $montant=$_POST['montant'];
     
    $sql = stripslashes($sql);
    $result = mysql_query($sql) or die(mysql_error());
     
    $sql='SELECT (montant)from depense';
     
    $sql = stripslashes($sql);
    $result = mysql_query($sql) or die(mysql_error());
     
    $total=0;
     while ($ligne=mysql_fetch_array($result,MYSQL_NUM))
         $total+=$ligne[0];	 
     
    $sql='INSERT INTO `depense` (date,objet,montant,total) VALUES (\''.ES($date).'\',\''.ES($objet).'\',\''.ES($montant).'\',\''.ES($total).'\')';	 
    $sql = stripslashes($sql);
    echo "sql=".$sql."<br>";
    $result = mysql_query($sql) or die(mysql_error());
    ?>
     
    <script type="text/javascript">
       document.getElementById('total').value = <?php echo $total; ?>;
    </script> 
    </body>
    </html>
    mais depuis que j'ai fait ça, l'action n'est plus appelée ; pourquoi ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il faudrait vraiment que tu expliques CLAIREMENT et PRECISEMENT ce que tu veux faire et obtenir.
    Car là, c'est du grand n'importe quoi.

    Calculer le total pour après le ré-écrire dans le formulaire me laisse dubitatif. (et je suis poli)
    Tu as aussi dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql='SELECT (montant)from depense';
    $sql = stripslashes($sql); // EXPLIQUE-NOUS l'intérêt de cette ligne, je suis curieux !
    $result = mysql_query($sql) or die(mysql_error());
    $total=0;
     while ($ligne=mysql_fetch_array($result,MYSQL_NUM))
         $total+=$ligne[0];
    S'il s'agit juste de calculer LA SOMME de TOUS les MONTANTS dans la BdD, on peut écrire plus simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $total_sql="SELECT SUM(montant) AS total from depense";
    $total_result = mysql_query($total_sql) or die(mysql_error());
    $total_row= mysql_fetch_row($total_result);
    $total=$total_row['total'];
    Mais que vient donc faire ce champs "total" dans le formulaire !?! re-
    Dernière modification par Invité ; 29/10/2012 à 09h45.

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Mais que vient donc faire ce champs "total" dans le formulaire !?!
    Rien du tout, et tu viens de me faire réaliser qu'il fallait le sortir. (Je n'y avais pas pensé). Et merci pour le bout de code.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Quel sacré déconndeur, ce LaurentSC !

    Je l'ai déjà dit, mais j'aime bien la formule

  9. #9
    Invité
    Invité(e)
    Par défaut
    Sauf erreur, s'il s'agit d'une gestion de produits, tu devrais avoir :
    Nom produit : ...
    Prix unitaire : ...
    Quantité : ...
    TOTAL Produit : ... = (Prix unitaire) x (Quantité) pur CE PRODUIT.

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Quel sacré déconndeur
    Si j'étais super-modérateur, je te collerais une infraction pour non-respect des règles du forum.
    s'il s'agit d'une gestion de produits
    Pas tout-à-fait ; c'est pour faire un site qui permettrait une gestion d'un compte bancaire (mais à partager par plusieurs personnes, donc Microsoft Money, ça n'irait pas) ; du coup, le champ "quantité ne sert à rien...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bah ! tu sais bien que c'est amical

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Bah ! tu sais bien que c'est amical
    Bien sûr, et je l'ai pris comme ça.

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Tu as aussi dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql='SELECT (montant)from depense';
    $sql = stripslashes($sql); /* EXPLIQUE-NOUS l'intérêt de cette ligne, je suis
     curieux ! Ca, c'est historique : à un moment, j'avais compris que c'était mieux ; 
    j'ai oublié pourquoi, mais depuis je le mets à chq fois */
    $result = mysql_query($sql) or die(mysql_error());
    $total=0;
     while ($ligne=mysql_fetch_array($result,MYSQL_NUM))
         $total+=$ligne[0];
    S'il s'agit juste de calculer LA SOMME de TOUS les MONTANTS dans la BdD, on peut écrire plus simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $total_sql="SELECT SUM(montant) AS total from depense";
    $total_result = mysql_query($total_sql) or die(mysql_error());
    $total_row= mysql_fetch_row($total_result);
    $total=$total_row['total'];
    Je reviens là-dessus ; je suis finalement revenu à mon code d'origine car plus loin dans le code, j'ai $total+=$montant; et autant ma variable $total est bien un entier, autant $total_row est une chaîne de caractères, donc pas possible (à moins de me donner une solution)

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Si c'est une chaine de caractères qui représente un nombre et que ce n'est pas interprété par php comme un nombre tu peux essayer intval.

  15. #15
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salut; stripslashes : http://php.net/manual/fr/function.stripslashes.php
    +1 jreaux63 un stripslashes sur un SELECT !!!
    post #5:
    les totaux sont des champs calculés a partir des colonnes existantes , alors ta pas besoins de les enregistrés ( optimisation..).

  16. #16
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    jreaux63=jreaux62+1 ?

    les totaux sont des champs calculés a partir des colonnes existantes , alors ta pas besoins de les enregistrés ( optimisation..).
    Certes, ça simplifie la bdd, mais pas le code, car pour afficher les enregistrements du compte, le select * from --- devient très compliqué...

  17. #17
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salut ;
    mais pas le code, car pour afficher les enregistrements du compte, le select * from --- devient très compliqué...
    1 faut éviter la guerre des étoiles ****** ( SELECT nomchamps...)
    et deux le code est fait pour ça,
    et trois tu peut faire les calcule dans les requêtes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .......
    SELECT id, SUM(val1+val2+val3) AS Montant FROM tatable GROUP BY id
    ...........

Discussions similaires

  1. [2.x] Mettre à jour un champ sans formulaire
    Par ronylicha dans le forum Symfony
    Réponses: 2
    Dernier message: 21/03/2014, 11h15
  2. Réponses: 4
    Dernier message: 06/06/2008, 12h24
  3. Réponses: 7
    Dernier message: 06/06/2008, 11h12
  4. Mettre à jour des champs dans un sous formulaire
    Par Patros dans le forum Access
    Réponses: 3
    Dernier message: 09/08/2006, 16h16
  5. Réponses: 3
    Dernier message: 09/07/2004, 11h23

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