Page 1 sur 2

Pb calcul d'une commande

Posté : 29 mai 2006, 11:57
par velsy
Bonjour,

Voilà j'ai un souci pour calculer une commande, pour être plus clair voici mon code :
<? $req = "SELECT * FROM plateau ORDER BY prix_plateau ASC";
$result = mysql_query($req);
    $prixtot = 0;
while ($donnees = mysql_fetch_array($result)) {
    $id = $donnees["id_plateau"];
    $titre_plateau = ucfirst($donnees["titre_plateau"]);
    $prix_plateau = $donnees["prix_plateau"];
    $qt_plateau = 1 ;
?>
<tr>
              <td><? echo $titre_plateau;?></td>
              <td><? echo $prix_plateau;?>&nbsp;&euro;</td>
<td><input type="text" name="qt_plateau[]"  size="5" maxlength="3" value="0"></td>
            </tr>
    <?
	
$prixtot = $prixtot + ($prix_plateau*$qt_plateau);
    }

    ?>
<tr>
	<td><br>Montant  total : <? echo $prixtot; ?> &euro;</td>
	<td colspan="2" align="center"><input type=button value="Calculer"></td>
</tr>
Mon 1er problème c'est que je n'arrive pas à multiplier le prix par la quantité et mon 2ème c'est que je voudrais que le montant total s'affiche lorsque je clique sur le bouton calculer.

Quelqu'un a-t-il une solution. :cry:

Posté : 29 mai 2006, 12:05
par albat
Suggestion : Lorsque tu présentes un extrait de code,
n'oublie pas d'utiliser les balises
 pour l'encadrer. :pouce:

Je l'ai fait pour toi. ;)

Posté : 29 mai 2006, 12:07
par zeus
Qu'est ce qui est affiché actuellement pour le total ?

Re: Pb calcul d'une commande

Posté : 29 mai 2006, 12:55
par guilt92
Bonjour,
<? $req = "SELECT * FROM plateau ORDER BY prix_plateau ASC";
$result = mysql_query($req);
    $prixtot = 0;
while ($donnees = mysql_fetch_array($result)) {
    $id = $donnees["id_plateau"];
    $titre_plateau = ucfirst($donnees["titre_plateau"]);
    $prix_plateau = $donnees["prix_plateau"];
    $qt_plateau = 1 ;
?>
while ($donnees = mysql_fetch_assoc($result)) {
Utilise mysql_fetch_assoc($result) puisque tu utilises le nom des colonnes dans les parametres. le array sert pour des entiers, par exemple $donnees[0].

Re: Pb calcul d'une commande

Posté : 29 mai 2006, 13:03
par zeus
while ($donnees = mysql_fetch_assoc($result)) {
Utilise mysql_fetch_assoc($result) puisque tu utilises le nom des colonnes dans les parametres. le array sert pour des entiers, par exemple $donnees[0].
Absolument pas :
Le type de tableau retourné depend de la définition du paramètre result_type. En utilisant MYSQL_BOTH (défaut), vous récupèrerez un tableau contenant des indices associatifs et numériques. En utilisant MYSQL_ASSOC, vous ne récupèrerez que les indices associatifs (comme le fonctionnement de la fonction mysql_fetch_assoc()), en utilisant MYSQL_NUM, vous ne récupèrerez que les indices numériques (comme le fonctionnement de la fonction mysql_fetch_row()).

Posté : 29 mai 2006, 13:13
par guilt92
oups désolé, autant pour moi ! Lecture rapide du code et je m attendais a un assoc... :?

Posté : 30 mai 2006, 09:07
par velsy
Salut,

Désolée pour les balises
, merci.
Merci pour les messages, le problème c'est que je n'ai pas tout compris, je débute en php et là je vous avoue que je comprends pas.
Pour info,
lorsque je mets ça :
$prixtot = $prixtot + $prix_plateau; 
J'ai le prix total des plateaux, mais lorsque je mets ça:
$prixtot = $prixtot + ($prix_plateau*$qt_plateau); 
rien ne s'affiche, je ne sais pas comment récupérer la valeur que le client a inscrit.

Posté : 30 mai 2006, 09:15
par guilt92
Ca y est je comprend ton problème.
Tu essaye de récupérer directement la valeur inscrite dans un "input" pour la multiplier à d'autres valeurs.
Le problème est que en php tu ne peux pas accéder à cette valeur directement (à ma connaissance).
Il existe deux solutions : Soit il te faut rafraichir la page, donc en fait tu met ce champ de type input dans un formulaire qui appelle sa propre page et au début de la page tu regardes si ce formulaire a posté une valeur : if(isset($_POST["qt_plateau"])) alors tu fais les calculs ... Cela implique un bouton "Calculer" sur ton formulaire qui rafraichit la page par exemple....

La deuxième solution consiste à utiliser le javascript, qui te permettra de récupérer dynamiquement la valeur du champ à chaque modification par l'utilisateur.

Posté : 30 mai 2006, 09:23
par velsy
Ok, 1er solution le problème c'est que c'est déjà dans un formulaire qui envoit les données par mail, donc ça ne vas pas être possible, non ?(dis moi ce que tu en penses).

2ème solution, je veut bien mettre en place du javascript, mais je ne trouve pas de script simple et clair pour une novice comme moi en javascript.

Si tu as quelque chose de ce type sous la main ça m'intéresse. :wink:

Merci encore pour l'aide.

Posté : 30 mai 2006, 09:41
par guilt92
Le problème est que le javascript te permettrai uniquement d'afficher la valeur, et encore vu que c'est le résultat d'une somme avec des valeurs php. Il me semble que si c'est pour être envoyé dans un mail tu n'auras pas d'autre choix que de rafraichir la page avant l'envoi du mail qui sera déclenché par un bouton "Envoyer" je suppose.

Si tu utilises le javascript cela permettra de faire le rafrachissement sans le bouton "Calculer" c'est le seul avantage que j'y vois. Si ça t'interesse je te donnerai les quelques lignes qui permettent cela.

Posté : 30 mai 2006, 10:43
par velsy
Merci, ça m'intéresse.

Posté : 30 mai 2006, 10:48
par guilt92
<head>
<script language="javascript">
function update()
{
var valeur=document.getElementById("qt_plateau");
window.location="mapage.php?valeur="+valeur.value;
}
</script>
</head>

<body>
<?php
if(isset($_GET["valeur"])) $qt_plateau=$_GET["valeur"];
?>
<input type="text" name="qt_plateau" id="qt_plateau" size="5" maxlength="3" value="0" onchange="update()">
</body>
Dès que l'utilisateur changera la valeur la page s'actualisera. Tu peux profiter de la condition isset() pour savoir si il a rempli cette valeur ou non et donc faire certaines requetes que lorsque le champ n'est pas vide par exemple...

Posté : 30 mai 2006, 11:43
par velsy
Ca fonctionne, sauf que j'ai une liste de plateaux exemple :

prix quantité
light 9 euros 2
éco 8 euros 0


Et donc au lieu de me faire 9*2+8*0, il me fait (9+8)*2

il y a t-il une solution à ce problème?

De plus lorsque la page se réactualise la quantité entrée revient à 0, peut-on laisser afficher la quantité entrée.

Merci encore pour ta précieuse aide.

Posté : 30 mai 2006, 12:02
par guilt92
De plus lorsque la page se réactualise la quantité entrée revient à 0, peut-on laisser afficher la quantité entrée.
Aucun problème, en fait dans ton input tu lui spécifies value="0" ce qui explique qu il le remette à chaque fois. La solution est de laisser 0 si la valeur n'est pas définie et d'inscrire la valeure sinon :
<input type="text" name="qt_plateau" id="qt_plateau" size="5" maxlength="3" onchange="update()" value="<?php if(isset(qt_plateau)) echo $qt_plateau; else echo "0";?>"> 
Pour le deuxième problème il faudrait que tu postes ton nouveau code pour que l'on puisse voir la formule stp.

Posté : 30 mai 2006, 12:36
par velsy
maintenant plus rien ne fonctionne, en plus je ne suis pas là cette après midi, je revois tous ça demain, je poste mon nouveau code demain matin, j'espère que tu seras là.

Merci encore à demain. :wink: