Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen
Verwijderd
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
He bedankt er staan idd nog een paar handige concrete voorbeelden bij ook. Dit gaat wel lukken denk ikOp maandag 06 mei 2002 11:25 schreef JeroenDega het volgende:
Tip: kijk eens naar het stukje dat over DATE_ADD. Je kunt 14 dagen optellen of aftrekken van een datum... Daar moet het mee lukken...
Thanx!
Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen
Ik zal even een stukje code en uitleg presenteren.
Eerst verricht ik een query om te kijken hoeveel results het op zal gaan leveren:
1
| <?//Kijken hoeveel resulsts er zijn $query = ("SELECT COUNT(*) AS ROWS FROM tblwoningen, tblplaatsen "); $query .= "WHERE tblwoningen.plaatsID = tblplaatsen.plaatsID "; $query .= "AND woningSoort = '$search' "; if($search == "0") { $query .= "" } if($prijssoort == "0") { $query .= "AND woningPrijsSoort = '$prijssoort' "; } elseif($prijssoort == "1") { $query .= "AND woningPrijsSoort = '2' "; } elseif($prijssoort == "2") { $query .= "AND woningStatus = '3' "; } if($prijsIndex == 1) { $query .= "AND (woningPrijs > 0 AND woningPrijs <= 50000) "; } if($prijsIndex == 2) { $query .= "AND (woningPrijs > 50000 AND woningPrijs <= 100000) "; } if($prijsIndex == 3) { $query .= "AND (woningPrijs > 100000 AND woningPrijs <= 150000) "; } if($prijsIndex == 4) { $query .= "AND (woningPrijs > 150000 AND woningPrijs <= 200000) "; } if($prijsIndex == 5) { $query .= "AND (woningPrijs > 200000 AND woningPrijs <= 250000) "; } if($prijsIndex == 6) { $query .= "AND (woningPrijs > 250000) "; } if($plaatsID != "0") { $query .= "AND tblplaatsen.plaatsID = $plaatsID "; } $result = mysql_query($query);?> |
Deze query doe ik om ervoor te zorgen dat mijn navigatie balk goed werkt.
Na het verwerken van enige taken komt mijn 2e query de de daad werkelijke resultaten uitprint:
1
| <? $query = "SELECT tblwoningen.woningID, tblwoningen.woningAdres, tblwoningen.woningKorteOmschrijving, tblwoningen.woningPrijs, tblwoningen.woningStatus, tblwoningen.plaatsID, ";if($Foto == "on") { $query .= "tblwoningen.woningFotoKlein";}$query .= ", tblplaatsen.plaatsNaam ";$query .= "FROM tblwoningen, tblplaatsen ";$query .= "WHERE tblwoningen.plaatsID = tblplaatsen.plaatsID ";$query .= "AND woningSoort = '$search' ";if($prijssoort == "0") { $query .= "AND woningPrijsSoort = '$prijssoort' ";} elseif($prijssoort == "1") { $query .= "AND woningPrijsSoort = '2' ";} elseif($prijssoort == "2") { $query .= "AND woningStatus = '3' ";}if($prijsIndex == 1) { $query .= "AND (woningPrijs > 0 AND woningPrijs <= 50000) ";}if($prijsIndex == 2) { $query .= "AND (woningPrijs > 50000 AND woningPrijs <= 100000) ";}if($prijsIndex == 3) { $query .= "AND (woningPrijs > 100000 AND woningPrijs <= 150000) ";}if($prijsIndex == 4) { $query .= "AND (woningPrijs > 150000 AND woningPrijs <= 200000) ";}if($prijsIndex == 5) { $query .= "AND (woningPrijs > 200000 AND woningPrijs <= 250000) ";}if($prijsIndex == 6) { $query .= "AND (woningPrijs > 250000) ";}if($plaatsID != "0") { $query .= "AND tblplaatsen.plaatsID = $plaatsID ";}$query .= "ORDER BY $SortMethod ";$query .= "LIMIT $start, $till";?> |
Nu weet ik dat ik met de volgende code te werk moet gaan:
Maar hoe moet ik dat in mijn query inplanteren. Het probleem is dat nogal weinig (lees geen) ervaring heb met calculaties uitvoeren binnen een query zelf.mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
-> INTERVAL 14 DAY);
-> 1998-01-01 23:59:59
* Janoz kan beter uitlijnen dan Topix
Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen
Verwijderd
1
2
3
| $vandaag = date("Y-m-d");
$datum = explode("-", $vandaag);
$tweeweken = date("Y-m-d", mktime(0,0,0, $datum[1], ($datum[2] + 14), $datum[0])); |
Dat moet het toch wel doen
Heel dirty, als je bedenkt dat mysql er gewoon functies voor heeft.Op dinsdag 07 mei 2002 10:32 schreef pinguin het volgende:
quick & dirty:
Bedankt voor de code die zal ik gebruiken als mij verder geen andere oplossing restOp dinsdag 07 mei 2002 10:32 schreef pinguin het volgende:
quick & dirty:
code:
1 2 3$vandaag = date("Y-m-d"); $datum = explode("-", $vandaag); $tweeweken = date("Y-m-d", mktime(0,0,0, $datum[1], ($datum[2] + 14), $datum[0]));
Dat moet het toch wel doen
Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen
Verwijderd
Precies, maar naar mijn beste weten heeft oracle niet van die mooie functies die mysql wel heeft, waardoor het alsnog in php opgelost moet wordenOp dinsdag 07 mei 2002 10:36 schreef ACM het volgende:
[..]
Heel dirty, als je bedenkt dat mysql er gewoon functies voor heeft.
Oracle heeft naar mijn weten hele mooie functiesOp dinsdag 07 mei 2002 10:45 schreef pinguin het volgende:
[..]
Precies, maar naar mijn beste weten heeft oracle niet van die mooie functies die mysql wel heeft, waardoor het alsnog in php opgelost moet worden. Maar ik kan mij natuurlijk vergissen
.
Maaruh ik gebruik nog altijd mysql
Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen
Verwijderd
Hmm, ik heb hier het document sql reference voor oracle 9i voor mij liggen, maar daarin kan ik deze functionaliteit helaas niet vinden (wel add_month trouwens)...Op dinsdag 07 mei 2002 10:47 schreef DeathKnight het volgende:
[..]
Oracle heeft naar mijn weten hele mooie functies
Maaruh ik gebruik nog altijd mysql
Normale aanpak:
1 Hoe krijg ik de datum nu en over twee weken.
Daar was je al uit. Nu krijg je met NOW() en over twee weken met DATE_ADD(NOW(), INTERVAL 14 DAY).
2 Hoe kan ik kijken of een datum tussen 2 data ligt
Dat heb ik je ook al laten opzoeken. Dit werkt met expr BETWEEN ondergrens AND bovengrens
3 Samenvoegen
Waneer je bij expr nu eens de te controleren datum, bij ondergrens now en bovengrens de dateadd gedoe neerzet...
(datum BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 14 DAYS))
Heb je toch je expressie? Zo moeilijk is het toch niet? Deze kan toch gewoon ergens in je Where geplakt worden?
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Verwijderd
want ik heb een SQL string hier:
SELECT * FROM wedstrijden WHERE YEARWEEK(datum, 1) >= YEARWEEK (CURRENT_DATE(), 1) AND YEARWEEK(datum, 1) <= YEARWEEK(CURRENT_DATE(), 1)+5
...
Als ik nu zeg maar op 28 december op de site kom, dan gaat hij dus vanaf week 52 er 5 bij op tellen, wat dus resulteert in 57.... en dat gaat niet lukken...
Hoe los je zoiets op dat hij verder gaat met week1 en een nieuw jaar?
Ik zie nergens in dit topic iets over weeknummers staan, dus jouw "ja maar" slaat nergens op
(een schop van een topic van een jaar oud is ook niet zo zinvol).
Verwijderd
Ik vraag alleen maar... en ik zeg alleen dat ik ook met iets in die trend bezig ben, en dat mijn SQL string op dit moment niet 100% goed is, getuige het probleem wat ik heb voorgelegd.ACM schreef op 22 mei 2003 @ 16:47:
Daarom moet je ook datums genereren en niet weeknummers...
Ik zie nergens in dit topic iets over weeknummers staan, dus jouw "ja maar" slaat nergens op
(een schop van een topic van een jaar oud is ook niet zo zinvol).
En jouw opmerking van datums genereren ipv weeknummers is leuk, maar daar schieten we ook niks mee op. En waarom zou het schoppen van een topic als dit niet zinvol zijn? Moet ik dan een nieuwe openen met dezelfde vraag? Daar zitten ze hier op te wachten zeker...
Ergo: pak de datum, tel er 5 weken bij op, en pak hier het weeknummer van.
[ Voor 82% gewijzigd door gorgi_19 op 22-05-2003 18:30 ]
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Verwijderd
Ik heb nu deze string van hierboven die goed werkt:
SELECT * FROM wedstrijden WHERE datum BETWEEN NOW() AND DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY)
maar nu moet ik van die NOW() dus niet de dag van vandaag hebben, maar de eerste dag van de week waar we nu in zitten... dus maandag 19 mei..
Iemand?
1
2
3
4
5
6
7
8
| SELECT # ... FROM # ... WHERE WEEK(`datum`)=WEEK(NOW) AND WEEKDAY(`datum`) IN (0,1) |
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Verwijderd
Nou, ik ben dus met een project bezig, en dat is een voetbalwebsite van de plaatselijke club hiero, en nu wilde ik dus het programma van de komende 5 weken weergeven , elke week in een aparte tabel, maar ik wil dus van maandag t/m zondag rekenen, en als dus weer een nieuwe week begint, ik een nieuwe tabel moet beginnen.drm schreef op 22 May 2003 @ 19:01:
Ik denk dat je een beetje op het verkeerde spoor zit. Je bedoelt feitelijk dat je de maandag en dinsdag van de huidige week wilt hebben, toch?
SQL:
1 2 3 4 5 6 7 8 SELECT # ... FROM # ... WHERE WEEK(`datum`)=WEEK(NOW) AND WEEKDAY(`datum`) IN (0,1)
Maar ik wil dus geen tabel die een halve week laat zien, omdat ik NOW(); gebruik zeg maar
Ik hoop dat je met 'tabel' een html table bedoeltSunchaser:
Nou, ik ben dus met een project bezig, en dat is een voetbalwebsite van de plaatselijke club hiero, en nu wilde ik dus het programma van de komende 5 weken weergeven , elke week in een aparte tabel, maar ik wil dus van maandag t/m zondag rekenen, en als dus weer een nieuwe week begint, ik een nieuwe tabel moet beginnen.
Ik denk dat je in dat geval beter het weeknummer mee kan selecteren:
1
2
3
4
5
6
7
8
9
| SELECT WEEK(datum) as `week_nr`, # ... FROM wedstrijden WHERE WEEK(datum) BETWEEN WEEK(NOW()) AND WEEK(NOW)+5 ORDER BY WEEK(datum),DAYOFWEEK(datum) # ff voor de duidelijkheid... |
Vervolgens kun je met PHP aan de hand van het week_nr achterhalen of je een nieuwe tabel moet beginnen.
[ Voor 5% gewijzigd door drm op 22-05-2003 19:35 ]
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Waarom niet?Verwijderd schreef op 22 May 2003 @ 18:20:
En jouw opmerking van datums genereren ipv weeknummers is leuk, maar daar schieten we ook niks mee op.
Als je wilt weten wat de huidige datum kun je dat ophalen, tel daar vijf weken bij op via date_add en klaar.
Het wordt idd lastiger als je de eerste dag van de huidige week wilt hebben, dan zou het zoiets kunnen worden:
1
2
3
4
| datum BETWEEN
DATE_SUB(CURRENT_DATE, INTERVAL WEEKDAY(CURRENT_DATE) DAY)
AND
DATE_SUB(DATE_ADD(CURRENT_DATE, INTERVAL 35 DAY), INTERVAL WEEKDAY(CURRENT_DATE) DAY) |
Voordeel met datums is natuurlijk dat je nog steeds geen geknoei met rollende weeknummers hebt.
De date_sub is het terugtellen van vandaag naar de eerste dag van de week de date_add is om 5 weken vooruit te gaan
Het is in dit geval een lastigeEn waarom zou het schoppen van een topic als dit niet zinvol zijn? Moet ik dan een nieuwe openen met dezelfde vraag? Daar zitten ze hier op te wachten zeker...
Een reactie hier is opzich ook niet erg hoor.
Leuk, maar wat gebeurt er in week 51, prutser?drm schreef op 22 May 2003 @ 19:34:
code:
1 2 3 4 5 6 7 8 9 SELECT WEEK(datum) as `week_nr`, # ... FROM wedstrijden WHERE WEEK(datum) BETWEEN WEEK(NOW()) AND WEEK(NOW)+5 ORDER BY WEEK(datum),DAYOFWEEK(datum) # ff voor de duidelijkheid...
[ Voor 23% gewijzigd door ACM op 22-05-2003 20:34 ]
* drm beetje sadomasochist
Je hebt helemaal gelijk ik was een "beetje" te vlug
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Verwijderd