Jarig binnen 7 dagen script, dit moet eenvoudiger kunnen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

- Vleege -

- Vleege -

31/03/2011 16:38:25
Quote Anchor link
Beste mensen,

ik dacht me hier toch maar eens aan te melden om sommige scripts toch eens door anderen te laten beoordelen. Volgens mij maak ik vaker denkfouten waardoor mijn scripts onnodig lang en vele malen eenvoudiger kunnen. Hierbij een voorbeeld.

Wat wil ik:
een script dat alle gebruikers uit een DB toont welke binnen 7 dagen jarig zijn

Wat heb ik:
onderstaand script wat wel werkt maar enkele beperkingen kent.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?
$now
= time();
$dag = strftime ("%d", $now);
$maand = strftime ("%m", $now);
$jaar = strftime ("%Y", $now);
        
    $dagen[1] = 31;
    if ($jaar == 2012 || $jaar == 2016 || $jaar == 2020){
    $dagen[2] = 29;
    }
else {
    $dagen[2] = 28;
    }

    $dagen[3] = 31;
    $dagen[4] = 30;
    $dagen[5] = 31;
    $dagen[6] = 30;
    $dagen[7] = 31;
    $dagen[8] = 31;
    $dagen[9] = 30;
    $dagen[10] = 31;
    $dagen[11] = 30;
    $dagen[12] = 31;
                    
                    
    for ($i = 1;$i <= 12;$i++){
        if ($i < 10){
            $mm = "0". $i;
        }

            if ($mm == $maand){
                $dpm = $dagen[$i];
            }
    }

                            
    $rest_dgn = $dpm - $dag;
    if ($rest_dgn >= 7){
        $max_dag = $dag + 7;
    }
else {
        $verschil = 7 - $rest_dgn;
        $max_dag = $verschil;
        $maand = $maand + 1;
    }

    
    if ($max_dag < 10){
        $max_dag = "0". $max_dag;
    }

        if ($maand < 10){
            $maand = "0". $maand;
        }


    $max_datum = $max_dag ."-". $maand ."-". $jaar;
    list($day, $month, $year) = explode('-', $max_datum);
    $max_datum = mktime(0, 0, 0, $month, $day, $year);
                            
        
    $sql4 = "SELECT * FROM ledenlijst ORDER BY geb_datum ASC";
    $res4 = mysql_query($sql4);
    setlocale (LC_ALL, "nl_NL");
    $maand_nu = strftime ("%m", $now);
    
    while ($data4 = mysql_fetch_array($res4)) {
        $verjaarmaand = strftime ("%m", $data4['geb_datum']);
            
        if (($verjaarmaand == $maand_nu) || ($verjaarmaand == $maand)){
                        
            $id = $data4['id'];    
            $voornaam = $data4['voornaam'];
            $achternaam = $data4['achternaam'];
            $meisjesnaam = $data4['meisjesnaam'];
            $verjaardag = strftime ("%d", $data4['geb_datum']);
                            
            $verjaardatum = $verjaardag ."-". $verjaarmaand ."-". $jaar;
            list($day, $month, $year) = explode('-', $verjaardatum);
            $verjaardatum = mktime(0, 0, 0, $month, $day, $year);

            if (($verjaardatum >= $now) && ($verjaardatum <= $max_datum)) {

                if ($meisjesnaam != ""){
                    $achternaam = $achternaam ."-". $meisjesnaam;
                }

?>



Bovenstaande werkt, maar nu lijkt mij dat de verzonnen manier voor het correct uitrekenen van de maximale weergave datum veel eenvoudiger moet kunnen. Daarnaast denk ik dat er nog wel meer schort aan mijn manier van het maken van scripts en dat dit te veel SQL of PHP berekening vraagt dan uberhaupt nodig.

Daarnaast doet het script 3 dingen die ik graag zou zien niet, namelijk:
- geboortedata ordenen op dag in de weergave (10-10-10 is nu eenmaal later dan 10-10-08)
- het is niet dynamisch naar schrikkeljaren toe
- het laat jarigen niet zien op de dag zelf (datum staat op 0:00 uur van die dag) er hij moet dus $now - huidige_tijd o.i.d. doen

Dit alles zou ik wel kunnen aanpassen door voort te bouwen op het script maar ik denk dat mijn denkwijze gewoonweg verkeerd is.

Ik hoor graag jullie mening hierover.
Gewijzigd op 31/03/2011 16:43:31 door - Vleege -
 
PHP hulp

PHP hulp

28/03/2024 18:47:04
 
Vincent Huisman

Vincent Huisman

31/03/2011 16:58:04
Quote Anchor link
maak gebruik van de sql datetime functies
 

31/03/2011 16:58:50
Quote Anchor link
Laat het de database uitrekenen. Iets met twee where's ofzo, >= NOW() en <= NOW() + INTERVAL 7 DAY ofzo. Gebruik DATE_FORMAT(). Zie ook mysql date time functions.
Bouw foutafhandeling in, bekijk wat elke functie teruggeeft, zoals bijvoorbeeld mysql_query.
Gebruik mysql_fetch_assoc.
 
Thomas van den Bulk

Thomas van den Bulk

31/03/2011 16:59:58
Quote Anchor link
zou het niet gewoon zo moeten kunnen?:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$date
= date('Y-m-d', time()+60*60*24*7);

$sql4 = "SELECT * FROM ledenlijst  WHERE geb_datum between '".time()."' AND '".$date."' ORDER BY geb_datum ASC";
?>


de geb_datum moet wel als een date veld opgeslagen zijn.
Gewijzigd op 31/03/2011 17:00:38 door Thomas van den Bulk
 

31/03/2011 17:03:46
Quote Anchor link
Thomas van den Bulk op 31/03/2011 16:59:58:
zou het niet gewoon zo moeten kunnen?:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$date
= date('Y-m-d', time()+60*60*24*7);

$sql4 = "SELECT * FROM ledenlijst  WHERE geb_datum between '".time()."' AND '".$date."' ORDER BY geb_datum ASC";
?>


de geb_datum moet wel als een date veld opgeslagen zijn.


Dit is niet de oplossing. Laat de database dit uitrekenen.
 
Tobias Tobias

Tobias Tobias

31/03/2011 17:06:47
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$sql4
= "SELECT * FROM ledenlijst  WHERE geb_datum BETWEEN NOW() AND  NOW() + INTERVAL 7 DAY ORDER BY geb_datum ASC";
?>
 
Thomas van den Bulk

Thomas van den Bulk

31/03/2011 17:08:33
Quote Anchor link
Karl Karl op 31/03/2011 17:03:46:
Thomas van den Bulk op 31/03/2011 16:59:58:
zou het niet gewoon zo moeten kunnen?:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$date
= date('Y-m-d', time()+60*60*24*7);

$sql4 = "SELECT * FROM ledenlijst  WHERE geb_datum between '".time()."' AND '".$date."' ORDER BY geb_datum ASC";
?>


de geb_datum moet wel als een date veld opgeslagen zijn.


Dit is niet de oplossing. Laat de database dit uitrekenen.



altijd beter dan die lap tekst wat hij nu heeft...
 

31/03/2011 17:09:15
Quote Anchor link
Thomas van den Bulk op 31/03/2011 17:08:33:
Karl Karl op 31/03/2011 17:03:46:
Thomas van den Bulk op 31/03/2011 16:59:58:
zou het niet gewoon zo moeten kunnen?:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$date
= date('Y-m-d', time()+60*60*24*7);

$sql4 = "SELECT * FROM ledenlijst  WHERE geb_datum between '".time()."' AND '".$date."' ORDER BY geb_datum ASC";
?>


de geb_datum moet wel als een date veld opgeslagen zijn.


Dit is niet de oplossing. Laat de database dit uitrekenen.



altijd beter dan die lap tekst wat hij nu heeft...


Even slecht.
 
Roel -

Roel -

31/03/2011 17:19:46
Quote Anchor link
Karl Karl op 31/03/2011 17:09:15:
...

Even slecht.


Kun jij ooit wel eens positief reageren? En je verteld hem niet eens WAT ie dan volgens jou verkeerd doet.
Gewijzigd op 31/03/2011 17:20:02 door Roel -
 

31/03/2011 17:39:02
Quote Anchor link
Roel van de Water op 31/03/2011 17:19:46:
Karl Karl op 31/03/2011 17:09:15:
...

Even slecht.


Kun jij ooit wel eens positief reageren? En je verteld hem niet eens WAT ie dan volgens jou verkeerd doet.


Als er meerdere keren in een topic gezegd is dat het met de database moet en je komt met zoiets aan. Dat is niet positief.
 
Roel -

Roel -

31/03/2011 17:42:30
Quote Anchor link
Misschien weet hij wel niet dat ie dat met behulp van het rekenwerk van een database kan doen. En aan jouw antwoord heeft ie nog minder.

Ik snap niet waarom je die reactie alsnog post, je postcount gaat toch niet omhoog?
 

31/03/2011 17:47:51
Quote Anchor link
Roel van de Water op 31/03/2011 17:42:30:
Misschien weet hij wel niet dat ie dat met behulp van het rekenwerk van een database kan doen. En aan jouw antwoord heeft ie nog minder.

Dat is twee keer boven hem gepost. Vincent heeft een verwijzing gemaakt, ik heb half wat geschreven. Daarna is het ook nog eens een keer uitgewerkt. Nonsense dat hij niet weet dat het met de database moet. Dat staat er meerdere keren. Gewoon ogen open doen en lezen.

Roel van de Water op 31/03/2011 17:42:30:
Ik snap niet waarom je die reactie alsnog post, je postcount gaat toch niet omhoog?

Omdat een of andere debiel iemand nu vast en zeker denkt dat je dit op zijn manier kan doen, wat niet de bedoeling is. Het is de bedoeling dat de database dit gewoon lekker doet, anders kan je net zo goed een papiertje pakken en alles opschrijven. Dit is typisch iets wat de database moet doen. Laat het dan ook lekker aan de database over.
 
Roel -

Roel -

31/03/2011 17:52:20
Quote Anchor link
Heb je naar de tijden gekeken? Misschien had hij de pagina nog niet gerefresht toen die reacties geplaatst waren, dus heeft ie het misschien ook niet gelezen. Nadenken voor je iemand afzeikt.
 

31/03/2011 17:55:35
Quote Anchor link
Roel van de Water op 31/03/2011 17:52:20:
Heb je naar de tijden gekeken? Misschien had hij de pagina nog niet gerefresht toen die reacties geplaatst waren, dus heeft ie het misschien ook niet gelezen. Nadenken voor je iemand afzeikt.


Moet je nu per se trollen omdat ik een scriptje van je afkeur ofzo?
Als je even zelf naar de tijden kijkt zie je dat er genoeg tijd tussen zit. Ook zeik ik hem eerst niet af. Eerst wijs ik hem er nog op dat de database dit gewoon moet doen. Wat ik dus ook zonet heb geschreven.
 
Roel -

Roel -

31/03/2011 17:58:42
Quote Anchor link
Denk je dat ik niet weet wat trollen is? Maar dat is een ander verhaal.
Het valt mij gewoon op dat jij werkelijk nergens positief bent; als iemand iets doet op de manier dat het jou niet bevalt krijgt diegene gezeik van jou.

Maargoed, moet je maar goed zo doen. Zal lekker zijn voor je reputatie :)
 
Thomas van den Bulk

Thomas van den Bulk

31/03/2011 17:59:57
Quote Anchor link
eerlijk gezegd had ik je tekst nog niet gelezen Karl...
 

31/03/2011 18:57:53
Quote Anchor link
Roel van de Water op 31/03/2011 17:58:42:
Denk je dat ik niet weet wat trollen is? Maar dat is een ander verhaal.

Ik weet niet wat jij weet, dus ik neem het zekere voor het onzekere. Ook voor mensen die niet weten wat het is, is het dan handig dat ze direct kunnen klikken op het woord.

Roel van de Water op 31/03/2011 17:58:42:
Het valt mij gewoon op dat jij werkelijk nergens positief bent;

Tja, als er niks is om positief over te doen, dan is er ook niks om positief over te doen. Vrij logisch neem ik aan? En ik ben vrij zeker dat ik heus wel wat positiefs heb geplaatst, alleen het zal jou waarschijnlijk niet opvallen, omdat jij mij haat, omdat ik zeg dat je dingen niet goed doet. Zoals je in mijn eerste reactie in dit topic kan zien, is die vrij positief en vrij uitgebreid. Het is alleen een beetje de touwtjes aan elkaar knopen voor de topic starter. Zie niet in dat dat negatief is.
Roel van de Water op 31/03/2011 17:58:42:
als iemand iets doet op de manier dat het jou niet bevalt krijgt diegene gezeik van jou.

Eigenlijk zie ik niet in in dit topic waar ik negatief ben, alleen tegen jou, maar voor de rest. Het is even slecht, moet ik het dan helemaal gaan verbloemen? Jij maakt er gewoon van dat ik negatief ben, terwijl dat helemaal niet zo is.

Roel van de Water op 31/03/2011 17:58:42:
Maargoed, moet je maar goed zo doen. Zal lekker zijn voor je reputatie :)

Volgens mij sta ik toch wel bekend als iemand die veel weet en het eigenlijk bijna altijd bij het juiste end heeft...
 
Roel -

Roel -

31/03/2011 19:26:06
Quote Anchor link
Ik probeer je alleen duidelijk te maken dat mensen het 'leuk' vinden als je ze op hun fouten wijst.
 

31/03/2011 19:27:18
Quote Anchor link
Roel van de Water op 31/03/2011 19:26:06:
Ik probeer je alleen duidelijk te maken dat mensen het 'leuk' vinden als je ze op hun fouten wijst.


Mensen kunnen dat zelf ook.
Als ze niet willen dat ik hun wijs op hun fouten moeten ze geen fouten maken.
En anders moeten ze het accepteren. Fouten zijn fout. Ze zijn niet opeens goed omdat ze fout zijn.
 
Jordi Kroon

Jordi Kroon

31/03/2011 20:01:56
Quote Anchor link
Offtopic:

@Roel : Maar als we dat bij jou script doen dan is dat weer niet goed?
 
Nicoow Unknown

Nicoow Unknown

31/03/2011 20:21:35
Quote Anchor link
Pompidompidom


Iets met jarig en binnen 7 dagen?

Pompidompidom
 

Pagina: 1 2 volgende »



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.