Tel probleem
Aan gezien dit veld iedere 5 min automatisch wordt ge-update zijn er dus heel wat foutive records
De laatste records zijn nu juist, maar alles ervoor is fout, hoe kan ik het nu weer in orde maken!
ID Datum Tijd Count Vers Totaal
143655 18-11-2008 19:45 1833878 73 989
143656 18-11-2008 19:49 1833929 51 33783
143657 18-11-2008 19:54 1833982 53 33783,053
143658 18-11-2008 19:59 1834039 57 33783,11
143659 18-11-2008 20:04 1834093 54 33783,164
Nu zijn dus de laatste ID's ok echter alles wat voor 143655 staat heeft het veld "totaal" fout
Het veld "vers" is een 1000 ste wat bij de totaal is opgeteld
Dus ID 143656 Heeft een totaal van 33783 en daar moet 0,051 vanaf en id 143655 moet worden ge-update naar 33782,949 en zo moet het dan ook met de records daarvoor weet iemand een oplossing
Je hebt nog een ander probleem: je datumveld bevat geen datumwaarden. Een datum moet yyyy-mm-dd zijn. Waarschijnlijk heb je een varchar gebruikt en dat is jammer. Als je een DATETIME veld gebruikt had, had je die in je WHERE condition van je UPDATE query kunnen gebruiken. Een id gebruiken is onzin, want een id zegt niets, die is alleen voor intern gebruik van belang.
Dit is alles wat er in zit met daar achter hoe het wordt opgeslagen
"id" 143659
"maand" Nov
"dag" 18
"tijd" 20:10:27
"dbtime" 18-11-2008 20:04
"count" 1834093
"aantal" 54
"kw_verbruik" 0,6817
"totaal_verbruik_kw" 33783,164
Kan je hier wat mee?
UPDATE tabelnaam
SET totaal = (hier je goede berekening)
WHERE dbtime < '18-11-2008 19:45'
"Is dbtime de datumtijd waarop de record werd ge-insert?"
Ja dat gebeurt
Eerst een backup maken, dan uittesten. En natuurlijk de berekening op de juiste plaats invullen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
error_reporting (E_ALL);
include("connect.php");
$query = mysql_query("SELECT aantal, totaal_verbruik_kw FROM kempers_digidb2. `#1` order by id desc limit 1");
$row = mysql_fetch_array($query);
$row[] = $row[0];
$aantal = "$row[0]";
$totaal = "$row[1]";
$berekening = $aantal / 1000;
mysql_query("UPDATE `#1` SET totaal_verbruik_kw = $totaal - $berekening WHERE dbtime < '2008-09-16 15:25:35'");
?>
error_reporting (E_ALL);
include("connect.php");
$query = mysql_query("SELECT aantal, totaal_verbruik_kw FROM kempers_digidb2. `#1` order by id desc limit 1");
$row = mysql_fetch_array($query);
$row[] = $row[0];
$aantal = "$row[0]";
$totaal = "$row[1]";
$berekening = $aantal / 1000;
mysql_query("UPDATE `#1` SET totaal_verbruik_kw = $totaal - $berekening WHERE dbtime < '2008-09-16 15:25:35'");
?>
Maar hij update nu maar alleen 1 veld ervoor en niet de rest, hoe nu verder?
Gewijzigd op 01/01/1970 01:00:00 door stefan srepmek
dan moet je je even met fetch_array gebruiken en die update query in een while loop zetten...
Zou je me daar even mee kunnen helpen.....