Records ophalen van laatste week/maand/jaar.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Furio Scripting

Furio Scripting

11/07/2016 00:22:48
Quote Anchor link
Beste forumleden,

Ik wil de omzet ophalen van vandaag, week, maand en het jaar.

Nu vermoed ik dat ik iets niet goed doe:

In de order tabel staat een datum kolom wanneer de order is geplaatst, deze kan ik dus gebruiken.

Dit is me huidige code om de orders van afgelopen 7 dagen op te halen:

Pakt dit alle orders van de laatste 7 dagen vanaf vandaag....?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php // Pak alle bestellingen van vandaag en met de status in behandeling of verzonden.
                $database = new databaseGigant();

                $q = 'SELECT * FROM oc_order WHERE (order_status_id = 15) AND date_added >= DATE_SUB(NOW(), INTERVAL 7 DAY) ';
                $result = $database->query($q);

                $aantal = mysqli_num_rows($result);?>



Pakt dit alle orders van de laatste maand vanaf vandaag....?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
 // Pak alle bestellingen van vandaag en met de status in behandeling of verzonden.
                $database = new databaseGigant();

                $q = 'SELECT * FROM oc_order WHERE (order_status_id = 15) AND date_added >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) ';
                $result = $database->query($q);

                $aantal = mysqli_num_rows($result);
 ?>
 
PHP hulp

PHP hulp

23/12/2024 20:38:18
 
Ward van der Put
Moderator

Ward van der Put

11/07/2016 07:01:26
Quote Anchor link
Voor de laatste 7 dagen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$result
= $database->query('
    SELECT *
      FROM oc_order
     WHERE order_status_id = 15
       AND date_added >= curdate() - INTERVAL DAYOFWEEK(curdate()) + 6 DAY
'
);
?>

Met de laatste maand kun je meerdere kanten op: dat kan bijvoorbeeld de afgelopen 30 dagen zijn (en dan hergebruik je de bovenstaande query), maar bijvoorbeeld ook geheel juli 2016 tot nu toe als het vandaag 11 juli 2016 is. Je zou eigenlijk even moeten testen wat het gemakkelijkst werkt.
Gewijzigd op 11/07/2016 07:02:08 door Ward van der Put
 
Furio Scripting

Furio Scripting

11/07/2016 08:15:30
Quote Anchor link
Hartelijk dank! Werkt perfect :)

Hoe zou de query moeten zijn als ik in plaats van de afgelopen 7 dagen alleen de omzet wil krijgen gerekend van maandag t/m zondag. Dus dat vandaag (maandag) hij pas begint met rekenen.

Hetzelfde voor de maand dus van de eerste t/m de laatste dag van de maand.

Alvast super bedankt!
 
Ward van der Put
Moderator

Ward van der Put

11/07/2016 08:39:25
Quote Anchor link
Met de functie YEARWEEK() kun je jaar plus week van een datum gebruiken. De tweede parameter 1 maakt van maandag de eerste dag van de week:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$result
= $database->query('
    SELECT *
      FROM oc_order
     WHERE order_status_id = 15
       AND YEARWEEK(date_added, 1) = YEARWEEK(CURDATE(), 1)
'
);
?>

Een vergelijkbare functie bestaat niet voor jaar plus maand, dus dan moet je die uitsplitsen met de functies YEAR() en MONTH() voor de huidige maand:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$result
= $database->query('
    SELECT *
      FROM oc_order
     WHERE order_status_id = 15
       AND YEAR(date_added) = YEAR(CURDATE())
       AND MONTH(date_added) = MONTH(CURDATE())
'
);
?>
Gewijzigd op 11/07/2016 08:39:57 door Ward van der Put
 
Furio Scripting

Furio Scripting

11/07/2016 10:24:31
Quote Anchor link
Beste Ward,

Is er ook mogelijkheid om vorige week, maand en jaar op te halen?
Gewijzigd op 11/07/2016 10:25:50 door Furio Scripting
 
Ward van der Put
Moderator

Ward van der Put

11/07/2016 10:47:48
Quote Anchor link
Voor het gehele vorige jaar kun je gewoon 1 aftrekken van het huidige jaartal:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$result
= $database->query('
    SELECT *
      FROM oc_order
     WHERE order_status_id = 15
       AND YEAR(date_added) = YEAR(CURDATE()) - 1
'
);
?>

Voor andere datumbereiken is het echter gemakkelijker om te rekenen met een INTERVAL. Voor alle orders van vorige maand trek je bijvoorbeeld INTERVAL 1 MONTH af van de huidige maand én van het huidige jaar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$result
= $database->query('
    SELECT *
      FROM oc_order
     WHERE order_status_id = 15
       AND YEAR(date_added) = YEAR(CURDATE() - INTERVAL 1 MONTH)
       AND MONTH(date_added) = MONTH(CURDATE() - INTERVAL 1 MONTH)
'
);
?>
 
Furio Scripting

Furio Scripting

11/07/2016 13:51:16
Quote Anchor link
HARTELIJK DANK Ward!!!! Deze query's werken perfect
 



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.