Petit problème de calcul simple
Résolu/Fermé
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
-
5 nov. 2012 à 10:12
Bonta Messages postés 36 Date d'inscription lundi 29 octobre 2012 Statut Membre Dernière intervention 7 février 2013 - 5 nov. 2012 à 12:14
Bonta Messages postés 36 Date d'inscription lundi 29 octobre 2012 Statut Membre Dernière intervention 7 février 2013 - 5 nov. 2012 à 12:14
A voir également:
- Petit problème de calcul simple
- Calcul moyenne excel - Guide
- Iphone 14 simple - Guide
- Excel trier du plus grand au plus petit - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Petit 1 comme ² ✓ - Forum Windows
13 réponses
Freedomsoul
Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
97
Modifié par Freedomsoul le 5/11/2012 à 10:15
Modifié par Freedomsoul le 5/11/2012 à 10:15
A tes lignes :
ce sont des opérations, et non des concaténation, les . n'ont rien à faire là :)
et les parenthèses ne sont pas utiles ici ^^
$maj_1 = (.$r['qte_depot1']. + ($stock1)); $maj_2 = (.$r['qte_depot1']. + ($stock2)); $maj_3 = (.$r['qte_depot1']. + ($stock3));
ce sont des opérations, et non des concaténation, les . n'ont rien à faire là :)
$maj_1 = $r['qte_depot1'] + $stock1; $maj_2 = $r['qte_depot1'] + $stock2; $maj_3 = $r['qte_depot1'] + $stock3;
et les parenthèses ne sont pas utiles ici ^^
astuces72
Messages postés
7762
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2024
1 639
5 nov. 2012 à 10:16
5 nov. 2012 à 10:16
hello
$maj_1 = (.$r['qte_depot1']. + ($stock1));
$maj_2 = (.$r['qte_depot1']. + ($stock2));
$maj_3 = (.$r['qte_depot1']. + ($stock3));
c'est quoi ces points devant $r ?
enlève les.
$maj_1 = (.$r['qte_depot1']. + ($stock1));
$maj_2 = (.$r['qte_depot1']. + ($stock2));
$maj_3 = (.$r['qte_depot1']. + ($stock3));
c'est quoi ces points devant $r ?
enlève les.
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 10:21
5 nov. 2012 à 10:21
les . ne servent donc qu'a concaténer ?
je vais essayer merci :-)
je vais essayer merci :-)
Freedomsoul
Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
97
5 nov. 2012 à 10:23
5 nov. 2012 à 10:23
C'est ça !
Freedomsoul
Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
97
Modifié par Freedomsoul le 5/11/2012 à 10:23
Modifié par Freedomsoul le 5/11/2012 à 10:23
Je viens de voir mais pour les requetes, il ne faut pas (?)
Mettre de quote au niveau des noms des colonnes, de même , parfois tu précises le nom de la table, mais pas toujours (where / set), sachant que tu n'utilises qu'une seule table, pas besoin de le préciser, après selon ta manières de procéder, tu peux l'ajouter, mais dans ce cas, ajout le partout ! (non ?)
deviendrait:
même principe pour l'insertion
Qu'en pensez vous ?
Mettre de quote au niveau des noms des colonnes, de même , parfois tu précises le nom de la table, mais pas toujours (where / set), sachant que tu n'utilises qu'une seule table, pas besoin de le préciser, après selon ta manières de procéder, tu peux l'ajouter, mais dans ce cas, ajout le partout ! (non ?)
$upd1 = "UPDATE 'gesp'.'catalogue' SET 'qte_depot1' = '$maj_1','qte_depot2' = '$maj_2', 'qte_depot3' = '$maj_3' WHERE 'catalogue'.'ref' ='$reference_1'" ;
deviendrait:
$upd1 = "UPDATE catalogue SET qte_depot1 = '$maj_1', qte_depot2 = '$maj_2', qte_depot3 = '$maj_3' WHERE ref ='$reference_1'" ;
même principe pour l'insertion
Qu'en pensez vous ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 10:30
5 nov. 2012 à 10:30
En fait phpmyadmin en met. lorsqu'il y en a c'est que j'ai tout betement fait une requete similaire sur phpmyadmin et remplacé mes valeurs fixes par mes variables.
Je fais le test sans et te dis si cela fonctionne bien sans :)
Je fais le test sans et te dis si cela fonctionne bien sans :)
astuces72
Messages postés
7762
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2024
1 639
5 nov. 2012 à 10:31
5 nov. 2012 à 10:31
cette requête (freedomsoul)est effectivement la bonne:
$upd1 = "UPDATE catalogue SET qte_depot1 = '$maj_1', qte_depot2 = '$maj_2', qte_depot3 = '$maj_3' WHERE ref ='$reference_1'" ;
$upd1 = "UPDATE catalogue SET qte_depot1 = '$maj_1', qte_depot2 = '$maj_2', qte_depot3 = '$maj_3' WHERE ref ='$reference_1'" ;
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 10:35
5 nov. 2012 à 10:35
Effectivement de plus cela simplifie largement la lecture et évite les erreurs de ' :-)
mais du coup cela fonctionne mais je m'aperçois que le calcul n'est pas effectué ...
les valeurs de ma bdd sont remplacés par les variables $stock1 , $stock2, $sotck3 .
du coup j'ai fait un echo $maj_1 et la valeurs est bien égale a $stock1 et ainsi de suite. quelqu'un a une idée???
mais du coup cela fonctionne mais je m'aperçois que le calcul n'est pas effectué ...
les valeurs de ma bdd sont remplacés par les variables $stock1 , $stock2, $sotck3 .
du coup j'ai fait un echo $maj_1 et la valeurs est bien égale a $stock1 et ainsi de suite. quelqu'un a une idée???
Freedomsoul
Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
97
5 nov. 2012 à 11:07
5 nov. 2012 à 11:07
ah ! logique !
$upd1 = "UPDATE catalogue SET qte_depot1 = '".$maj_1."', qte_depot2 = '".$maj_2."', qte_depot3 = '".$maj_3."' WHERE ref ='".$reference_1."'" ;
Explication :
Ici, on va remplacer la valeur de la variable:
"champs = '" . $maj_1 . "'"
on a la double quote pour la chaine (requete) et la simple quote pour la valeur, or on veut la valeur de la variable !
en gros :
echo $var; // Affichage la valeur de $var
echo '$var'; // affiche $var
echo "$var"; // Affichage la valeur de $var (différence entre " et ')
echo 'Valeur : '.$var.' ! '; // Affichage: Valeur : [et la valeur de $var]
$upd1 = "UPDATE catalogue SET qte_depot1 = '".$maj_1."', qte_depot2 = '".$maj_2."', qte_depot3 = '".$maj_3."' WHERE ref ='".$reference_1."'" ;
Explication :
Ici, on va remplacer la valeur de la variable:
"champs = '" . $maj_1 . "'"
on a la double quote pour la chaine (requete) et la simple quote pour la valeur, or on veut la valeur de la variable !
en gros :
echo $var; // Affichage la valeur de $var
echo '$var'; // affiche $var
echo "$var"; // Affichage la valeur de $var (différence entre " et ')
echo 'Valeur : '.$var.' ! '; // Affichage: Valeur : [et la valeur de $var]
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 11:33
5 nov. 2012 à 11:33
Ca commence a devenir compliqué la :-D
Si j'ai bien compris echo $var; = echo "$var"; C'est la meme différence que pour afficher NULL ou 0 est ce bien cela?
Mais je ne comprends pas en quoi cela explique que ce qui est mis à jour dans ma table ne soit pas le résultat du calcul ...
Si j'ai bien compris echo $var; = echo "$var"; C'est la meme différence que pour afficher NULL ou 0 est ce bien cela?
Mais je ne comprends pas en quoi cela explique que ce qui est mis à jour dans ma table ne soit pas le résultat du calcul ...
Freedomsoul
Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
97
5 nov. 2012 à 11:39
5 nov. 2012 à 11:39
euh, en faite, ce que j'ai mis précedemment n'est pas forcé lié à ton problème,
mais en gros, au niveau des quotes, les " accepte les variables, mais pas les ' ^^
comment ça " Mais je ne comprends pas en quoi cela explique que ce qui est mis à jour dans ma table ne soit pas le résultat du calcul ...
" ?
qu'est ce qui n'est pas bon ?
mais en gros, au niveau des quotes, les " accepte les variables, mais pas les ' ^^
comment ça " Mais je ne comprends pas en quoi cela explique que ce qui est mis à jour dans ma table ne soit pas le résultat du calcul ...
" ?
qu'est ce qui n'est pas bon ?
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 11:44
5 nov. 2012 à 11:44
en fait il y a bien une mise a jour de ma table mais ce n'est pas le résultat du calcul. Je dois avouer que je n'y comprends plus rien :x
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 11:40
5 nov. 2012 à 11:40
je récapitule:
<?php
//on déclare les variables
$reference = $_POST['ref1'];
$stock1= $_POST['maj1'];
$stock2= $_POST['maj2'];
$stock3= $_POST['maj3'];
//récupération des valeurs actuelles
$req = mysql_query ("SELECT qte_depot1,qte_depot2,qte_depot3 FROM catalogue WHERE ref='$reference'", $connexion);
if ($req)
{
while ($r = mysql_fetch_array($req));
{
$maj_1 = $r['qte_depot1'] + $stock1;
$maj_2 = $r['qte_depot1']+ $stock2;
$maj_3 = $r['qte_depot1'] + $stock3;
}
}
else
{
echo 'erreur';
}
//requete de mise a jour du stock
$upd1 = "UPDATE catalogue SET qte_depot1 = '$maj_1', qte_depot2 = '$maj_2', qte_depot3 = '$maj_3' WHERE ref ='$reference'" ;
mysql_query ($upd1) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
//requete d'insertion d'une nouvelle ligne dans la table historique pour une exploitation ultérieure.
$histo = 'INSERT INTO historique VALUES(CURRENT_TIMESTAMP , '$reference', '$stock1','$stock2','$stock3';
mysql_query ($histo) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_close ();
?>
Donc au moment de faire les calculs en principe ça devrais être bon. c'est lors du UPDATE que je dois mettre " pour utiliser la valeur...
<?php
//on déclare les variables
$reference = $_POST['ref1'];
$stock1= $_POST['maj1'];
$stock2= $_POST['maj2'];
$stock3= $_POST['maj3'];
//récupération des valeurs actuelles
$req = mysql_query ("SELECT qte_depot1,qte_depot2,qte_depot3 FROM catalogue WHERE ref='$reference'", $connexion);
if ($req)
{
while ($r = mysql_fetch_array($req));
{
$maj_1 = $r['qte_depot1'] + $stock1;
$maj_2 = $r['qte_depot1']+ $stock2;
$maj_3 = $r['qte_depot1'] + $stock3;
}
}
else
{
echo 'erreur';
}
//requete de mise a jour du stock
$upd1 = "UPDATE catalogue SET qte_depot1 = '$maj_1', qte_depot2 = '$maj_2', qte_depot3 = '$maj_3' WHERE ref ='$reference'" ;
mysql_query ($upd1) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
//requete d'insertion d'une nouvelle ligne dans la table historique pour une exploitation ultérieure.
$histo = 'INSERT INTO historique VALUES(CURRENT_TIMESTAMP , '$reference', '$stock1','$stock2','$stock3';
mysql_query ($histo) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_close ();
?>
Donc au moment de faire les calculs en principe ça devrais être bon. c'est lors du UPDATE que je dois mettre " pour utiliser la valeur...
Freedomsoul
Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
97
Modifié par Freedomsoul le 5/11/2012 à 11:47
Modifié par Freedomsoul le 5/11/2012 à 11:47
c'est pas à ce niverau que y'a un problème aussi ?
$maj_1 = $r['qte_depot1'] + $stock1;
$maj_2 = $r['qte_depot1']+ $stock2;
$maj_3 = $r['qte_depot1'] + $stock3;
toujours le qte_depot1 ? Pourtant tu récupères les autres (2 et 3) dans ton select )
par contre, ton while me parait inutile, vu que la référence est unque , logiquement, non?
:)
$maj_1 = $r['qte_depot1'] + $stock1;
$maj_2 = $r['qte_depot1']+ $stock2;
$maj_3 = $r['qte_depot1'] + $stock3;
toujours le qte_depot1 ? Pourtant tu récupères les autres (2 et 3) dans ton select )
par contre, ton while me parait inutile, vu que la référence est unque , logiquement, non?
:)
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 11:52
5 nov. 2012 à 11:52
non non c'est normal. la référence c'est le 1 :)
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 11:52
5 nov. 2012 à 11:52
je récupère les trois pour des manipilations ultérieures.
Freedomsoul
Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
97
Modifié par Freedomsoul le 5/11/2012 à 11:55
Modifié par Freedomsoul le 5/11/2012 à 11:55
mais donc ? ou est le problème, je ne comprends pas bien :D
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
Modifié par Bonta le 5/11/2012 à 12:02
Modifié par Bonta le 5/11/2012 à 12:02
en fait la ligne $maj_1 = ($r['qte_depot1']) + ($stock1); pose problème.
si mon qte_depot1 =5
et stock1 = 4
lors du UPDATE la BDD m'affiche 4 et non 9
mais si je remplace mes variables par des valeurs, exemple $maj_1 = 5 + 4
le UPDATE prendra bien la valeur 9.
enfin je prends l'exemple de cette ligne mais c'est valable pour les trois.
si mon qte_depot1 =5
et stock1 = 4
lors du UPDATE la BDD m'affiche 4 et non 9
mais si je remplace mes variables par des valeurs, exemple $maj_1 = 5 + 4
le UPDATE prendra bien la valeur 9.
enfin je prends l'exemple de cette ligne mais c'est valable pour les trois.
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 12:03
5 nov. 2012 à 12:03
J'en ai conclu que le problème ne viens pas du calcul en soit mais plutot de la méthode utilisée pour récupérer la valeur qte_depot1 car je pense que par défaut la valeur doit être 0 en cas de disfonctionnement.
Utilisateur anonyme
Modifié par le père. le 5/11/2012 à 12:04
Modifié par le père. le 5/11/2012 à 12:04
Bonjour
Il ne faut pas mettre de ; immédiatement après le while. Sinon, la boucle porte uniquement sur le ; (instruction vide), pas sur le groupe d'instructions compris entre { et }
Tel que c'est écrit, quand tu exécutes les instructions
Tu es sorti du while avec $r==false
while ($r = mysql_fetch_array($req));
Il ne faut pas mettre de ; immédiatement après le while. Sinon, la boucle porte uniquement sur le ; (instruction vide), pas sur le groupe d'instructions compris entre { et }
Tel que c'est écrit, quand tu exécutes les instructions
{ $maj_1 = $r['qte_depot1'] + $stock1; $maj_2 = $r['qte_depot1']+ $stock2; $maj_3 = $r['qte_depot1'] + $stock3; }
Tu es sorti du while avec $r==false
Freedomsoul
Messages postés
509
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
17 avril 2013
97
5 nov. 2012 à 12:09
5 nov. 2012 à 12:09
Fuuuuuuuuuuuuuuuu, je l'avais pas vuuuuuuuuuuu ><'
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 12:14
5 nov. 2012 à 12:14
merci pour l'aide en tout cas ça m'a permis de comprendre des choses et nettoyer un peu mes requetes sql :-)
Bonta
Messages postés
36
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
7 février 2013
1
5 nov. 2012 à 12:07
5 nov. 2012 à 12:07
Purée Le Père = DIEU !!!! :-D
Merci ça marche! je crois que j'ai mal compris le while, vais revoir ça merci!
Merci ça marche! je crois que j'ai mal compris le while, vais revoir ça merci!