Datum probleem
$dag1=date("1-m-Y");
maar hoe krijg ik nu de laatste dag van de huidige maand aangezien dat kan wisselen tussen 30, 31 of schrikkeljaar 28/29
dan zou
$dag2=????
Ik heb al van alles geprobeerd maar kom er niet uit
Ook al vraag ik mij af of je dit uberhaupt in een variabele hoeft te zetten :)
Maar nu kom ik bij het volgende probleem, om een aantal waardes uit een database te halen tussen die datums. Ik heb staan
Code (php)
1
2
3
2
3
<?
$SQL="select * from facturen inner join klanten on facturen.klant = klanten.id where factuurdatum between ".$dag1." and ".$dag2." order by fac_id";
?>
$SQL="select * from facturen inner join klanten on facturen.klant = klanten.id where factuurdatum between ".$dag1." and ".$dag2." order by fac_id";
?>
maar dat geeft Parse error: syntax error, unexpected T_STRING in 29
Code (php)
1
2
3
2
3
<?php
$sql = "SELECT * FROM facturen INNER JOIN klanten ON (facturen.klant = klanten.id) WHERE factuurdatum BETWEEN ".$dag1." AND ".$dag2." ORDER BY fac_id";
?>
$sql = "SELECT * FROM facturen INNER JOIN klanten ON (facturen.klant = klanten.id) WHERE factuurdatum BETWEEN ".$dag1." AND ".$dag2." ORDER BY fac_id";
?>
En ook handig om enters en tabs te gebruiken in je query als die erg lang wordt.
Waar haal je factuurdatum en fac_id vandaan? Zet de tabel naam er voor. Wat helpt als je lange tabel namen hebt om deze even een andere naam te geven in de query.
Code (php)
1
2
2
<?php
$sql = "SELECT f.veldnaam, k.veldnaam FROM facturen AS f INNER JOIN klanten AS k ON (f.klant = k.id) WHERE f.factuurdatum BETWEEN ".$dag1." AND ".$dag2." ORDER BY f.fac_id";[/code]
$sql = "SELECT f.veldnaam, k.veldnaam FROM facturen AS f INNER JOIN klanten AS k ON (f.klant = k.id) WHERE f.factuurdatum BETWEEN ".$dag1." AND ".$dag2." ORDER BY f.fac_id";[/code]
Gewijzigd op 01/01/1970 01:00:00 door Dennis Mertens
edit:
dank zij de edit van boven is mijn toevoeging overbodig geworden :)
Gewijzigd op 01/01/1970 01:00:00 door RvW Of toch niet
Dus tussen dag 1 en dag 28/30/31.
Als dat zo is: je kan ook MONTH() gebruiken!
Scheelt veel ellende en is vaak betrouwbaarder/sneller.
Vergeet niet het YEAR op te geven.
Wat je nu doet is 2 regels php-code en 2 WHERE-attributen opgeven terwijl dat in 1 SQL kan.
Maar iets anders is me opgevallen en dat is dat als ik een parse error krijg dan blijf ik dat krijgen al verander ik iets, zelfs al haal ik wat regels weg. Heb dat met een cache of vertraging op de server te maken? en hoe kan ik zo iets oplossen?
welke code?
Code (php)
maar hoe zit het met die "cache" van der server, kan ik daar iets aan doen?
Je mist een " bij $dag1.
Je kunt het zien omdat de kleuren niet meer goed zijn.
Maar je kan het beter oplossen op de manier waarop Eddy het aangeeft.
Dan wordt het iets als
Code (php)
1
2
3
2
3
<?php
$SQL="SELECT * FROM facturen AS f INNER JOIN klanten AS k ON (f.klant = k.id) WHERE MONTH(f.factuurdatum) = MONTH(NOW()) AND YEAR(f.factuurdatum) = YEAR(NOW()) ORDER BY f.fac_id";
[/code]
$SQL="SELECT * FROM facturen AS f INNER JOIN klanten AS k ON (f.klant = k.id) WHERE MONTH(f.factuurdatum) = MONTH(NOW()) AND YEAR(f.factuurdatum) = YEAR(NOW()) ORDER BY f.fac_id";
[/code]
Gewijzigd op 01/01/1970 01:00:00 door Dennis Mertens
Hier de code:
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
27
28
29
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
27
28
29
<?
if ($_GET["mnd"]!="")
{
$maand=$_GET["mnd"];
}
else
{
$maand=date("m");
}
if ($_GET["jr"]!="")
{
$jaar=$_GET["jr"];
}
else
{
$jaar=date("Y");
}
$dag1=date("$jaar-$maand-1");
$dag2=date("$jaar-$maand-t");
<html>
<body bgcolor="#FFFFFF">
<p>Alle facturen van [code]<? echo date("$jaar-$maand-1");?> t/m <? echo date("$jaar-$maand-t");;?>:
<br><br>
<a href="facturenpmaand.php?mnd=<? echo $maand-1;?>&jr=<? echo $jaar;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=<? echo $maand+1;?>&jr=<? echo $jaar;?>">volgende maand</a>
<br><br>
?>
if ($_GET["mnd"]!="")
{
$maand=$_GET["mnd"];
}
else
{
$maand=date("m");
}
if ($_GET["jr"]!="")
{
$jaar=$_GET["jr"];
}
else
{
$jaar=date("Y");
}
$dag1=date("$jaar-$maand-1");
$dag2=date("$jaar-$maand-t");
<html>
<body bgcolor="#FFFFFF">
<p>Alle facturen van [code]<? echo date("$jaar-$maand-1");?> t/m <? echo date("$jaar-$maand-t");;?>:
<br><br>
<a href="facturenpmaand.php?mnd=<? echo $maand-1;?>&jr=<? echo $jaar;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=<? echo $maand+1;?>&jr=<? echo $jaar;?>">volgende maand</a>
<br><br>
?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis Ham
Lang leve SQL.
Wat je nu doet werkt wel, maar wordt straks veel moeilijker om wijzigingen aan te brengen. Mijn advies: doe het met SQL zoals Dennis Mertens zegt.
Code (php)
1
2
3
2
3
<?
<a href="facturenpmaand.php?mnd=<? echo $maand-1;?>&jr=<? echo $jaar;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=<? echo $maand+1;?>&jr=<? echo $jaar;?>">volgende maand</a>
?>
<a href="facturenpmaand.php?mnd=<? echo $maand-1;?>&jr=<? echo $jaar;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=<? echo $maand+1;?>&jr=<? echo $jaar;?>">volgende maand</a>
?>
dit werkt alleen blijft hij doortellen en komt na maand 12->13
hoe moet hij weten dat je van 12-2008 naar 01-2009 moet gaan en voor terug hetzelfdedan wordt het 0,-1 ens.
Gewijzigd op 01/01/1970 01:00:00 door Dennis Ham
Je moet wel met een if-statement gebruiken.
Hoe bedoel je ? In de if statement die ik hierboven al gebruikt, of moet ik een nieuwe if maken?
maar kom nu weer bij mijn eerste probleem terecht en dat is dat hij niet de laatste dag van de maand geeft maar iedere maand heb nu 31 dagen, dus die t in date('t-m-Y'); geeft niet de laatste dag van de maand zoals het zou moeten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
$dag1=date("$jaar-$maand-1");
$dag2=date("$jaar-$maand-t");
<p>Alle facturen van [code]<? echo $dag1;?> t/m <? echo $dag2;;?>:
<br><br>
<?
if ($maand==1)
{?>
<a href="facturenpmaand.php?mnd=12&jr=<? echo $jaar-1;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=<? echo $maand+1;?>&jr=<? echo $jaar;?>">volgende maand</a>
<?}
if ($maand==12)
{?>
<a href="facturenpmaand.php?mnd=<? echo $maand-1;?>&jr=<? echo $jaar;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=1&jr=<? echo $jaar+1;?>">volgende maand</a>
<?}
else
{?>
<a href="facturenpmaand.php?mnd=<? echo $maand-1;?>&jr=<? echo $jaar;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=<? echo $maand+1;?>&jr=<? echo $jaar;?>">volgende maand</a>
<?}?>
$dag1=date("$jaar-$maand-1");
$dag2=date("$jaar-$maand-t");
<p>Alle facturen van [code]<? echo $dag1;?> t/m <? echo $dag2;;?>:
<br><br>
<?
if ($maand==1)
{?>
<a href="facturenpmaand.php?mnd=12&jr=<? echo $jaar-1;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=<? echo $maand+1;?>&jr=<? echo $jaar;?>">volgende maand</a>
<?}
if ($maand==12)
{?>
<a href="facturenpmaand.php?mnd=<? echo $maand-1;?>&jr=<? echo $jaar;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=1&jr=<? echo $jaar+1;?>">volgende maand</a>
<?}
else
{?>
<a href="facturenpmaand.php?mnd=<? echo $maand-1;?>&jr=<? echo $jaar;?>">vorige maand</a> <a href="facturenpmaand.php?mnd=<? echo $maand+1;?>&jr=<? echo $jaar;?>">volgende maand</a>
<?}?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis Ham
Niet bumpen, zie de FAQ.