SELECT waar huidige datum tussen begin en eind

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn Not

Martijn Not

19/12/2010 15:44:22
Quote Anchor link
Is het mogelijk om een SQL opdracht te maken waarin ik de rows selecteer waar de huidige datum tussen de begin_datum en eind_datum in zit?

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.
 
PHP hulp

PHP hulp

18/10/2024 10:55:14
 

19/12/2010 15:55:33
 
Martijn Not

Martijn Not

19/12/2010 16:02:54
Quote Anchor link
Ik heb nu dit:

$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
 
Noppes Homeland

Noppes Homeland

19/12/2010 16:05:59
Quote Anchor link
huidige datum is: CURRENT_DATE

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
 

19/12/2010 16:11:13
Quote Anchor link
Noppes Homeland op 19/12/2010 16:05:59:
huidige datum is: CURRENT_DATE

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.
 
Noppes Homeland

Noppes Homeland

19/12/2010 16:32:26
Quote Anchor link
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.
 
Bas Cost Budde

Bas Cost Budde

19/12/2010 16:52:15
Quote Anchor link
Afgezien daarvan: je schrijft in SQL niet 'AND WHERE', maar alleen 'AND', als er nog een conditie komt.
 

19/12/2010 17:01:43
Quote Anchor link
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.


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.
 
Noppes Homeland

Noppes Homeland

19/12/2010 17:16:11
Quote Anchor link
Als je je queries netjes uitschrijft krijg je ook een duidelijkere foutmelding:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


dan komt er bij at line 4 te staan en dan kan je dus netjes zelf de regels aftellen
 
Martijn Not

Martijn Not

19/12/2010 17:25:41
Quote Anchor link
Ok ik heb hem soort van werkend nu:

$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)
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
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);
            ?>
Gewijzigd op 19/12/2010 17:26:07 door Martijn Not
 
Noppes Homeland

Noppes Homeland

19/12/2010 17:31:42
Quote Anchor link
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!!

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!!
 
Martijn Not

Martijn Not

19/12/2010 17:37:43
Quote Anchor link
Oh thanks.. maar vind het wel gek dat dat uitmaakt.
 
Noppes Homeland

Noppes Homeland

19/12/2010 17:40:19
Quote Anchor link
oke, jij bent er dus zo een die eerst z'n kont afveegt en dan eens op z'n gemak gaat zitten.

L O G I C A is ver te zoeken!
 

19/12/2010 17:42:08
Quote Anchor link
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.
 
Martijn Not

Martijn Not

19/12/2010 18:13:24
Quote Anchor link
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.
 



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.