script laatste 5 berichten + archieffunctie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Femke

femke

08/03/2006 16:37:00
Quote Anchor link
hello,

Mijn CMS met nieuwsberichten is bijna klaar. Ik heb, lieve forumleden, nog 2vragen.

1. Hoe kan ik zorgen dat alleen de laatste vijf toegevoegde berichten op de website index.php worden getoond? Ik heb wat lopen klooien met de DESC in combinatie met LIMI maar zonder succes....

2. Alle overige nieuwsberichten (minus de 5 recent geplaatste, die staan immers al op index.php) moeten worden weergegeven in een archief.

Iemand met een mooi voorbeeld script waar ik de antwoorden voor mijn vragen uit kan halen? Dat zou tof zijn!

-x- femke
 
PHP hulp

PHP hulp

16/11/2024 15:28:09
 
Eris -

Eris -

08/03/2006 16:40:00
Quote Anchor link
Nah zal je even een tip geven

SELECT * FROM TABEL ORDER BY id DESC LIMIT 0,5 voor de eerste 5 berichten
SELECT * FROM TABEL ORDER BY id DESC LIMIT 5 voor alle berichten na de 5 eersten
Gewijzigd op 08/03/2006 16:42:00 door Eris -
 
Arjan Kapteijn

Arjan Kapteijn

08/03/2006 16:40:00
Quote Anchor link
//eerste 5
SELECT * FROM tabel LIMIT 5;

//vanaf de eerste 5
SELECT * FROM tabel LIMIT 5,*;
 
Stefan van Iwaarden

Stefan van Iwaarden

08/03/2006 16:42:00
Quote Anchor link
laatste 5 weergeven met een LIMIT

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$query
= "SELECT * FROM tabel LIMIT 5 ORDER BY id DESC";
$result = mysql_query($query);

while($row = msyql_fetch_array($result))
{

//echo de resultaten
}
?>


DESC zorgt ervoor dat je andersom, dus de laatst toegevoegde eerst sorteert.
Gewijzigd op 08/03/2006 16:46:00 door Stefan van Iwaarden
 
- SanThe -

- SanThe -

08/03/2006 16:43:00
Quote Anchor link
Ik stem op Arjan, die tweede van Eris gaat niet goed waarschijnlijk.
 
Lissy Pixel

Lissy Pixel

08/03/2006 16:45:00
Quote Anchor link
hahahahahaha ik ben benieuwd :)
 
Femke

femke

08/03/2006 16:50:00
Quote Anchor link
dames en heren, ik ben het aan het proberen, jullie horen het snel ;-)
 
Femke

femke

08/03/2006 17:05:00
Quote Anchor link
pfffff, hopeloos. voorlopig wint niemand. Of ik zie iets simpels over het hoofd. Iemand suggesties?

$sql = "SELECT id,titel,datum,kop,substring(datum, 7, 4) as year FROM nieuws LIMIT 5 WHERE SUBSTRING(datum, 4, 2) = $counter order by id DESC";
 

08/03/2006 17:08:00
Quote Anchor link
Je query is zeer onoverzichtelijk. Doe keywords zoals SELECT en ORDER BY en AS met hoofdletters.
En wat geeft mysql_error?
 
- SanThe -

- SanThe -

08/03/2006 17:08:00
Quote Anchor link
SELECT .... FROM ...... WHERE .... LIMIT .... ORDER.
 
Femke

femke

08/03/2006 17:13:00
Quote Anchor link
wederom dank voor de snelle reactie, @Sebastiaan, hoofdletters zijn aangepast, @ Lazy, als ik de LIMIT plaats op de gegeven plek, dan krijg ik een error op de volgende regel die begint met $res

De foutmelding luidt:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

---- nu maar even dan het hele stukje code, dan weten jullie waar ik het over heb-----

$sql = "SELECT id,titel,datum,kop,substring(datum, 7, 4) AS year FROM nieuws WHERE SUBSTRING(datum, 4, 2) = $counter LIMIT 5 ORDER BY id DESC";

$res = mysql_query($sql);

if (mysql_num_rows($res) >= 1)
{
$year = "$row[year]";

$berichten = mysql_num_rows($res);

$month = maand($counter);

if ($berichten == 1)
echo "";
else
echo "";

while ($row = mysql_fetch_array($res))
{
$sql2 = "select id from reacties where tid = $row[id]";
$res2 = mysql_query($sql2);
$count = mysql_num_rows($res2);
Gewijzigd op 08/03/2006 17:20:00 door femke
 
- SanThe -

- SanThe -

08/03/2006 17:17:00
Quote Anchor link
LIMIT 5 ORDER BY id DESC LIMIT 5";

Das 2 keer LIMIT.....

$year = "$row[year]";

Je hebt nog geen $row....

... tot zover ...
 
Femke

femke

08/03/2006 17:24:00
Quote Anchor link
SanThe, ik heb het aangepast. Is nu

$sql = "SELECT id,titel,datum,kop,substring(datum, 7, 4) AS year FROM nieuws WHERE SUBSTRING(datum, 4, 2) = $counter LIMIT 5 ORDER BY id DESC";

year, inderdaad. Da klopt nie. wordt gefixt. Dank en mocht je nog commentaar hebben dan graag.
 
- SanThe -

- SanThe -

08/03/2006 17:29:00
Quote Anchor link
Laat jij maar horen of het nu werkt of niet. Ik zie in bovenstaand stukje code nog meer waarvan ik denk, werkt dat? Maar dat kan ik niet beoordelen omdat het slechts een stukje code is en niet de complete.
 
Femke

femke

08/03/2006 17:43:00
Quote Anchor link
ik ga mijn best doen de rotzooi eruit te halen. Dank in ieder geval voor het commentaar.
 
Lissy Pixel

Lissy Pixel

08/03/2006 18:18:00
Quote Anchor link
Your welcome :)
 
Femke

femke

08/03/2006 18:26:00
Quote Anchor link
@SanThe en alle andere aanwezigen,

Ik ga met de billen bloot. Hierbij bied ik jullie inkijk in mijn script. Er staat ongetwijfeld nog wat rotzooi in, maar het werkt wel. Met uitzondering van LIMIT optie, die ik met geen mogelijkheid in de doortoe bestemde regel krijg ingepast.

doel van scirpt: Ik laat jullie het script zien: index.php. Dit script haalt berichten uit de mysql database. Rangschikken lukt nog niet, evenals de 5 meest recente berichten laten zien.

Nog wat info vooraf: Ik heb me verdiept in PHP dmv diverse tutorials. o.a. op deze site. algemene opmerkingen op mijn php scripting te verbeteren zijn van harte welkom. Opmerkingen om de LIMIT function te kunnen gebruiken uiteraard ook!

fem,

-------
<html gebeuren>

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
<?

require("../map/map/XX.dbinst.php");

    function
maand($counter)
    {

        if ($counter == 1)
            $count = "Januari";
        elseif ($counter == 2)
            $count = "Februari";
        elseif ($counter == 3)
            $count = "Maart";
        elseif ($counter == 4)
            $count = "April";
        elseif ($counter == 5)
            $count = "Mei";
        elseif ($counter == 6)
            $count = "Juni";
        elseif ($counter == 7)
            $count = "Juli";
        elseif ($counter == 8)
            $count = "Augustus";
        elseif ($counter == 9)
            $count = "September";
        elseif ($counter == 10)
            $count = "Oktober";
        elseif ($counter == 11)
            $count = "November";
        elseif ($counter == 12)
            $count = "December";
        
        return $count;
    }


    if (!$HTTP_GET_VARS[id] && !$HTTP_POST_VARS[id])
    {

        $counter = 1;
            
        while($counter <= 12)
        {

            if ($counter == 1)
                $counter = "0" . $counter;

// in volgende regel moet de LIMIT tag komen...
    
            $sql = "SELECT id,titel,datum,kop,substring(datum, 7, 4) AS year FROM nieuws WHERE SUBSTRING(datum, 4, 2) = $counter ORDER BY id DESC,year DESC";
          
            $res = mysql_query($sql);
            
            if (mysql_num_rows($res) >= 1)
            {

                $year = "$row[year]";
                    
                $berichten = mysql_num_rows($res);
                
                $month = maand($counter);
                
                if ($berichten == 1)
                    echo "";
                else
                    echo "";
                
                while ($row = mysql_fetch_array($res))
                {

                    $sql2 = "select id from reacties where tid = $row[id]";
                    $res2 = mysql_query($sql2);
                    $count = mysql_num_rows($res2);
                    //overzicht van de nieuwspagina
                    
                    
                    echo "<table><td class=\"main_datum\">[$row[datum]]<div class=\"main_intro\">$row[kop]</div><a href=$PHP_SELF?id=$row[id] class=\"linkjes\">$row[titel]</a><br><a href=$PHP_SELF?id=$row[id] class=\"reacties\"><div align=\"right\">aantal reacties: ($count)</div></td></table>";
                    
                }

                
                //echo "</blockquote><p>";
                
            }
            else
            {
                if ($counter <= 12)
                {

                    $length = strlen(maand($counter)) - 1;
                    $month = strtoupper(substr(maand($counter), 0, -$length)) . substr(maand($counter), 1);
                    if ($counter == 11)
                        $months .= "$month en ";
                    elseif ($counter == 12)
                        $months .= "$month";
                    else
                        $months .= "$month" . ", ";
                }

                
                if ($counter == 12)
                {

                    if (strlen($months) <= 8)
                        echo "";
                    else
                        echo "";
                }
            }

            
            $counter++;

        }
    }

    else
    {
        if ($HTTP_POST_VARS["submit"] && $HTTP_POST_VARS["naam"] && $HTTP_POST_VARS["msg"])
        {

            $datum = date("d.m.Y H:i");
            
            $sql = "INSERT INTO reacties (id, naam, titel, msg, datum, ipadres, tid) VALUES ";
            $sql .= "('', '$HTTP_POST_VARS[naam]', '$HTTP_POST_VARS[titel]', '$HTTP_POST_VARS[msg]', '$datum', '$REMOTE_ADDR', '$HTTP_GET_VARS[id]')";
            $res = mysql_query($sql);
            
            if ($res)
                echo "<SCRIPT LANGUAGE=\"javascript\" TYPE=\"text/javascript\">window.location='$PHP_SELF?id=$HTTP_GET_VARS[id]'</SCRIPT>\n";
            else
                echo "Reactie niet toegevoegd.";
        }

        else
        {
            //geselecteerd artikel bekijken
            $sql = "SELECT id,titel,msg,datum,kop FROM nieuws WHERE id = '$HTTP_GET_VARS[id]'";
            $res = mysql_query($sql);
             echo "&nbsp;<a class=\"terug\" href=\"$PHP_SELF\" target=\"_top\">terug naar nieuws overzicht</a>";
         if (mysql_num_rows($res) >= 1)
            {

                $row = mysql_fetch_array($res);
                $hiddentitel = $row[titel];
              
                echo "<table width=\"320\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
                  //Datum printen op beeld
                echo "<tr>";
                echo "<td width=\"5\">&nbsp;</td>";
                   echo "<td class=\"main_datum\">$row[datum]</td>";
                echo "<td width=\"5\">&nbsp;</td>";
                  echo "</tr>";
                //Kop printen op beeld
                echo "<tr>";
                echo "<td width=\"5\">&nbsp;</td>";
                   echo "<td class=\"main_kop\">$row[kop]</td>";
                echo "<td width=\"5\">&nbsp;</td>";
                  echo "</tr>";
                //Intro printen op beeld
                echo "<tr>";
                  echo "<td width=\"5\">&nbsp;</td>";
                   echo "<td class=\"main_intro\">$row[titel]<br><br></td>";
                   echo "<td width=\"5\">&nbsp;</td>";
                 echo "</tr>";
                //Bericht printen op beeld
                
                $row[msg] = nl2br($row[msg]); //zorgt ervoor dat de enters (die wel in de DB staan) worden weergegeven
                
                echo "<tr>";
                  echo "<td width=\"5\">&nbsp;</td>";
                  echo "<td class=\"main\">$row[msg]</td>";
                   echo "<td width=\"5\">&nbsp;</td>";
                 echo "</tr>";
                echo "</table>";
                
              
                $row[msg] = nl2br($row[msg]);
                
                  //blauwe horizontale streep
                echo "<hr color=\"#dbe1e9\">";
                
                //linkjes  E-Mail dit bericht, Print en Naar boven
                echo "&nbsp;<img src=\"../images/icon_mail.jpg\">&nbsp;<a class=\"olink\" href=\"\"onClick=\"javascript:taf()\">e-mail dit bericht</a> | <img src=\"../images/icon_print.jpg\">&nbsp;<a class=\"olink\" href=\"blaaat\">print</a> | <img src=\"../images/icon_top.jpg\">&nbsp;<a href=\"javascript:scroll(0,0)\" class=\"olink\">naar boven</a><br><br>";
                echo "&nbsp;<span class=\"main\">Reacties bij dit bericht:</span><br><br>";
                
                $sql = "SELECT id,naam,titel,msg,datum FROM reacties WHERE tid = '$HTTP_GET_VARS[id]' ORDER BY id DESC";
                $res = mysql_query($sql);
                
          
                echo "<a name=\"reacties\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"300\"><tr><td>";
                echo "<table border=0 cellspacing=0 cellpadding=0 width=\"300\"></a>";
                
                     if (mysql_num_rows($res) >= 1)
                {

                    
                    while ($row = mysql_fetch_array($res))
                    {

                        $row[msg] = nl2br($row[msg]);
                        //!!!! hier de reacties
                        
                        echo "<table width=\"320\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
                         echo "<tr>";
                           echo "<td width=\"5\"></td>";
                        echo "<td bgcolor=\"#ffffff\" class=\"main\"><b>$row[naam]</b>&nbsp;[$row[datum]]</td>";
                        echo "</tr>";
                          echo "<tr>";
                           echo "<td width=\"5\"></td>";
                          echo "<td bgcolor=\"#ffffff\" class=\"main\">$row[msg]<br><br></td>";
                        echo "<td width=\"5\"></td>";
                        echo "</tr>";
                        
                        
                        
                        // ipv de tabel hierboven       echo "<tr><td bgcolor=\"#F1F2F4\" class=\"main\"><b>$row[naam]</b>[$row[datum]]</td></tr>";
                        // ipv de tabel hierboven       echo "<tr><td bgcolor=\"#F1F2F4\" class=\"main\">$row[msg]<br><br></td></tr>";

                        
                    }
                }

                else
                      {
                
                    echo "<tr><td bgcolor=\"#ffffff\" class=\"main\">&nbsp;Er zijn nog geen reacties op dit bericht</td></tr>";
                }

                
                echo "</td></tr></table></table><p>";
                
                

                
                echo "<form method=\"post\" action=\"$PHP_SELF?id=$HTTP_GET_VARS[id]\">";
                  echo "<input type=\"hidden\" name=\"titel\" value=\"$hiddentitel\">";
                  echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#ffffff\" width=\"200\">";
                echo "<tr>";
                echo "<td width=\"225\"><table width=\"25\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
                echo "<tr>";
                echo "<td width=\"5\">&nbsp;</td>";
                echo "<td><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
                echo "<div class=\"main\">Plaats hier uw reactie:</div><br>";
                echo "<tr>";
                echo "<td width=\"60\" valign=top class=\"main\">Naam<br>";
                echo "<input type=\"text\" name=\"naam\" id=\"nieuws_veld2\"></td>";
                echo "<td rowspan=\"2\"><br>";
                echo "<br>";
                echo "<td rowspan=\"2\">";                      
                echo "<tr>";
                echo "<td width=\"60\" valign=\"top\" class=\"main\">Bericht<br>";
                echo "<textarea name=\"msg\" rows=\"5\" maxlength=\"300\" cols=\"26\" id=\"nieuws_veld1\"></textarea></td>";
                echo "<tr>";
                echo "<td><input type=\"submit\" name=\"submit\" id=\"nieuws_submit\" value=\"reactie plaatsen\">";
                echo "</table></td>";
                echo "</tr>";
                echo "</table></td>";
                echo "</tr>";
                echo "</table>";
                echo "</form>";  
              
            }

            else
            {
                echo "Nieuws bericht niet gevonden.";
            }

            
            echo "&nbsp;<a class=\"terug\" href=\"$PHP_SELF\" target=\"_top\">terug naar nieuws overzicht</a>";
        }
    }

?>
 
- SanThe -

- SanThe -

08/03/2006 19:02:00
Quote Anchor link
Aardig stukje script. Er kan nog wel wat aan verbeterd worden. Om te beginnen zou ik de echo met enkele quotes gaan doen. Bij enkele quotes echood ie letterlijk wat er tussen staat naar het scherm. Voordeel is dat je de dubbele quotes niet meer hoeft te escapen en dus je script overzichtelijker wordt. Verder $vars altijd buiten de quotes houden is beter en duidelijker. En $HTTP_GET_VARS is antiek dat is gewoon $_GET

Dus i.p.v.
echo "<form method=\"post\" action=\"$PHP_SELF?id=$HTTP_GET_VARS[id]\">";

wordt het zoiets:
echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '?id=' . $_GET['id'] . '">';

Edit: Zat foutje in.
Gewijzigd op 08/03/2006 19:04:00 door - SanThe -
 
Femke

femke

08/03/2006 19:36:00
Quote Anchor link
@SanThe,

oke, wederom hartelijk dank voor commentaar. ook fijn om te horen dat het wel een aardig stukje script is. Het begin van php geeft toch een beetje een drijfzand gevoel... :)

Ik ga de dubbele quotes aanpassen. Ik kan dan dus ook die \ uit de betreffende regels verwijderen? De \ doe ik om te zorgen dat php deze tags als html goed interpreteerd.

Heb je misschien ook nog een idee hoe ik de LIMIT functie kan verwerken? Ik kan dan mijn index.php + archief.php afronden...

femke,
 
Marije

Marije

21/03/2006 21:20:00
Quote Anchor link
Ik probeer LIMIT met LIMIT 6,*; maar bij mij geeft hij de volgende fout :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*' at line 1
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/users/conceftp/conceptm.nl/freevoice2/pages/inc_nieuws_archief.php on line 30

iemand een idee?
 
Klaasjan Boven

Klaasjan Boven

21/03/2006 21:50:00
Quote Anchor link
wat is je exacte QUERY?
 

Pagina: 1 2 volgende »



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.