Van en TOT

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dd dd

dd dd

22/04/2013 18:19:47
Quote Anchor link
Hi,

Voor een klant ben ik een script aan het maken. Maar ik heb 2 date time velden en nu wil ik dat je bijvoorbeeld in 2 inputs datums kan invullen en dan zoekt hij de facturen tussen die 2 datums. Dat heb ik nu.

Maar zodra ik bijvoorbeeld dit doe:

Van: 2011-08-12
Tot: 2011-08-19

Dan krijg ik o.a resultaten van 2013 etc, maar wat me wel opvalt is dat de foute resultaten wel in 1 van de 2 date velden een 0000-00-00 als value hebben.

Wie weet hoe ik dit kan oplossen.

Query

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
SELECT
                                            sl.factuurnummer,
                                            sl.factuur_datum_betaald,
                                            sl.factuurdatum,
                                            sl.factuur_omschrijving,
                                            sl.factuur_ex_btw_bedrag,
                                            sl.factuur_btw_bedrag,
                                            sl.factuur_incl_btw_bedrag,
                                            sc.naam,
                                            sc.project_id
                                        FROM factuur sl, projecten_adressen sc
                                        WHERE sl.id_klant = sc.id
                                        AND sc.verwijderd = 0
                                        AND factuurdatum >= '".$mysql->escape($_SESSION['van'])."' AND factuur_datum_betaald <= '".$mysql->escape($_SESSION['tot'])."'
                                        ORDER BY sc.naam
 
PHP hulp

PHP hulp

17/11/2024 22:55:14
 
Erwin H

Erwin H

22/04/2013 18:27:54
Quote Anchor link
Optie 1: zorg altijd dat de data die je database in gaat correct is ('garbage in = garbage out').

Indien je echter '0000-00-00' acceptabel vindt vanwege andere randvoorwaarden, dan zal je in je query die opties moeten gaan uitsluiten. Je zal dus in je query zoiets moeten doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT velden
FROM tabellen
WHERE betaaldatum <= '2011-08-19'
  AND betaaldatum <> '0000-00-00';
 
- SanThe -

- SanThe -

22/04/2013 18:31:35
Quote Anchor link
Is BETWEEN niet beter?
 
Dd dd

dd dd

22/04/2013 18:45:41
Quote Anchor link
Het werkt bijna,

Als ik nu dit invul:

2011-08-11
2011-08-19

Dan krijg ik nog resultaten van:

2011-09-20
2011-03-23
 
Willem vp

Willem vp

22/04/2013 18:45:43
Quote Anchor link
- SanThe - op 22/04/2013 18:31:35:
Is BETWEEN niet beter?

Normaal gesproken zou dat beter zijn, maar hier wordt gecheckt op appels > x en peren < y, en dat valt niet met een between te doen.
 
- SanThe -

- SanThe -

22/04/2013 18:49:09
Quote Anchor link
Willem vp op 22/04/2013 18:45:43:
- SanThe - op 22/04/2013 18:31:35:
Is BETWEEN niet beter?

Normaal gesproken zou dat beter zijn, maar hier wordt gecheckt op appels > x en peren < y, en dat valt niet met een between te doen.


Thanks, dat had ik nog niet door eigenlijk. Beetje vluchtig gekeken.
 
Erwin H

Erwin H

22/04/2013 19:04:09
Quote Anchor link
Shahiem Seymor op 22/04/2013 18:45:41:
Het werkt bijna,

Als ik nu dit invul:

2011-08-11
2011-08-19

Dan krijg ik nog resultaten van:

2011-09-20
2011-03-23

Dan zal je dus moeten controleren op basis van welke 'garbage' waarde die geselecteerd worden en ook die waardes uitsluiten.
 
Dd dd

dd dd

22/04/2013 19:20:28
Quote Anchor link
Echt super bedankt, het is eindelijk gelukt! :D Heel erg bedankt Erwin :)

Oplossing:
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
SELECT
                                            sl.factuurnummer,
                                            sl.factuur_datum_betaald,
                                            sl.factuurdatum,
                                            sl.factuur_omschrijving,
                                            sl.factuur_ex_btw_bedrag,
                                            sl.factuur_btw_bedrag,
                                            sl.factuur_incl_btw_bedrag,
                                            sc.naam,
                                            sc.project_id
                                        FROM factuur sl, projecten_adressen sc
                                        WHERE sl.id_klant = sc.id
                                        AND sc.verwijderd = 0
                                        AND sl.factuurdatum >= '".$mysql->escape($_SESSION['van'])."' AND sl.factuur_datum_betaald <= '".$mysql->escape($_SESSION['tot'])."'
                                        AND sl.factuur_datum_betaald >= '".$mysql->escape($_SESSION['van'])."' AND sl.factuurdatum <= '".$mysql->escape($_SESSION['tot'])."'
                                        AND factuur_datum_betaald <> '0000-00-00'
                                        ORDER BY sc.naam
 



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.