selecteren vanaf datum
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
...
// Activiteiten weergeven
unset($dag);
$dag = date('j');
$dag_z = date('d');
unset($maand);
$maand = date('n');
$maand_z = date('m');
unset($jaar);
$jaar = date('Y');
$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('".$dag_z."-".$maand_z."-".$jaar."','%e %c %Y') and genre='activiteit' ORDER BY date DESC LIMIT 5";
...
?>
...
// Activiteiten weergeven
unset($dag);
$dag = date('j');
$dag_z = date('d');
unset($maand);
$maand = date('n');
$maand_z = date('m');
unset($jaar);
$jaar = date('Y');
$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('".$dag_z."-".$maand_z."-".$jaar."','%e %c %Y') and genre='activiteit' ORDER BY date DESC LIMIT 5";
...
?>
date veld in tabel 'j/n/Y'
Ik krijg alleen geen resultaat, weet iemand waarom niet?
Doe de datum in het juiste type, lees in dit waarom.
Voor nu kan je NOW() gebruiken.
Zie ook deze tutorial.
Thanx :) dat wordt dus de alle velden omschrijven... is daar een makkelijke (automatische) manier voor?
Als ik hem nu met NOW() werkend wil krijgen heb ik dit gedaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
...
$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('NOW()','%e %c %Y') and genre='activiteit' ORDER BY date DESC LIMIT 5";
$resultbis=mysql_query($querybis) or die(mysql_error());
while ($rowbis = mysql_fetch_array($resultbis)) {
echo "<table>\n";
echo " <tr>\n";
echo " <td style=\"padding-left: 15px;\">\n";
echo " <font class=\"sidered\">» ".$rowbis['titel']."</font><br>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
}
...
?>
...
$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('NOW()','%e %c %Y') and genre='activiteit' ORDER BY date DESC LIMIT 5";
$resultbis=mysql_query($querybis) or die(mysql_error());
while ($rowbis = mysql_fetch_array($resultbis)) {
echo "<table>\n";
echo " <tr>\n";
echo " <td style=\"padding-left: 15px;\">\n";
echo " <font class=\"sidered\">» ".$rowbis['titel']."</font><br>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
}
...
?>
Er staan nog 2 activiteiten in na vandaag. Deze zou die zo dan toch weer moeten geven?
sven schreef op 30.10.2009 23:37:
date veld in tabel 'j/n/Y'
en je format met spaties. Klopt dat?
format met spaties, bedoel je daar wat ik in m'n query doe mee?
Hoe ziet dat date veld er uit in de database?
Je zegt dat je in de database je zooi als j/n/Y hebt staan, maar in je query doe je DATE_FORMAT('NOW()','%e %c %Y'), met spaties dus.
deel van het script kwam uit een tutorial, heeft varchar voor de datum gebruikt :(
Omschrijven naar date --> 2009-01-01 en dan werkt
Code (php)
1
$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('".$dag_z."-".$maand_z."-".$jaar."','%e %c %Y') and genre='activiteit' ORDER BY date DESC LIMIT 5";
wel?
Dit '%e %c %Y' zal nooit een datum geven, wel tekst. Hier zal je ook nooit fatsoenlijk op kunnen sorteren omdat dan 01 01 2009 vroeger zal zijn dan 31 01 1980.
$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('01-01-2009"','%Y-%c-%e') and genre='activiteit' ORDER BY date DESC LIMIT 5";
geeft geen datum, alleen tekst --> datums na 01-01-2009 in de database
snap dan niet hoe wel te selecteren of begrijp ik het dan niet?
Als je datums als DATE opslaat kan je er van alles mee doen.
alles netjes in de database gestopt in een 'datumveld' met de volgende 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
if($_GET['action'] == "do") {
$querybis="SELECT id,date,datumveld FROM agenda";
$resultbis=mysql_query($querybis) or die(mysql_error());
while($rowbis = mysql_fetch_array($resultbis)) {
$sql = "UPDATE agenda SET `datumveld` = '".$_POST['datumveldinvoer_'.$rowbis['id'].'']."' WHERE `id` = '".$rowbis['id']."'";
$query = mysql_query($sql);
if($query == TRUE) {
echo "Query ".$rowbis['id']."succesvol<br>\n";
}else{
echo "Query niet succesvol<br><br>";
echo mysql_error();
}
}
}else{
// Weergeven formulier
$querybis="SELECT id,date,datumveld FROM agenda";
$resultbis=mysql_query($querybis) or die(mysql_error());
echo "<form method=\"post\" border=\"0\" cellspacing=\"0\" action=\"ingelogd.php?pagina=fast&action=do\">";
echo "<table>\n";
while ($rowbis = mysql_fetch_array($resultbis)) {
$datum = $rowbis ['date'];
$datum_dag = substr($datum, 0, 2);
if(substr($datum_dag, -1) == "/") {
// 0/
$dag = "0".substr($datum_dag, 0, 1);
$datum_maand = substr($datum, 2, 2);
if(substr($datum_maand, -1) == "/") {
// 0/
$maand = "0".substr($datum_maand, 0, 1);
}else{
// 00/
$maand = $datum_maand;
}
}else{
// 00/
$dag = $datum_dag;
$datum_maand = substr($datum, 3, 2);
if(substr($datum_maand, -1) == "/") {
// 0/
$maand = "0".substr($datum_maand, 0, 1);
}else{
// 00/
$maand = $datum_maand;
}
}
$jaar = substr($datum, -4);
echo " <tr>\n";
echo " <td>";
echo " ".$rowbis['date'];
echo " </td>\n";
echo " <td><input type=\"text\" name=\"datumveldinvoer_".$rowbis['id']."\" size=\"20\" value=\"".$jaar."-".$maand."-".$dag."\"></td>\n";
echo " </tr>\n";
}
echo " <tr><td> </td><td><input class=\"inputbutton\" type=\"submit\" name=\"submit\" value=\"Wijzigen\"></tr>\n";
echo "</table>\n";
echo "</form>\n";
}
?>
if($_GET['action'] == "do") {
$querybis="SELECT id,date,datumveld FROM agenda";
$resultbis=mysql_query($querybis) or die(mysql_error());
while($rowbis = mysql_fetch_array($resultbis)) {
$sql = "UPDATE agenda SET `datumveld` = '".$_POST['datumveldinvoer_'.$rowbis['id'].'']."' WHERE `id` = '".$rowbis['id']."'";
$query = mysql_query($sql);
if($query == TRUE) {
echo "Query ".$rowbis['id']."succesvol<br>\n";
}else{
echo "Query niet succesvol<br><br>";
echo mysql_error();
}
}
}else{
// Weergeven formulier
$querybis="SELECT id,date,datumveld FROM agenda";
$resultbis=mysql_query($querybis) or die(mysql_error());
echo "<form method=\"post\" border=\"0\" cellspacing=\"0\" action=\"ingelogd.php?pagina=fast&action=do\">";
echo "<table>\n";
while ($rowbis = mysql_fetch_array($resultbis)) {
$datum = $rowbis ['date'];
$datum_dag = substr($datum, 0, 2);
if(substr($datum_dag, -1) == "/") {
// 0/
$dag = "0".substr($datum_dag, 0, 1);
$datum_maand = substr($datum, 2, 2);
if(substr($datum_maand, -1) == "/") {
// 0/
$maand = "0".substr($datum_maand, 0, 1);
}else{
// 00/
$maand = $datum_maand;
}
}else{
// 00/
$dag = $datum_dag;
$datum_maand = substr($datum, 3, 2);
if(substr($datum_maand, -1) == "/") {
// 0/
$maand = "0".substr($datum_maand, 0, 1);
}else{
// 00/
$maand = $datum_maand;
}
}
$jaar = substr($datum, -4);
echo " <tr>\n";
echo " <td>";
echo " ".$rowbis['date'];
echo " </td>\n";
echo " <td><input type=\"text\" name=\"datumveldinvoer_".$rowbis['id']."\" size=\"20\" value=\"".$jaar."-".$maand."-".$dag."\"></td>\n";
echo " </tr>\n";
}
echo " <tr><td> </td><td><input class=\"inputbutton\" type=\"submit\" name=\"submit\" value=\"Wijzigen\"></tr>\n";
echo "</table>\n";
echo "</form>\n";
}
?>
ik kom alleen nog niet uit met de query:
Code (php)
1
$querybis="SELECT * FROM agenda WHERE datumveld > NOW() ORDER BY datumveld ASC LIMIT 5";
geeft wat ik nodig heb, alleen niet met de datum in de juiste volgorde.
Nu dacht ik de datum mooi weer te geven met
Code (php)
1
$querybis="SELECT DATE_FORMAT('NOW()',GET_FORMAT(DATE,'EUR')) AS datumveld FROM agenda WHERE datumveld > NOW() ORDER BY datumveld ASC LIMIT 5";
maar dat werkt helaas niet (zoals SanThe al zei?).
Ik snap alleen niet wat ik moet doen om de datum wel in dd-mm-YYYY weer te laten geven.
Code (php)
1
2
3
2
3
<?php
$querybis="SELECT DATE_FORMAT(datumveld ,'%e %c %Y') AS formatdatum FROM agenda WHERE datumveld > NOW() ORDER BY datumveld ASC LIMIT 5";
?>
$querybis="SELECT DATE_FORMAT(datumveld ,'%e %c %Y') AS formatdatum FROM agenda WHERE datumveld > NOW() ORDER BY datumveld ASC LIMIT 5";
?>
En dan ophalen met $xxxxx['formatdatum']