Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 06-07-2003, 15:56
Martin
Avatar van Martin
Martin is offline
Ik wil met PHP een virtueel archief maken voor records uit de database (MySQL). Elk veld van de weblog heeft een column met daarin de tijd (epoch). Wat ik wil creëren is dit:

- Archief juni 2003
- Archief mei 2003
- Archief april 2003
- Archief maart 2003
- Archief februari 2003
- Archief januari 2003
- Archief december 2002

Maar hoe krijg ik met PHP voor elkaar dat hij:
a. de namen van de archieven dynamisch genereert?
b. de juiste epoch-begintijd en eindtijd berekend die hoort bij die maand?
Met citaat reageren
Advertentie
Oud 06-07-2003, 16:51
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Ik zou naast je UNIX timestamp (epoch is nogal een verwarrend woord) een MySQL DATETIME veld opnemen in je database, dat maakt het acht keer makkelijker.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 06-07-2003, 17:46
Martin
Avatar van Martin
Martin is offline
Citaat:
Manuzhai schreef op 06-07-2003 @ 17:51:
Ik zou naast je UNIX timestamp (epoch is nogal een verwarrend woord) een MySQL DATETIME veld opnemen in je database, dat maakt het acht keer makkelijker.
extra column opnemen is IMHO erg onhandig, je kan met mktime() immers ook wel de UNIX timestamp van een datum uitrekenen. Vervolgens pluk je de boel met een MySQL query (BETWEEN) uit de database.

Maar hoe maak ik zo`n lijstje nou dynamisch?
Met citaat reageren
Oud 06-07-2003, 18:40
Martin
Avatar van Martin
Martin is offline
Ik heb nu dit:

PHP-code:
<?
$current_year = date('Y');
$current_month = date('m');

echo "ARCHIVE";
echo "<HR>";
    
    /* CREATE YEAR-LOOP */
    for ($year = 2002; $year <= $current_year; $year++) {

        echo "<B>$year</B><br>";

            /* START MONTH-LOOP, BUT CHECK FIRST IF THE YEAR DID NOT END */
            
            /* IF CURRENT YEAR DIDN`T END, THEN PRINT ONLY THE PAST MONTHS */
            if($year == $current_year){
            
                for ($month = 2; $month <= $current_month+1; $month++) {

                    echo date ("F Y", mktime (0,0,0,$month,0,$year));
                    echo "<br>";
                }        

            }
            /* IF CURRENT YEAR DID END, THEN PRINT ALL MONTHS */
            else {

                for ($month = 2; $month <= 13; $month++) {
                    echo date ("F Y", mktime (0,0,0,$month,0,$year));
                    echo "<br>";
                }
            
            }

    }
?>
Maar, nu print hij de engelse namen van de maanden, dit moet in het Nederlands. SETLOCALE() werkt blijkbaar niet op de server van S.com, en ook niet op mijn lokale webserver. Ik heb alle mogelijkheden geprobeerd die op php.net staan, maar niets werkt.
Met citaat reageren
Oud 06-07-2003, 19:22
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
Hoe gebruik je je setlocale commando?

De standaard manier op php.net wil niet altijd goed werken.

Dit staat er:

PHP-code:
<?php
    
/* zet de locale op Dutch */
    
setlocale (LC_ALL'nl_NL');

    
/* Output: vrijdag 22 december 1978 */
    
echo strftime ("%A %e %B %Y"mktime (00012221978));
?>
Het wil echter niet altijd zo kloppen...

Maar heb je het zo gebruikt of heb je al meer dingen geprobeerd? Op mijn servers krijg ik dit soort dingen opzich makkelijk aan het werk...
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 06-07-2003, 19:24
Martin
Avatar van Martin
Martin is offline
Citaat:
Gimme more beer schreef op 06-07-2003 @ 20:22:
Maar heb je het zo gebruikt of heb je al meer dingen geprobeerd? Op mijn servers krijg ik dit soort dingen opzich makkelijk aan het werk...
Ik heb alle dingen geprobeerd die ook door mensen die gereageerd hebben zijn aangegeven. Maar ik vraag Jon anders wel even zodra hij online komt .

De rest van de problemen zijn inmiddels opgelost. Even de source:

PHP-code:
<?
$current_year = date('Y');
$current_month = date('m');

echo "ARCHIVE";
echo "<HR>";
    
    /* CREATE YEAR-LOOP */
    for ($year = 2002; $year <= $current_year; $year++) {

        echo "<B>$year</B>";

            /* START MONTH-LOOP, BUT CHECK FIRST IF THE YEAR DID NOT END */
            
            echo "<ul>";

            /* IF CURRENT YEAR DIDN`T END, THEN PRINT ONLY THE PAST MONTHS */
            if($year == $current_year){
            
                for ($month = 2; $month <= $current_month+1; $month++) {

                    echo "<li>";
                    $month_txt    = date ("F", mktime (0,0,0,$month,0,$year));
                    $firstday    = mktime (0,0,0,$month,1,$year);
                    $lastday    = mktime (24,0,0,$month+1,0,$year);
                    echo "$month_txt | $firstday/$lastday";



                }        

            }
            /* IF CURRENT YEAR DID END, THEN PRINT ALL MONTHS */
            else {

                for ($month = 2; $month <= 13; $month++) {
                    echo "<li>";
                    $month_txt    = date ("F", mktime (0,0,0,$month,0,$year));
                    $firstday    = mktime (0,0,0,$month,1,$year);
                    $lastday    = mktime (24,0,0,$month+1,0,$year);
                    echo "$month_txt | $firstday/$lastday";
                }
            
            }

            echo "</ul>";

    }
?>
Met citaat reageren
Oud 06-07-2003, 19:29
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
Een oplossing die je kunt proberen is trouwens:

PHP-code:
<?
setlocale (LC_TIME, "nl_NL.DIS_8859-15");

echo strftime ("%A %e %B %Y", mktime (0, 0, 0, 12, 22, 1978));
?>
Is de output van je setlocale eigenlijk altijd gewoon de $locale samen met de omzetting naar de $locale of geeft hij ook echt een taal?

Bijvoorbeeld:
PHP-code:
<?
echo setlocale(LC_TIME, "nl_NL.DIS_8859-15");
?>
Geeft dit nl_NL.DIS_8859-15 als uitvoer of eerder iets van Nederlands? Maakt verder trouwens niet uit, maar als je die truuc van die meerdere opties uitprobeert zou het eerste wel handig zijn... Maakt je code in veel gevallen korter!
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 06-07-2003, 19:34
Martin
Avatar van Martin
Martin is offline
Citaat:
Gimme more beer schreef op 06-07-2003 @ 20:29:
Een oplossing die je kunt proberen is trouwens:

PHP-code:
<?
setlocale (LC_TIME, "nl_NL.DIS_8859-15");

echo strftime ("%A %e %B %Y", mktime (0, 0, 0, 12, 22, 1978));
?>
Helpt niets

Citaat:
Gimme more beer schreef op 06-07-2003 @ 20:29:

Is de output van je setlocale eigenlijk altijd gewoon de $locale samen met de omzetting naar de $locale of geeft hij ook echt een taal?
Bijvoorbeeld:
PHP-code:
<?
echo setlocale(LC_TIME, "nl_NL.DIS_8859-15");
?>
Geeft dit nl_NL.DIS_8859-15 als uitvoer of eerder iets van Nederlands? Maakt verder trouwens niet uit, maar als je die truuc van die meerdere opties uitprobeert zou het eerste wel handig zijn... Maakt je code in veel gevallen korter!
Helemaal geen echo
Met citaat reageren
Oud 06-07-2003, 20:15
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
Dan zit daar ergens je probleem, hij kan geen NL taal weergeven... Kent ie niet ofzo...
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 06-07-2003, 20:19
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
En "Dutch" ook al geprobeerd? Zag ik ook ergens staan...
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 06-07-2003, 20:21
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
Trouwens, geeft hij ook geen FALSE weer als je die opvraagt?
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 06-07-2003, 20:46
Martin
Avatar van Martin
Martin is offline
Citaat:
Gimme more beer schreef op 06-07-2003 @ 21:21:
Trouwens, geeft hij ook geen FALSE weer als je die opvraagt?
nope
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Huiswerkvragen: Klassieke & Moderne talen Betoog Nederlands!
geweldigetoets
1 21-01-2010 19:17
Films, TV & Radio AJMouse's Premières - Week 26: Ladykillers, Shrek 2 + Verwacht: Thunderbirds.
AJMouse
3 12-08-2004 12:32
Films, TV & Radio AJMouse's Premières - Week 20: Out Of Time + VERWACHT: SHREK 2.
AJMouse
17 28-06-2004 16:01
Films, TV & Radio AJMouse's Premières - Week 24: Eurotrip en meer!
AJMouse
5 20-06-2004 17:40
Films, TV & Radio AJMouse's Premières - Week 23: 50 First Dates, Beyond Borders, The House Of Sand&Fog
AJMouse
13 14-06-2004 22:25


Alle tijden zijn GMT +1. Het is nu 00:29.