SUM van een field
Hier mijn 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
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)) {
........
?>
$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?
while-loop{
$totaal = $totaal + $row['ptijd'];
}
echo $totaal;
Thanx, getest en het werkt inderdaad. Zo simpel dus...
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.
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