Link 7 dagen als "nieuw" markeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

02/04/2007 09:42:00
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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>';
            }

?>
Gewijzigd op 01/01/1970 01:00:00 door
 
PHP hulp

PHP hulp

20/11/2024 17:32:28
 
GaMer B

GaMer B

02/04/2007 09:48:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
 

02/04/2007 09:57:00
Quote Anchor link
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.
 
Eris -

Eris -

02/04/2007 10:00:00
Quote Anchor link
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)
 
GaMer B

GaMer B

02/04/2007 10:03:00
Quote Anchor link
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.
 

02/04/2007 10:52:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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.
 
Thijs X

Thijs X

02/04/2007 11:10:00
Quote Anchor link
Hiermee kan je het makkelijk uitvoeren zorg wel dat datumtoegevoegd in een DATETIME veld staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?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>';
}

?>
 
Willem Jan Z

Willem Jan Z

02/04/2007 11:31:00
Quote Anchor link
Het kan ook in de query verwerkt worden

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
    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 }
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
 
Jan Koehoorn

Jan Koehoorn

02/04/2007 11:51:00
Quote Anchor link
Of je laat MySQL alles in één doen;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
CASE
  WHEN DATEDIFF(NOW(), datum1) < 7 THEN CONCAT('<strong>', 'link', '</strong>')
  ELSE 'link'
END
AS link
FROM tabelnaam
 
Willem Jan Z

Willem Jan Z

02/04/2007 12:45:00
Quote Anchor link
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 :)
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
 
Jan Koehoorn

Jan Koehoorn

02/04/2007 12:47:00
Quote Anchor link
@ 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.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 

02/04/2007 12:56:00
Quote Anchor link
Jan Koehoorn schreef op 02.04.2007 11:51:
Of je laat MySQL alles in één doen;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
CASE
  WHEN DATEDIFF(NOW(), datum1) < 7 THEN CONCAT('<strong>', 'link', '</strong>')
  ELSE 'link'
END
AS link
FROM tabelnaam


Dit is veel te moeilijk voor mij, ik weet niet hoe ik dit in mijn scriptgedeelte moet zetten.
Ik zie nu op de pagina ipv de linknamen het woord l.url staan.
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
<?php
 //Laat de categorie naam zien boven in de tabel
    $sql = "
        SELECT c.cat_id, c.cat_naam, l.link_naam, l.url, l.link_id, l.toegevoegd, l.weeklater,
        CASE
          WHEN DATEDIFF(NOW(), l.toegevoegd) < 7 THEN CONCAT('<strong>', 'l.url', '</strong>')
          ELSE 'l.url'
        END
        AS link
        FROM winkel_categorie AS c, winkel_linken AS l
        WHERE c.cat_id = "
. $_GET['cat_id'] . "
        AND c.cat_id = l.cat_id
        ORDER BY l.link_naam ASC
        "
;
        
    $res = mysql_query($sql) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
    $teller = 0;
    $list_completed = false;
echo '<table align="center"><tr>';
$kolommen = 3;


    while ($row = mysql_fetch_assoc ($res)) {
        
        if ($teller % 10 == 0) {
echo '<td valign="top">';
echo '<table width="170" align="left" cellspacing="2" cellpadding="0">';
echo '<tr>';
echo '<td colspan="2"><h3>'.$row['cat_naam'].'</h3></td>';
echo '</tr>';
echo '<tr>';
echo '<td class="tabelborder">';
        }

        
            echo '-<a href="website.php?link_id='. $row['link_id'].'" target="_blank" title="'. $row['link_naam'].'">'.$row['link'].'</a><br>';
            
        
    
        ?>
 
Jan Koehoorn

Jan Koehoorn

02/04/2007 13:05:00
Quote Anchor link
En zo:
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
<?php
  //Laat de categorie naam zien boven in de tabel
  $sql = "
        SELECT c.cat_id, c.cat_naam, l.link_naam, l.url, l.link_id, l.toegevoegd, l.weeklater,
        CASE
          WHEN DATEDIFF(NOW(), l.toegevoegd) < 7 THEN CONCAT('<strong>', l.url, '</strong>')
          ELSE l.url
        END
        AS link
        FROM winkel_categorie AS c, winkel_linken AS l
        WHERE c.cat_id = "
. $_GET['cat_id'] . "
        AND c.cat_id = l.cat_id
        ORDER BY l.link_naam ASC
        "
;
  
  $res = mysql_query($sql) or die("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
  $teller = 0;
  $list_completed = false;
  echo '<table align="center"><tr>';
  $kolommen = 3;
  
  
  while ($row = mysql_fetch_assoc($res)) {
      if ($teller % 10 == 0) {
          echo '<td valign="top">';
          echo '<table width="170" align="left" cellspacing="2" cellpadding="0">';
          echo '<tr>';
          echo '<td colspan="2"><h3>' . $row['cat_naam'] . '</h3></td>';
          echo '</tr>';
          echo '<tr>';
          echo '<td class="tabelborder">';
      }

      
      echo '-<a href="website.php?link_id=' . $row['link_id'] . '" target="_blank" title="' . $row['link_naam'] . '">' . $row['link'] . '</a><br>';
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 

03/04/2007 15:51:00
Quote Anchor link
@Jan

Ik geloof dat jij overal wel een oplossing voor kunt bedenken.

Bedankt zo werkt hij precies zoals ik bedoel :)
 
Rudie dirkx

rudie dirkx

03/04/2007 15:56:00
Quote Anchor link
where clause, if statement
 



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.