SELECT waar huidige datum tussen begin en eind
Ik heb een begin_datum veld en een eind_datum veld..
Zelf zat ik te denken aan zoiets:
SELECT * FROM tabel_naam WHERE "huidigedatum" >= "begin_datum" AND "huidigedatum" <= "eind_datum"
..waar "huidigedatum" met php moet worden aangemaakt. Maar ik weet niet of dit mogelijk is.
$sql = "SELECT * FROM tasks WHERE NOW() >= 'tsk_start_date' AND WHERE NOW() <= 'tsk_end_date' ORDER BY tsk_end_date ASC";
En dat geeft deze error:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOW() <= 'tsk_end_date' ORDER BY tsk_end_date ASC' at line 1
NOW() is huidige datum-tijd
Dat je die foutmelding krijgt is toch echt jouw eigen schuld. Wie gaat er nu tabel veldnamen quoten?!
Gewijzigd op 19/12/2010 16:12:21 door Noppes Homeland
Noppes Homeland op 19/12/2010 16:05:59:
huidige datum is: CURRENT_DATE
NOW() is huidige datum-tijd
NOW() is huidige datum-tijd
Och, mysql hakt het teveel gewoon d'r af.
Is je veld van het juiste type ? -> DATE.
Selecteer wat je wilt hebben.
Echo je query als die mis gaat.
wat totaal niet klopt.
NOW() zal zicht nooit laten verleiden om opeens "DATE" te zijn, tenzij je gaat casten naar date.
Afgezien daarvan: je schrijft in SQL niet 'AND WHERE', maar alleen 'AND', als er nog een conditie komt.
Noppes Homeland op 19/12/2010 16:32:26:
Karl Karl, je bent aan het blaatschapen. Dat betekent dat je iets schrijft
wat totaal niet klopt.
NOW() zal zicht nooit laten verleiden om opeens "DATE" te zijn, tenzij je gaat casten naar date.
wat totaal niet klopt.
NOW() zal zicht nooit laten verleiden om opeens "DATE" te zijn, tenzij je gaat casten naar date.
Ik ben het met je eens dat het eigenlijk niet helemaal correct is.
Ik maak hier gebruik van een smerig trucje, namelijk dat mysql het tijd gedeelte van de date afhakt. Verder is het zo dat mysql ook gewoon lekker leuk intern dates opslaat met tijden erbij.
Inderdaad is CURRENT_DATE() of equivalente functie netter. Mijn reactie was alleen ter illustratie dat hij in de docs kon vinden welke functie hij nodig had. Dat het iets in de trant van NOW() zou zijn.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
SELECT *
FROM tasks
WHERE NOW() >= 'tsk_start_date'
AND WHERE NOW() <= 'tsk_end_date'
ORDER BY
tsk_end_date ASC
FROM tasks
WHERE NOW() >= 'tsk_start_date'
AND WHERE NOW() <= 'tsk_end_date'
ORDER BY
tsk_end_date ASC
dan komt er bij at line 4 te staan en dan kan je dus netjes zelf de regels aftellen
$sql = "SELECT * FROM tasks WHERE tsk_start_date <= CURDATE() AND tsk_end_date >= CURDATE() ORDER BY tsk_end_date ASC";
Dit werkt en in phpmyadmin geeft hij alle juiste resultaten MAAR op mijn website niet helemaal. Hij laat alle rows behalve de laatst toegevoegde zien! Ik snap er helemaal niks van. Op andere pagina's gebruik ik eenzelfde soort code en laat hij alle resultaten zien, maar op deze is telkens de bovenste rij weg..
Ik heb het volgende staan:
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
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
<?php
$con = mysql_connect("localhost","...","...");
if (!$con) die('Could not connect: '.mysql_error());
mysql_select_db("planner", $con);
$sql = "SELECT * FROM tasks WHERE tsk_start_date <= CURDATE() AND tsk_end_date >= CURDATE() ORDER BY tsk_end_date ASC";
if (!mysql_query($sql,$con)) {
die('Error: '.mysql_error());
}
$resultaat = mysql_query($sql);
$aantal = mysql_num_rows($resultaat);
$verzamel = mysql_fetch_assoc($resultaat);
echo '<table><tr class=tr_all><td>ID</td><td>Titel</td><td>Beschrijving</td><td>Vak</td><td>Begindatum</td><td>Einddatum</td><td>Afgerond</td></tr>';
while($row = mysql_fetch_assoc($resultaat)){
echo '<tr>';
$nummer = $row['tsk_ID'];
$db_start_date=$row['tsk_start_date'];
$db_end_date=$row['tsk_end_date'];
echo '<td>'.$row['tsk_ID'].'</td>
<td>'.$row['tsk_title'].'</td>
<td>'.$row['tsk_txt'].'</td>
<td>'.$row['tsk_subj'].'</td>
<td>'.(date('d-m-Y', strtotime($db_start_date))).'</td>
<td>'.(date('d-m-Y', strtotime($db_end_date))).'</td>
<td>';
if($row['tsk_done']==1) {
echo 'Ja';
}
else {
echo 'Nee';
}
echo '</td>';
echo "<td><form action='bewerken.php' method='post'>
<input type='hidden' name='verstopt' value=$nummer>
<input type='image' name='submit' src='wijzig.png' style='outline: none;'></form></td>";
echo "<td><form action='verwijderen.php' method='post'>
<input type='hidden' name='verstopt' value=$nummer>
<input type='image' name='submit' src='verwijder.png' style='outline: none;'></form></td>";
echo '</tr>';
}
echo '</table>';
mysql_close($con);
?>
$con = mysql_connect("localhost","...","...");
if (!$con) die('Could not connect: '.mysql_error());
mysql_select_db("planner", $con);
$sql = "SELECT * FROM tasks WHERE tsk_start_date <= CURDATE() AND tsk_end_date >= CURDATE() ORDER BY tsk_end_date ASC";
if (!mysql_query($sql,$con)) {
die('Error: '.mysql_error());
}
$resultaat = mysql_query($sql);
$aantal = mysql_num_rows($resultaat);
$verzamel = mysql_fetch_assoc($resultaat);
echo '<table><tr class=tr_all><td>ID</td><td>Titel</td><td>Beschrijving</td><td>Vak</td><td>Begindatum</td><td>Einddatum</td><td>Afgerond</td></tr>';
while($row = mysql_fetch_assoc($resultaat)){
echo '<tr>';
$nummer = $row['tsk_ID'];
$db_start_date=$row['tsk_start_date'];
$db_end_date=$row['tsk_end_date'];
echo '<td>'.$row['tsk_ID'].'</td>
<td>'.$row['tsk_title'].'</td>
<td>'.$row['tsk_txt'].'</td>
<td>'.$row['tsk_subj'].'</td>
<td>'.(date('d-m-Y', strtotime($db_start_date))).'</td>
<td>'.(date('d-m-Y', strtotime($db_end_date))).'</td>
<td>';
if($row['tsk_done']==1) {
echo 'Ja';
}
else {
echo 'Nee';
}
echo '</td>';
echo "<td><form action='bewerken.php' method='post'>
<input type='hidden' name='verstopt' value=$nummer>
<input type='image' name='submit' src='wijzig.png' style='outline: none;'></form></td>";
echo "<td><form action='verwijderen.php' method='post'>
<input type='hidden' name='verstopt' value=$nummer>
<input type='image' name='submit' src='verwijder.png' style='outline: none;'></form></td>";
echo '</tr>';
}
echo '</table>';
mysql_close($con);
?>
Gewijzigd op 19/12/2010 17:26:07 door Martijn Not
- welk nut heeft het om te fetchen en er dan niets mee te doen en dan verderop dan vrolijk in een while hetzelfde resultaat verder te fetchen.
Blijkbaar steek je weinig op van hetgeen er gepost wordt.
Dus kiekt nog eens bij je andere topic welke opmerkingen over dit stuk script geschreven is!!
Toevoeging op 19/12/2010 17:31:43:
Volgens mij ben je er al vaker opgewezen:
- welk nut heeft het om te fetchen en er dan niets mee te doen en dan verderop dan vrolijk in een while hetzelfde resultaat verder te fetchen.
Blijkbaar steek je weinig op van hetgeen er gepost wordt.
Dus kiekt nog eens bij je andere topic welke opmerkingen over dit stuk script geschreven is!!
Oh thanks.. maar vind het wel gek dat dat uitmaakt.
L O G I C A is ver te zoeken!
Martijn Not op 19/12/2010 17:37:43:
Oh thanks.. maar vind het wel gek dat dat uitmaakt.
Hoezo dan? Je fetcht (haalt op) het eerste record. Maar daar doe je veder niks mee. Toch heb je het eerste record al opgehaald... Php gaat niet tegen de database zeggen dat jij er niks mee hebt gedaan. Dat zal php ook een worst wezen. Misschien wil jij nooit het eerste record hebben.
Karl Karl op 19/12/2010 17:42:08:
Hoezo dan? Je fetcht (haalt op) het eerste record. Maar daar doe je veder niks mee. Toch heb je het eerste record al opgehaald... Php gaat niet tegen de database zeggen dat jij er niks mee hebt gedaan. Dat zal php ook een worst wezen. Misschien wil jij nooit het eerste record hebben.
Ok bedankt ik snap het.