Page 1 sur 1

Problème d'UPDATE MULTIPLE

Posté : 28 août 2008, 10:08
par lakawet
Bonjour,

voici mon problème, j'essai en ce moment de développer une application pour gérer mes comptes bancaires.

jusqu'ici cela ce passait bien jusqu'au moment ou je fais des modif sur un enregistrement de ma compta cela modifie l'ensemble des toto.

voici un exemple concret :

credit=10 , debit=0, total=20
credit=0 , debit=5, total=15
credit=15 , debit=0, total=30

bon voila le blem si je modifie la premiere ligen et que je rajoute 10 en credit le total des autres lignes est modifié, donc j'essaie de faire un update multiple mais rien y fait.

voici mon code de ma page de traitement :
<?php
$id = $_GET['id'];
$id2 = $id - 1;
$id3 = $id + 1;
$datep = $_POST['datep2']; 
$date_uk = substr($datep,6,4)."-".substr($datep,3,2)."-".substr($datep,0,2);
$emetteur = $_POST['liste2'];
$autre = $_POST['mots2'];
$credeb = $_POST['credeb2'];
$montant = $_POST['montant2'];
$oui = $_POST['oui2'];
$non = $_POST['non2'];

$db = mysql_connect('localhost', 'root', '');
mysql_select_db('intracompta',$db);   

$sql = "SELECT total FROM compte WHERE id='$id2'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_array($req);
$toto = $data['total'];

if ( $emetteur =="3" )
{
$emetteur = $autre;
}

if ( $oui == "1")
{
$encaisse = 1;
}
else {
$encaisse = 0;
}

if ( $credeb == "credit" )
{
$credit = $montant;
$total = $toto+$credit;
}

if ( $credeb == "debit" )
{
$debit = $montant;
$total = $toto-$debit;
}

$sql2 = "UPDATE compte SET date='$date_uk',emetteur='$emetteur',credit='$credit',debit='$debit',total='$total',encaisse='$encaisse',id='$id' WHERE id='$id'";
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());

$sql3 = "SELECT total FROM compte WHERE id='$id'";
$req3 = mysql_query($sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error());
$data3 = mysql_fetch_array($req3);
$toto3 = $data3['total'];


$sql4 = "SELECT * FROM compte WHERE id >'$id'";
$req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql4.'<br>'.mysql_error());
while($data4 = mysql_fetch_array($req4))
{
$credit4 = $data4['credit'];
$debit4 = $data4['debit'];

if ( $credit4 == 0.00 )
{
$total4 = $toto3-$debit4;
}
else {
$total4 = $toto3+$credit4;
}

$sql5 = "UPDATE compte SET total='$total4' WHERE id >'$id'";
mysql_query($sql5) or die('Erreur SQL !'.$sql5.'<br>'.mysql_error());
}
echo '<p align="center" class="Style1">Votre entrée a bien &eacute;t&eacute; modifiée. </p>'; 

mysql_close();
?>
merci pour vos lumières 8-)

lakawet

Posté : 28 août 2008, 10:30
par mere-teresa
Tu as un UPDATE multiple ou tu veux un update multiple et tu ne l'as pas ?

Sinon, d'une manière générale, c'est dans le WHERE de l'update que tu filtres les champs sur lesquels tu interviens.

Posté : 28 août 2008, 10:50
par lakawet
je veux un update multiple mais je vois pas comment faire puisque je dois recup le nouveau total de l'enregistrement avant de pouvoir modifier le suivant, je m'explique:

total = 10
total = 20
total = 30

je modifie la premiere ligne

total = 20
total = 30
total = 40

le soucis c'est que dans mon code la ligne 1 fait bien un update la seconde aussi mais la 3eme prends en compte l'ancien total de ligne 2, ce qui donne

total = 20
total = 30
total = 30

j'espere etre assez clair, c'est un casse tete ce truc :shock:

merci

Posté : 28 août 2008, 11:30
par Truc
c'est un casse tete ce truc :shock:
j'ai cor rien dis moi :(

Sans apporter de solutions... d'une manière générale on ne stocke pas de champ contenant un total en BDD. Il est calculé à la volée :-)

Posté : 28 août 2008, 13:56
par lakawet
merci beaucoup, j'ai résolu mon probleme grace a toi Truc.
j'ai calculé à volée les tot et c'est nickel

encore merci :wink:

lakawet