foreach
ik heb dus een klein scriptje gemaakt dat getallen optelt en de uitkomst in een mysql tabel zet.
de tabel heeft meerdere gebruikers (per rij dus) en het script zou dus per rij moeten uitellen en niet alles samen van alle gebruikers zoals nu.
Kan ik daarvoor de php foreach functie gebruiken? of iets anders? en hoe?
Alvast bedankt
Quote:
ik heb "dus" ...
vaag zeg, heb je meer info ?
Geef je data model en het script waarmee je alles optelt. Zonder code kunnen we niets.
Jezpur schreef op 09.10.2009 19:28:
Geef je data model en het script waarmee je alles optelt. Zonder code kunnen we niets.
Uiteraard alléén relevante code en geen compleet script.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$con = mysql_connect("localhost","","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("", $con);
$result = mysql_query("SELECT * FROM clients");
while($row = mysql_fetch_array($result))
{
echo $row['h_ruimte'] . " " . $row['h_verkeer'] . " " . $row['h_domein'] . " " . $row['totaal'];
$ruimte = $row['h_ruimte'] * "1";
$verkeer = $row['h_verkeer'] * "1";
$domein = "";
echo "<br />";
echo "Ruimte: ";
echo $ruimte;
echo "Verkeer: ";
echo $verkeer;
echo "Domein: ";
echo $domein;
}
$permaand = $verkeer + $ruimte + $domein;
$totaal = $row['totaal'] + $permaand;
echo $totaal;
echo $permaand;
mysql_query("UPDATE clients SET permaand = '$permaand'"); // permaand
mysql_query("UPDATE clients SET totaal = '$totaal'"); // totaal
mysql_close($con);
?>
error_reporting(E_ALL);
ini_set("display_errors", 1);
$con = mysql_connect("localhost","","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("", $con);
$result = mysql_query("SELECT * FROM clients");
while($row = mysql_fetch_array($result))
{
echo $row['h_ruimte'] . " " . $row['h_verkeer'] . " " . $row['h_domein'] . " " . $row['totaal'];
$ruimte = $row['h_ruimte'] * "1";
$verkeer = $row['h_verkeer'] * "1";
$domein = "";
echo "<br />";
echo "Ruimte: ";
echo $ruimte;
echo "Verkeer: ";
echo $verkeer;
echo "Domein: ";
echo $domein;
}
$permaand = $verkeer + $ruimte + $domein;
$totaal = $row['totaal'] + $permaand;
echo $totaal;
echo $permaand;
mysql_query("UPDATE clients SET permaand = '$permaand'"); // permaand
mysql_query("UPDATE clients SET totaal = '$totaal'"); // totaal
mysql_close($con);
?>
Verder heeft vermenigvuldigen met 1 weinig zin.
$ruimte = $row['h_ruimte'] * "1";
$permaand en $totaal worden pas na de while() uitgerekend. Dus dat doe je met de gegevens uit het laatst opgehaalde record.
dat verklaard ok het vermenigvuldigen met 1, het gaat om het principe.
en dat laatstz begrijp ik niet goed, de update komt na de while ja is dat een probeel? het werkt alleen niet per rij (gebruiker)
zou dit werken?
Gewijzigd op 01/01/1970 01:00:00 door Ruben D
Code (php)
Zo ziet een foreach eruit ;)
EDIT: Ok, "$key => " is optioneel.
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
ok, hoe los ik mijn probleem dan op?
Waarom zou je iets dat je zo kan uitrekenen in de database willen zetten. Als je het nodig hebt reken je het gewoon even uit.
Weet je een oplossing?
Het pas op het moment te berekenen dat je het nodig hebt. Volgens mij vergeet je een WHERE in je UPDATE-query's. Dat neemt echter niet weg dat je dit beter pas kunt berekenen als je het nodig hebt.
Als ik nu een WHERE zet en iets als every row of every id of zo iets?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$con = mysql_connect("localhost","","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("", $con);
$result = mysql_query("SELECT * FROM clients");
if(!$result)
{
echo 'Select error';
}
else
{
while($row = mysql_fetch_array($result))
{
echo $row['h_ruimte'] . " " . $row['h_verkeer'] . " " . $row['h_domein'] . " " . $row['totaal'];
$ruimte = $row['h_ruimte'] * 1;
$verkeer = $row['h_verkeer'] * 1;
$domein = "";
echo "<br />";
echo "Ruimte: " . $ruimte;
echo "Verkeer: " . $verkeer;
echo "Domein: " . $domein;
$permaand = $verkeer + $ruimte + $domein;
$totaal = $row['totaal'] + $permaand;
echo $totaal;
echo $permaand;
$update = mysql_query("UPDATE clients SET permaand = '" . $permaand . "', totaal = '" . $totaal . "' WHERE id = " . $row['id']);
if(!$update)
{
echo 'Update error';
}
}
}
mysql_close($con);
?>
error_reporting(E_ALL);
ini_set("display_errors", 1);
$con = mysql_connect("localhost","","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("", $con);
$result = mysql_query("SELECT * FROM clients");
if(!$result)
{
echo 'Select error';
}
else
{
while($row = mysql_fetch_array($result))
{
echo $row['h_ruimte'] . " " . $row['h_verkeer'] . " " . $row['h_domein'] . " " . $row['totaal'];
$ruimte = $row['h_ruimte'] * 1;
$verkeer = $row['h_verkeer'] * 1;
$domein = "";
echo "<br />";
echo "Ruimte: " . $ruimte;
echo "Verkeer: " . $verkeer;
echo "Domein: " . $domein;
$permaand = $verkeer + $ruimte + $domein;
$totaal = $row['totaal'] + $permaand;
echo $totaal;
echo $permaand;
$update = mysql_query("UPDATE clients SET permaand = '" . $permaand . "', totaal = '" . $totaal . "' WHERE id = " . $row['id']);
if(!$update)
{
echo 'Update error';
}
}
}
mysql_close($con);
?>
Ja, da was wat ik zocht, thx a million SanThe