Page 1 sur 2
pb calcul
Posté : 13 janv. 2007, 01:12
par YVES
Bonsoir,
ma méthode de calcul ne donne rien lors d'une sauvegarde...
$sql = "UPDATE membres SET fric_sur_compte=fric_sur_compte-(fric_sur_emprunt*1.013-emprunt)";
[/php]
Posté : 13 janv. 2007, 01:16
par Ultim4T0m
Bonsoir,
Tu peux expliquer un peu le problème ?
Ca veut dire quoi "ne donne rien lors d'une sauvegarde" ?
Tu as un message d'erreur, le résultat n'est pas celui attendu...
Posté : 13 janv. 2007, 02:27
par Xenon_54
Quelle est la structure de la table et quel est l'opération à effectuer?
La priorité des opérations doit être prise en compte dans ta requête.
Posté : 14 janv. 2007, 16:23
par YVES
$sql = "UPDATE membres SET fric_sur_compte=fric_sur_compte-(emprunt*1.013-emprunt)";
Voilà le bout de script qui ne fonctionne pas.
"fric_sur_compte" est comme son nom l'indique l'argent sur le compte bancaire.
"emprunt" est la somme qui a été empruntée.
cet update est censé retirer du compte bancaire une somme moins l'emprunt initial multiplié par un certain taux moins l'emprunt initial.....
exemple emprunt= 1000
fric_sur_compte=700
update= 700-1000*1.013-1000 devrait donner la somme à oter de "fric_sur_compte"
ce qui donnerait 700-(1013-1000)= 700-13= 697, donc 13 euros? enlevés du compte bancaire (fric_sur_compte) !
une seule opration fonctionne(rait) mon problème vient de la "complexité" du calcul si j'ose dire.
Posté : 14 janv. 2007, 16:46
par Ultim4T0m
Il n'y a donc pas d'erreur d'afficher, c'est juste que cela ne fait pas ce que tu désires...
Question idiote, mais sait-on jamais, vérifie bien les noms de tes champs, le nom de table, as-tu mis mysql_query($sql); ?
Posté : 14 janv. 2007, 16:48
par Ryle
C'est peut être moi, mais j'ai l'impression que tu n'as répondu à aucune des questions qui t'ont été posées...
- Quel est le problème que tu rencontres ? quelle est la valeur érronée ? quel est le message d'erreur ? Tu donnes un exemple avec le résultat attendu, quel est le résultat réellement obtenu avec cette opération ?
- Quelle est la structure de ta table ? est ce que emprunt est bien une colonne de ta table membres ?
...
Posté : 14 janv. 2007, 18:10
par YVES
voilà le code exact qui est un update passant en tache cron à une certaine heure chez mon hébergeur (il faudrait p-etre que je teste celà en direct ou via mysql? )
<?php
$db= mysql_connect(localhost, xxx, xxx) or die("Impossible de se connecter à la base de données");
mysql_select_db('xxxxx',$db) or die('Erreur de selection base'.mysql_error());
$sql = "UPDATE membres SET fric_sur_compte=fric_sur_compte-(emprunt*1.013)-emprunt";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
?>
la structure de la table est "basique"
x champs dans table membres avec id en index.
le champ "emprunt" est bel et bien là avec INT (10)
comme ce script passe à une certaine heure, je vois ensuite le résultat à l'écran qui ne donne donc rien, pas de modif par rapport à "fric_sur_compte".
Posté : 14 janv. 2007, 19:03
par Ryle
Dans la mesure où personne n'est devant pour voir le résultat du traitement, ce serait peut être bien d'essayer de jouer la requête dans mysql pour voir si elle ne génère pas une erreur...
Sinon tu peux également jouer :
Code : Tout sélectionner
SELECT fric_sur_compte, emprunt, fric_sur_compte-(emprunt*1.013)-emprunt
FROM membres Pour voir les résultats que tu obtiendras lors de l'update
Tu peux aussi l'écrire ainsi
Code : Tout sélectionner
fric_sur_compte-(emprunt*1.013)-emprunt
<=> fric_sur_compte-(emprunt*(1.013-1))
<=> fric_sur_compte-(emprunt*0.013)A défaut de changer le résultat, ça te simplifiera l'écriture

Posté : 14 janv. 2007, 19:16
par Xenon_54
Quelle est la structure de la table exactement? Tu sembles utiliser INT(10) pour des valeurs monétaires...
Posté : 14 janv. 2007, 19:46
par YVES
Bon, j'ai testé toutes le spossibilités en direct dans mysql, apparemment, ca coince à chaque fois.
J'ai refais une modif pour l'update, j'attends la tache cron ato et vous en reparlerai demain.
Sinon, Xenon, ou est le pb avec int(10)?
ma "valeur" monétaire n'est qu'un nombre à 5 chiffres maxi....
Posté : 14 janv. 2007, 19:59
par Ultim4T0m
Pourquoi attendre la tâche cron ? Si après chaque modification tu attends l'exécution de ton script, tu n'as pas terminé et perds du temps inutilement.
Si toutes les possibilités coincent depuis PhpMyAdmin, il te reste à vérifier une nouvelle fois tes champs.
fric_sur_compte est de quel type ?
Posté : 14 janv. 2007, 21:47
par Xenon_54
Bon, j'ai testé toutes le spossibilités en direct dans mysql, apparemment, ca coince à chaque fois.
J'ai refais une modif pour l'update, j'attends la tache cron ato et vous en reparlerai demain.
Sinon, Xenon, ou est le pb avec int(10)?
ma "valeur" monétaire n'est qu'un nombre à 5 chiffres maxi....
INT(10) ne gère pas les décimals.
Posté : 14 janv. 2007, 23:16
par YVES
<?php
$db= mysql_connect(localhost, xxx) or die("Impossible de se connecter à la base de données");
mysql_select_db('xxx',$db) or die('Erreur de selection base'.mysql_error());
SELECT" fric_sur_compte, emprunt FROM membres";
$sql = "UPDATE membres SET fric_sur_compte=fric_sur_compte-(emprunt*1.013)-emprunt";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
?>
voilà la tache cron (que j'ai avancée dans le temps) qui va se déclencher.
je vous tiens au courant, sinon, emprunt est à medium int (5) et fric_sur_compte à int(10)
mon calcul ne doit logiquement pas faire appel ou générer des chiffres à virgule....
je dois ajouter que pour le meme genre de truc avec l'épargne" ca fonctionne impecc mais il n'y a qu'1 calcul
(epargne=epargne*xx)

Posté : 15 janv. 2007, 00:04
par YVES
Heu, ça marche toujours pas
je vais essayer de biaiser et de "décomposer" en plusieurs mouvements, hop

Posté : 15 janv. 2007, 00:21
par Xenon_54
C'est pour toutes les lignes ou une en particulier? Je ne vois pas de WHERE.
As-tu des données sur lesquelles nous pouvons tester? (ainsi que les résultats attendus)