Archive script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bla Bla

Bla Bla

08/04/2011 13:21:50
Quote Anchor link
Hee iedereen,

ik heb een probleempje met een script voor mijn website. Het script is bedoeld voor een pagina die alle entries weergeeft van een bepaalde maand, die wordt gespecificeerd in de url. Als de maand niet wordt gespecificeerd dan worden alle entries weergeven. Dat is in ieder geval de bedoeling, maar hij geeft helemaal niks weer als er een maand wordt gespecificeerd.

Zou iemand mij kunnen helpen?

Bob

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
mysql_connect ('localhost', 'db_username', 'db_password') ;
mysql_select_db ('db_name');

if (!isset($_GET['month'])) {
    $result = mysql_query("SELECT timestamp, id, title FROM php_blog ORDER BY id DESC");
    while ($row = mysql_fetch_array($result)) {
        $date = date("j-n-Y H:i", $row['timestamp']);
        $id = $row['id'];
        $title = stripslashes($row['title']);
        ?>


        <?php echo $date; ?> - <a href="article.php?id=<?php echo $id; ?>"><?php echo $title; ?></a></br>
        <?php
        }
    }
}

else {
    $month = (int)$_GET['month'];
}


$result = mysql_query("SELECT timestamp, id, title FROM db_name WHERE FROM_UNIXTIME(timestamp, '%F') = '$month' ORDER BY id DESC");

while ($row = mysql_fetch_array($result)) {
    $date = date("l F d Y", $row['timestamp']);
    $id = $row['id'];
    $title = stripslashes($row['title']);

    ?>


    <p><?php echo $date; ?><br /><a href="article.php?id=<?php echo $id; ?>"><?php echo $title; ?></a></p>
    <?php
}

?>
 
PHP hulp

PHP hulp

23/12/2024 21:09:39
 
Christopher A

Christopher A

05/08/2011 15:37:22
Quote Anchor link
Ik heb hetzelfde probleem. Mijn code verschilt een beetje maar komt op hetzelfde neer. Wanneer ik een $_GET['maand'] aanroep wordt er ook niets uit de database geladen. De datum is dan ook 1 januari 1970...

(mijn thread: http://www.phphulp.nl/php/forum/topic/archief-links/79461/)

Ik heb zelf nog geen succes maar zodra ik het weet laat ik wat weten in deze thread!
 
The Force

The Force

05/08/2011 16:00:05
Quote Anchor link
%F bestaat niet, ik denk dat je %m bedoeld. Je $month is zo te zien namelijk een int. Houd er wel rekening mee dat je dan eventueel een extra 0 meekrijgt (00 t/m 12).

Het beste zou je (als dat mogelijk is) de timestamps om kunnen zetten naar datetime. Timestamp is om veel redenen achterhaald. De belangrijkste zijn dat je het telkens moet converteren en dat het niet leesbaar is in de database.

Je moet ook even goed kijken naar de opbouw van je code. De tweede query wordt namelijk altijd uitgevoerd, ook als $_GET['month'] niet is meegegeven. Daarnaast is een deel van de code dubbel. Je kan het beste MySQL de juiste data laten selecteren en formatteren met de datetime functies. Dan krijg je meteen je data op een goede manier aangeleverd en hoef je niet die nog met PHP aan te gaan passen. Dan doel ik dus op "$date = date("l F d Y", $row['timestamp']);" e.d..

stripslashes en addslashes kan je beter niet gebruiken omdat dat problemen op kan leveren bij data met speciale tekens (weet niet meer precies wat het probleem was maar het heeft mij heel veel uren gekost). mysql_real_escape_string is de manier om data veilig te maken voor database opslag. Je hebt daarna ook geen problemen meer als je het uit de database wilt halen. Tot slot is het een beetje onzinnig om een extra variabele aan te maken voor $row['id'] en $row['title'].
 
Christopher A

Christopher A

06/08/2011 18:33:43
Quote Anchor link
Hé Bob, het is mij gelukt! Als je er onderhand nog niet uit bent kun je misschien een kijkje nemen in de thread die ik een tijd geleden was gestart.

(link staat in mn vorige comment)

Succes!

Nogmaals bedankt The Force!
 



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.