SUM van een field

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Renzo Massaro

Renzo Massaro

22/07/2011 10:50:51
Quote Anchor link
Hallo,

Hier mijn script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
$result
= mysql_query("SELECT data.*, categorie.*, instellingen.*,
DATE(Inrijtijd) AS datumveld,
TIME(Inrijtijd) AS tijdveld,
DATE(Uitrijtijd) AS datumveld2,
TIME(Uitrijtijd) AS tijdveld2,
ROUND(Parkeertijd, 2) AS ptijd
FROM data
INNER JOIN categorie ON data.Categorie = categorie.Categorienr
INNER JOIN instellingen ON data.Personeelsnummer = instellingen.Naam
WHERE Naammedewerker LIKE '"
.$_POST['medewerker']."'
                              "
);
$rows = mysql_num_rows($result);
$aantalrows =  mysql_num_rows($result);
//echo $aantalrows;
$naam = $_POST['medewerker'];
if($rows == 0){
echo 'Met deze selectie zijn geen gegevens gevonden!!';
echo '<A HREF="javascript:javascript:history.go(-1)">Probeer het opnieuw</A>';

}
else{
while ($row = mysql_fetch_array($result)) {

........


?>


Ik wil van veld Parkeertijd een optelsom maken en die als eindresultaat onderaan de lijst zetten van het totaal. NU kan ik in de query SUM() zetten, maar als ik dat doen dan is de ROUND(Parkeertijd) die ik ook aan heb gemaakt leeg. Ik denk dus dat ik in de while loop iets met optellen moet doen, maar hoe doe ik dat?

Iemand die mij kan helpen?
 
PHP hulp

PHP hulp

27/04/2024 17:30:33
 
Tobias Tobias

Tobias Tobias

22/07/2011 11:51:18
Quote Anchor link
$totaal = 0;
while-loop{
$totaal = $totaal + $row['ptijd'];
}
echo $totaal;
 
Renzo Massaro

Renzo Massaro

22/07/2011 11:55:54
Quote Anchor link
Thanx, getest en het werkt inderdaad. Zo simpel dus...
 
Joren de Wit

Joren de Wit

22/07/2011 14:10:19
Quote Anchor link
Het is slimmer om dit wel gewoon door de database te laten doen. Zeker naarmate het aantal records groeit, kan dat verschil maken in de performance.

Om je vraag te beantwoorden waarom het niet werkt: de som van die waarde is een aparte vraag die je stelt aan de database en kun je dus niet in dezelfde query bepalen. De som is een eigenschap van een groep records terwijl jij ook data van individuele records wilt. Een aparte query met SUM() en de juiste GROUP BY clausule, is dus de oplossing.
 
Noppes Homeland

Noppes Homeland

22/07/2011 17:27:08
Quote Anchor link
En dit:
WHERE Naammedewerker LIKE '".$_POST['medewerker']."'

is ook niet goed: LIKE zorgt voor een full table scan terwijl je in feite bedoelt
1. WHERE Naammedewerker LIKE %'".$_POST['medewerker']."'
of
2. WHERE Naammedewerker LIKE '".$_POST['medewerker']."'%
of
3. WHERE Naammedewerker LIKE %'".$_POST['medewerker']."'%
of
4. WHERE Naammedewerker = '".$_POST['medewerker']."'

En om op deze manier met $_POST om te gaan binnen je SQL-statement resulteerd geheid in SQL-Injectie

Ook hier weer:
- bij _fetch_array doe je er verstandiger aan de 2de parameter mee te geven, maar nog beter is gewoon altijd te fetchen met _fetch_assoc
- maak geen overbodige variabelen aan

en zo te zien ga je ook nog eens verkeerd om met datum/tijd

Voor de rest sluit ik mij voor de volle 200% aan bij Joren de Wit
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.