Avatar billede 44fire44 Nybegynder
14. september 2008 - 01:19 Der er 7 kommentarer og
1 løsning

Problemer med array

Hej eksperter

Jeg har fundet det her kode på PHP.net som jeg har modificeret lidt - hvis jeg gerne vil "uddybe" mine måneder så der står "September" istedet for bare "Sep" så vælger den ikke den aktuelle måned, men vælger den første på listen, altså Januar

- hvorfor?

her er koden:

<?php
function chooseDate($timestamp = ""){
    if($timestamp == ""){
        $timestamp = time();
    }
    $months = array(null, 'Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec');
    unset($months[0]);
    //print_r($months);
    $out = '<select name="month">';
    foreach($months as $key => $month){
        if($month == date('M', $timestamp)){
            $out .= '<option value="'.$month.'" selected="selected">'.$month.'</option>';
        }else{
            $out .= '<option value="'.$month.'">'.$month.'</option>';
        }
    }
    $out .= '</select><select name="days">';
    for($i = 1; $i <= 32; $i++){
        if($i == date('j', $timestamp)){
            $out .= '<option value="'.$i.'" selected="selected">'.$i.'</option>
            ';
        }else{
            $out .= '<option value="'.$i.'">'.$i.'</option>
            ';
        }
    }
    $out .= "</select><select name='year'>";
    for($i = date('Y'); $i <= 2012; $i++){
        if($i == date('Y', $timestamp)){
            $out .= '<option value="'.$i.'" selected="selected">'.$i.'</option>
            ';
        }else{
            $out .= '<option value="'.$i.'">'.$i.'</option>
            ';
        }
    }
    $out .= "</select>";
    return $out;
}
?>
---
<?php
echo chooseDate();
?>
Avatar billede w13 Novice
14. september 2008 - 01:24 #1
Det skyldes linjen:

if($month == date('M', $timestamp)){

Denne sammenligner månednavnene med nuværende måned i formatet "Sep" eller "Jan" el. lign.

Muligvis kan du løse det ved at rette til:

if($month == date('F', $timestamp)){

Så skulle hele månednavnet blive hentet i stedet for blot de 3 første tegn.
Avatar billede w13 Novice
14. september 2008 - 01:24 #2
Og her er et svar, hvis det lykkes. =)
Avatar billede 44fire44 Nybegynder
14. september 2008 - 01:24 #3
og det fandt jeg så selv ud af der - det er for at det skal passe med "M" i date()-funktionen - hvis jeg vil have den uddybede skal jeg skrive "F" og rette forkortelserne til de korrekte engelske betegnelser - og derefter køre noget strreplace over dem for at få teksten på dansk

correct me if im wrong :)
Avatar billede 44fire44 Nybegynder
14. september 2008 - 01:26 #4
hehe - damn close :)
Avatar billede w13 Novice
14. september 2008 - 01:31 #5
Hvis din server er sat op til (eller kan sættes op til) dansk, burde den vel selv klare oversættelsen. Men jeg ved det ikke helt. =)
Avatar billede 44fire44 Nybegynder
14. september 2008 - 01:34 #6
det er den desværre ikke ;) - men nu virker det

hvis nogle er interesserede i løsningen, så smed jeg bare de her linier ind imellem

    $months = array(null, 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    unset($months[0]);
    //print_r($months);
    $change_to = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
    $months = str_replace($months, $change_to, $months);

points til dig, w13 :)
Avatar billede w13 Novice
14. september 2008 - 13:26 #7
Tak for point. =)
Avatar billede 44fire44 Nybegynder
06. oktober 2008 - 19:06 #8
hmm det er fandme wired... - efter vi er kommet ind i oktober, så vælger scriptet automatisk "Januar" - nogle der kan fortælle mig hvorfor?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB