Goede morgen,

Op onderstaande manier kan ik laten zien dat een link vandaag is toegevoegd. Hij wordt dan namelijk vet weergegeven.

Hoe kan ik dit gedeelte wijzigen zodat die link 7 dagen vet gedrukt blijft?

EDIT typfout


<?php
if($row['toegevoegd'] == date('Y-m-d')){
			echo '-<a href="website.php?link_id='. $row['link_id'].'" target="_blank" title="'. $row['link_naam'].'" class="nieuw">'.$row['link_naam'].'</a><br />';
			}else{
			echo '-<a href="website.php?link_id='. $row['link_id'].'" target="_blank" title="'. $row['link_naam'].'">'.$row['link_naam'].'</a><br>';
		    }
?>
Laat de datum van wanneer het toegevoegd is staan als een timestamp. Dan, maak een timestamp van 7 dagen later en gebruik een if clause zoals hieronder:


<?php
    if($row['toegevoegdedatum'] <= $row['7dagenlaterstamp']){
        echo "NIEUW! -<a href=\"#\">Linkie!</a>";
    }else{
        echo "-<a href=\"#\">Linkie!</a>";
    }
?>


Natuurlijk wel de 7dagenlaterstamp in de database staan, want anders wordt het nooit false :P
Dus als ik het goed begrijp komt er een rij bij in de database die je bv "weeklater" noemt.

En als je een link toevoegd vul je hier de datum in van een week in de toekomst.
Gamer dat moet je juist nu vermijden om extra data toe te voegen

Elsy je kan proberen om van de database datum een timestamp te maken (strototime()) zo uit mijn hoofd en die te vergelijken met de datum van vandaag + 7 dagen (time() + 60 * 60 * 24 * 7)

Eris schreef op 02.04.2007 10:00
Gamer dat moet je juist nu vermijden om extra data toe te voegen

Elsy je kan proberen om van de database datum een timestamp te maken (strototime()) zo uit mijn hoofd en die te vergelijken met de datum van vandaag + 7 dagen (time() + 60 * 60 * 24 * 7)


Je hoeft maar één veldje toe te voegen aan de tabel: weeklater

Verder als je dit gaat doen is het vandaag:
Maandag + 7 = Volgende week maandag (okej, klopt)
Dinsdag + 7 = Volgende week dinsdag (hmmz, het moet nu ineens op 6 worden). Kortom, de weeklater is niet statisch, dus het moet ergens vast staan. En dat doe je doormiddel van één extra veldje toe tevoegen aan de tabel.
GaMer13 schreef op 02.04.2007 09:48
Laat de datum van wanneer het toegevoegd is staan als een timestamp. Dan, maak een timestamp van 7 dagen later en gebruik een if clause zoals hieronder:


<?php
    if($row['toegevoegdedatum'] <= $row['7dagenlaterstamp']){
        echo "NIEUW! -<a href=\"#\">Linkie!</a>";
    }else{
        echo "-<a href=\"#\">Linkie!</a>";
    }
?>


Natuurlijk wel de 7dagenlaterstamp in de database staan, want anders wordt het nooit false :P


Het lukt niet omdat "toegevoegd" altijd kleiner blijft dan "weeklater" want daar vul ik gewoon een datum in van toevoeging en die veranderd dus niet.
Hiermee kan je het makkelijk uitvoeren zorg wel dat datumtoegevoegd in een DATETIME veld staat:

<?php
if((strtotime($row['toegevoegd']) + 3600 * 24 * 7 ) >= time() )
{
echo '-<a href="website.php?link_id='. $row['link_id'].'" target="_blank" title="'. $row['link_naam'].'" class="nieuw">'.$row['link_naam'].'</a><br />';
}
else
{
echo '-<a href="website.php?link_id='. $row['link_id'].'" target="_blank" title="'. $row['link_naam'].'">'.$row['link_naam'].'</a><br>';
}
?>
Het kan ook in de query verwerkt worden


    SELECT
        de,
        velden,
        die,
        jij,
        gebruikt,
        CASE datum
            WHEN DATEDIFF(datum,NOW()) < 7
            THEN 'true'
            ELSE 'false'
        END CASE AS nieuw
    FROM tabel
    WHERE etc

Het zal alleen nog niet werken gok ik, want weet niet precies uit mijn hoofd hoe je die datum nu moet vergelijken. Maar heb nu geen tijd om uit te zoeken. Mocht het niet al gelukt zijn in die tussentijd, kijk ik later nog even voor de correcte syntax :)

Edit: Controleren gaat dan zo:
if($row['nieuw'] == 'true') { vette link } else { gewone link }
Of je laat MySQL alles in één doen;

SELECT
CASE
  WHEN DATEDIFF(NOW(), datum1) < 7 THEN CONCAT('<strong>', 'link', '</strong>')
  ELSE 'link'
END
AS link
FROM tabelnaam
Kan inderdaad ook nog, maar ik vind het meestal te veel van het goede om HTML in een query te zetten. Ergens heb ik ook het gevoel dat dmv CONCAT queries veel snelheid verliezen.

Edit: Jan ik neem aan dat jij wel juist syntax hebt? Komt me in ieder geval bekender voor :)
@ WillemJan: klopt dat is een afweging. Query iets trager, PHP iets sneller, omdat je niet meer op true of false hoeft te testen. Dat zou natuurlijk uit te zoeken zijn, maar dat mag iemand anders doen ;-)
[edit]
Ja, die syntax is getest en werkt.
[/edit]

Reageren