Avatar billede eaglewing Nybegynder
14. maj 2008 - 11:44 Der er 10 kommentarer og
1 løsning

Dato frasortering

Fik (med hjælp herfra) stykket noget kode sammen i går til at sortere nogle poster efter dato. Nu er jeg åbenbart en glemsom person for jeg glemte jo at koden også skal tage højde for om datoen er overskredet eller ej. Mit gæt er at det er at det nemmeste er at lægge det ind som en del af den afsluttende foreach løkke, så den poster jeg lige nedenunder.
Avatar billede eaglewing Nybegynder
14. maj 2008 - 11:45 #1
foreach ($events as $key => $value)
{
    echo "<a class=\"flashylink\" href=\"";
    echo "{$value['link']}";
    echo "\">";
    echo "{$value['dato']} {$value['subject']}</a><br>";
    echo "{$value['text']}";   
    echo "...<br><a href=\"{$value['link']}\">[click to read]</a><br><br>";
}

Det koden altså skal er at checke om {$value['dato']} er overskredet (højere end aktuelle dato?) eller ej, hvis den er, skal den bare hoppe over resten af løkken, ellers skal den udskrive.
Avatar billede jakobdo Ekspert
14. maj 2008 - 11:59 #2
Ville det ikke være nemmere at indbygge det tjek i sql udtrækket ?
Avatar billede jakobdo Ekspert
14. maj 2008 - 11:59 #3
Eller skal det præsenteres for brugeren ?
Ala:

event 1 - aktiv
event 2 - aktiv
event 3 - lukket
event 4 - lukket
osv... ?
Avatar billede eaglewing Nybegynder
14. maj 2008 - 12:10 #4
Problemet ligger i at dato ikke ligger som ren dato i databasen, dato er et udtræk at at string felt.

Exempel:

Subject: [12-05-2008]subjecttext

Min kode tager så 12-05-2008 fra den streng efter den er kommet fra databasen - altså kan jeg ikke (ihvertfald ikke med min sql kendskab) manipulere med den direkte fra sql kaldet, jeg er altså nødtil at hente alle poster, og der efter sortere i data.

(gav det mening?)
Avatar billede jakobdo Ekspert
14. maj 2008 - 12:29 #5
Måske noget ala dette:

<?php
//http://www.eksperten.dk/spm/831283

$events = array('11-05-2008', '12-05-2008', '13-05-2008', '14-05-2008', '15-05-2008', '16-05-2008', '17-05-2008');

for($i = 0; $i < count($events); $i++){
    $parts = explode('-',$events[$i]);
    $dbDate = mktime( 23, 59, 59, $parts[1], $parts[0], $parts[2]);
    echo $events[$i] . ' - ';
    if(time() < $dbDate)
        echo 'AKTIV';
    else
        echo 'LUKKET';
    echo '<br />';
}

?>
Avatar billede eaglewing Nybegynder
14. maj 2008 - 12:48 #6
Nu er mit "events" array jo ikke bare datoer.

Måske lidt nemmere hvis jeg lige smide min array definition her:

$events[] = array(
          'dato' => substr($template['post_subject'],1,10),
          'link' => $template['post_url'],
          'subject' => substr($template['post_subject'],12),
          'text' => substr($template['post_text'],0,200)
                );

Kan du tilpasse din kode til det?
Avatar billede jakobdo Ekspert
14. maj 2008 - 13:07 #7
Kan du ikke selv lidt kode ?
Du lærer jo ikke ved jeg retter til hele tiden.
Du ved du har datoen i $events['subject'], hvis du så behandler den ligesom jeg gør med:
$parts = explode('-',$events[$i]);
Så har du da fået et start hint.
Avatar billede eaglewing Nybegynder
14. maj 2008 - 14:30 #8
hehe ok, jeg prøver om jeg kan finde ud af det :)
Avatar billede eaglewing Nybegynder
14. maj 2008 - 21:22 #9
Endte ud med det her:

foreach ($events as $key => $value)
{
    $parts = explode('-',$value['dato']);
    //var_dump($parts);
    $dbDate = mktime( 23, 59, 59, $parts[1], $parts[0], $parts[2]);
    if(time() < $dbDate)
    {
    echo "<a class=\"flashylink\" href=\"";
    echo "{$value['link']}";
    echo "\">";
    echo "{$value['dato']} {$value['subject']}</a><br>";
    echo "{$value['text']}";   
    echo "...<br><a href=\"{$value['link']}\">[click to read]</a><br><br>";
    }
}

Ikke helt dit forslag, men indeholder dog noget af din kode og din hjælp, så hvis du lige smider et svar er der point til dig.
Avatar billede jakobdo Ekspert
14. maj 2008 - 21:28 #10
Svar!
Avatar billede jakobdo Ekspert
14. maj 2008 - 22:03 #11
Takker for point.
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