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 :

Faire un calcul avec le POST


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut Faire un calcul avec le POST
    Bonjour, je débute mon professeur de php, nous fais chauffer le cerveau, mes dans le bon sens .
    Voila l’exercice, nous avons plusieurs pièces, nous devons faire le calcul des "dit" pièces, mais (il y ' a toujours un "mais" ), il faut que se soit possible de mettre ou enlever une pièce très rapidement, grâce au tableau.
    Voilà ce que j'ai conçus, mes c'est le calcul à faire je ne vois pas comment m'y prendre pour faire ce calcul est donnés un résultat.





    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
    <!DOCTYPE html>
    <!--
    To change this license header, choose License Headers in Project Properties.
    To change this template file, choose Tools | Templates
    and open the template in the editor.
    -->
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <?php
            $piece[0]["valeur"] = 2;
            $piece[0]["img"] = "2euro.png"; 
            $piece[1]["valeur"] = 1;
            $piece[1]["img"] = "1euro.png"; 
            $piece[2]["valeur"] = 0.5;
            $piece[2]["img"] = "50cents.png"; 
            $piece[3]["valeur"] = 0.2;
            $piece[3]["img"] = "20cents.png"; 
            $piece[4]["valeur"] = 0.1;
            $piece[4]["img"] = "10cents.png"; 
            $piece[5]["valeur"] = 0.05;
            $piece[5]["img"] = "5cents.png"; 
            $piece[6]["valeur"] = 0.02;
            $piece[6]["img"] = "2cents.png"; 
            $piece[7]["valeur"] = 0.01;
            $piece[7]["img"] = "1cents.png"; 
            $nbpiece = 8;
     
            while ($nbpiece > $num){
                echo '<form action="Distributeur.php" method="post" name="formulaire">
                    <img src="'.$piece[$num]["img"].'" tilte="euro" /><br />
                    <input type="number" name="piece" value="'.$piece[$num]["valeur"].'"><br />
                    <input type="submit" value="Passer ma commande">
                </form>';
                $num ++;
            }
     
     
            ?>
        </body>
    </html>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Déjà utilise une boucle foreach au lieu de cette vilaine boucle while.

    Et c'est quoi le calcul attendu ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Oui j'ai oublié le plus important, il me faut le montant total envoyé par l'utilisateur.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Je corrigerais avec un foreach, mes je ne sais pas l'utiliser avec un formulaire , voilà ma correction mes le $total se réinitialise.


    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
    <!DOCTYPE html>
    <!--
    To change this license header, choose License Headers in Project Properties.
    To change this template file, choose Tools | Templates
    and open the template in the editor.
    -->
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <?php
            $piece[0]["valeur"] = 2;
            $piece[0]["img"] = "2euro.png"; 
            $piece[1]["valeur"] = 1;
            $piece[1]["img"] = "1euro.png"; 
            $piece[2]["valeur"] = 0.5;
            $piece[2]["img"] = "50cents.png"; 
            $piece[3]["valeur"] = 0.2;
            $piece[3]["img"] = "20cents.png"; 
            $piece[4]["valeur"] = 0.1;
            $piece[4]["img"] = "10cents.png"; 
            $piece[5]["valeur"] = 0.05;
            $piece[5]["img"] = "5cents.png"; 
            $piece[6]["valeur"] = 0.02;
            $piece[6]["img"] = "2cents.png"; 
            $piece[7]["valeur"] = 0.01;
            $piece[7]["img"] = "1cents.png"; 
            $nbpiece = 8;
            $total = 0;
     
            $numero = $_POST["piece"];
            $total = $numero + $piece[$num]["valeur"];        
            while ($nbpiece > $num){
                echo '<form action="Distributeur.php" method="post" name="formulaire">
                    <img src="'.$piece[$num]["img"].'" tilte="euro" /><br />
                    <input type="number" name="piece" value="'.$piece[$num]["valeur"].'"><br />
                    <input type="submit" value="Passer ma commande">
                </form>';
                $num ++;
            }
     
            echo $total;
     
            ?>
        </body>
    </html>

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Déjà je suppose qu'on doit pouvoir choisir des pièces différentes donc le <form> </form> doivent être à l'exterieur de la boucle.

    La manière naturelle de conserver le total précédent à chaque envoi de formulaire serait d'utiliser une session PHP.
    Tu peux aussi placer le total en champs "hidden" dans ton formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Mon professeur, interdit d'utiliser les technologie que nous n'avons pas étudier dont #Session.

    Tu peux aussi placer le total en champs "hidden" dans ton formulaire.
    Je n'es pas compris cette phrase, pourriez vous la détailler ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    tu as un autre problème dans ton formulaire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="number" name="piece" value="'.$piece[$num]["valeur"].'">
    Tu mets la valeur de la pièce (2 €, 1 €, 0.5 €,...) dans le value, alors qu'il faut y mettre la quantité de pièce

    ce qui peut s'écrire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="number" name="quantite['.$num.']" value="">
    On récupère via $_POST['quantite'] sous la forme d'un array.

    Mais là,... on ne sait pas ce que tu as appris (donc vers quelle solution on peut t'orienter)...

    • Que sais-tu des array PHP ?
    • connais-tu la formulation foreach(...) ?
    • ... ?
    Dernière modification par Invité ; 15/03/2017 à 08h30.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Je vais essayer de corriger mon code grâce à vos infos.

    • Que sais-tu des array PHP ?
    • connais-tu la formulation foreach(...) ?
      [* ... ?
    Je sais que cela contient un tableau, pour parler grossièrement.
    Oui je sais utiliser un foreach, mes je ne m'en suis jamais servis à travers un formulaire.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Voilà une solution.

    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
    <?php
    // -------------------------------------
    // 1/ définition de l'array des pièce : valeur / image
    	$piece[0]["valeur"] = 2;
    	$piece[0]["img"] = "2euro.png"; 
    	$piece[1]["valeur"] = 1;
    	$piece[1]["img"] = "1euro.png"; 
    	$piece[2]["valeur"] = 0.5;
    	$piece[2]["img"] = "50cents.png"; 
    	$piece[3]["valeur"] = 0.2;
    	$piece[3]["img"] = "20cents.png"; 
    	$piece[4]["valeur"] = 0.1;
    	$piece[4]["img"] = "10cents.png"; 
    	$piece[5]["valeur"] = 0.05;
    	$piece[5]["img"] = "5cents.png"; 
    	$piece[6]["valeur"] = 0.02;
    	$piece[6]["img"] = "2cents.png"; 
    	$piece[7]["valeur"] = 0.01;
    	$piece[7]["img"] = "1cents.png"; 
     
    // -------------------------------------
    // 2/ Traitement : récupération des données / calcul du total
    $total = 0;
    if( isset($_POST['quantite']) )
    {
    	$quantites = $_POST['quantite']; // c'est un array
     
    	// pour s'en convaincre (et visualiser)
    	var_dump($quantites);
     
    	foreach( $quantites as $num => $quantite )
    	{
    		$total += $quantite * $piece[$num]["valeur"]; // calcul du total : on ajoute
    	}
    }
    // -------------------------------------
    // 3/ Formulaire
    ?>
     
    		<form action="" method="post" name="formulaire">
    			<p>
    <?php
    		$nbpiece = count($piece); // 8
     
    		foreach($piece as $num => $val ){ // $num est l'index de l'array ($val n'est pas utilisé ici)
                echo '
                    <img src="'.$piece[$num]["img"].'" tilte="euro" /> '.
    				'<input type="number" min="0" name="quantite['.$num.']" value="'.((!empty($quantites[$num]))? $quantites[$num] : 0 ).'" style="width:50px;"> x '.$piece[$num]["valeur"].' €<br />
                ';
     
            }
    ?>
    			</p>
     
    			<p><input type="submit" value="Passer ma commande"></p>
    		</form>
     
    		<p><b>Total : <?php echo $total; ?> €</b></p>
    A étudier...
    Dernière modification par Invité ; 15/03/2017 à 08h26.

  10. #10
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Je ne vois pas bien l'intérêt de faire les devoirs à la place de Sylvain les gars ?
    Sylvain ? il y a moyen de faire ça avec les moyens proposés par ton prof. Essaie. dis nous ce qui bloque. Le concept du petit TP, c'est de mettre les mains dans le cambouis.
    Alors tu gardes ta boucle while et seulement elle, et tu cherches un peu tout seul...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #11
    Invité
    Invité(e)
    Par défaut
    Oui maîtresse.
    Pardon maîtresse.
    J'le r'f'ra plus maîtresse.
    Si j'aurais su, j'aurais pas v'nu * maitresse...


    Cela dit, c'est un grand garçon (26 ans)... qui ne bosse pas "pour les notes", mais pour apprendre.

    Et là, je pense lui avoir donner matière à étudier plutôt qu'à copier-coller




    Ref. : "La guerre des boutons"
    Dernière modification par Invité ; 15/03/2017 à 10h15.

  12. #12
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    En même temps, quand on a la réponse, ça démange trop quoi...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

Discussions similaires

  1. Question pour faire un calcul avec décimales
    Par rose0729 dans le forum IHM
    Réponses: 5
    Dernier message: 29/09/2012, 22h09
  2. Réponses: 1
    Dernier message: 27/11/2008, 18h00
  3. faire un calcul avec une date
    Par marcuswillbe dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/11/2008, 19h24
  4. Faire des calculs avec des char
    Par contremaitre dans le forum Débuter
    Réponses: 2
    Dernier message: 18/02/2008, 14h18
  5. Faire du calcul avec la valeur d'un élément/attribut
    Par camboui dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 03/11/2005, 16h10

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