[PHP/MySQL] Strings toekennen met behulp van een while loop

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ej ik heb nu een database gebouwd waar onderandere ook een aantal getallen in staan. Deze database is voor het budget opmaken van het gehele bedrijf.

Nu wil ik dus met php die getallen ophalen uit de tabel en die optellen.

Nu het ophalen van de getallen en die optellen niet zo'n groot probleem, alleen als ik dan de getallen uit meerdere rijen wil halen telt hij tot nu toe alleen de laatste getallen op.

Ik heb hiervoor de volgende code gebruikt:

PHP:
1
2
3
4
5
6
7
8
9
$result = mysql_query("SELECT investment_cost, maintenance_cost, renewal_cost, support_cost FROM hardware WHERE user=$user1");
while ($row = mysql_fetch_object($result)) {
  $investment_cost = $row->investment_cost;
  $maintenance_cost = $row->maintenance_cost;
  $renewal_cost = $row->renewal_cost;
  $support_cost = $row->support_cost;
  $total_budget = (int) ($investment_cost+$maintenance_cost+$renewal_cost+$support_cost);
}
mysql_free_result($budget_query);


$user1 is de gebruikersnaam waar je op zoekt.

Als ik de query in MySQL uitvoer krijg ik dit als resultaat:

code:
1
2
3
4
5
6
7
8
9
10
+-----------------+------------------+--------------+--------------+            
| investment_cost | maintenance_cost | renewal_cost | support_cost |            
+-----------------+------------------+--------------+--------------+            
| 13              |               15 |           16 |           17 |            
| 66              |              569 |          234 |          456 |            
| 8026            |                0 |        40000 |            0 |            
| 500             |                0 |            0 |            0 |            
| 20000           |                0 |            0 |          500 |            
+-----------------+------------------+--------------+--------------+            
5 rows in set (0.00 sec)


De uitkomst van $total_budget is nu: € 20500.

Nu snap ik wel dat ie door die while loop de waardes steeds opnieuw instelt dus dat hij daarom alleen de laatste rij pakt.. Maar hoe kan ik dit nu oplossen.. Moet ik dit wel met een while loop doen of zit ik helemaal in de verkeerde richting te kijken?

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 21:31

Gonadan

Admin Beeld & Geluid, Harde Waren
Gebruik += om de waarden er bij op te tellen ipv te vervangen :)
Je telt je total_budget er niet bij op, je vervangt hem steeds :)

SQL:
1
SELECT SUM(investment_cost), SUM(maintenance_cost), SUM(renewal_cost), SUM(support_cost) FROM hardware WHERE user=

Dan heb je geen while nodig :)

[ Voor 75% gewijzigd door Gonadan op 11-05-2006 11:51 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bedoel je dan zo:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<? 
$result = mysql_query("SELECT investment_cost, maintenance_cost, renewal_cost, support_cost FROM hardware WHERE user=$user1"); 
while ($row = mysql_fetch_object($result)) { 
  $investment_cost += $row->investment_cost; 
  $maintenance_cost += $row->maintenance_cost; 
  $renewal_cost += $row->renewal_cost; 
  $support_cost += $row->support_cost; 
  $total_budget = (int) ($investment_cost+$maintenance_cost+$renewal_cost+$support_cost); 
} 
mysql_free_result($budget_query); 
?>

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 21:31

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op donderdag 11 mei 2006 @ 11:50:
bedoel je dan zo:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<? 
$result = mysql_query("SELECT investment_cost, maintenance_cost, renewal_cost, support_cost FROM hardware WHERE user=$user1"); 
while ($row = mysql_fetch_object($result)) { 
  $investment_cost += $row->investment_cost; 
  $maintenance_cost += $row->maintenance_cost; 
  $renewal_cost += $row->renewal_cost; 
  $support_cost += $row->support_cost; 
  $total_budget = (int) ($investment_cost+$maintenance_cost+$renewal_cost+$support_cost); 
} 
mysql_free_result($budget_query); 
?>
Dat kan, je had ook alleen bij de total budget de += kunnen doen.
PHP:
1
2
3
4
5
6
$result = mysql_query("SELECT SUM(investment_cost), SUM(maintenance_cost), SUM(renewal_cost), SUM(support_cost) FROM hardware WHERE user=$user1")
  or die("shit");
$row = mysql_fetch_row($result) ;
$total_budget = $row[0] + $row[1] + $row[2] + $row[3];

mysql_free_result($budget_query);

Werkt makkelijker :)

[ Voor 19% gewijzigd door Gonadan op 11-05-2006 11:55 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<? 
$result = mysql_query("SELECT SUM(investment_cost), SUM(maintenance_cost), SUM(renewal_cost), SUM(support_cost) FROM hardware WHERE user=$user1"); 
$row = mysql_fetch_assoc($result));
if ($row) {
  $investment_cost = $row['investment_cost'];
  $maintenance_cost = $row['maintenance_cost'];
  $renewal_cost = $row['renewal_cost']; 
  $support_cost = $row['support_cost']; 
}

$total_budget = (int) ($investment_cost+$maintenance_cost+$renewal_cost+$support_cost); 
mysql_free_result($budget_query); 
?>


edit:
net te laat 8)7

[ Voor 18% gewijzigd door dip op 11-05-2006 11:55 ]

It's scientifically known, that base improves the tase of cheezes!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
tnx hij werkt nu _/-\o_

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 21:31

Gonadan

Admin Beeld & Geluid, Harde Waren
PHP:
1
2
3
4
5
6
7
8
<?
$result = mysql_query("SELECT SUM(investment_cost)+SUM(maintenance_cost)+SUM(renewal_cost)+SUM(support_cost) FROM hardware WHERE user=$user1")
  or die("shit");
$row = mysql_fetch_row($result) ;
$total_budget = $row[0];

mysql_free_result($budget_query);
?>

Is nog makkelijker :)

[ Voor 5% gewijzigd door Gonadan op 11-05-2006 12:11 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8

Pagina: 1