Ik heb een nieuwspagina waarop berichten worden weergegeven vanuit de database "news"


<?php

include("../global.inc.php");

$sql="SELECT * FROM news ORDER BY news_datetime DESC";
$res=mysql_query($sql);

?>

<html>
    <head>
        <title></title>
    </head>

<body>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
    <tr> 
        <td class="top">Datum/tijd</td>
        <td class="top">Titel</td>
        <td class="top">Inhoud</td>
        <td class="top">Wissen/Bewerken</td>
    </tr>
<?

while($news=mysql_fetch_array($res)){
$unixtime = strtotime($news['news_datetime']);

?>
  
<?

$news['news_main'] = str_replace("[space]","<br>",$news['news_main']);
$news['news_main'] = str_replace("[/space]","</br>",$news['news_main']);
$news['news_main'] = str_replace("[b]","<b>",$news['news_main']);
$news['news_main'] = str_replace("[/b]","</b>",$news['news_main']);
$news['news_main'] = str_replace("[i]","<i>",$news['news_main']);
$news['news_main'] = str_replace("[/i]","</i>",$news['news_main']);
$news['news_main'] = str_replace("[u]","<u>",$news['news_main']);
$news['news_main'] = str_replace("[/u]","</u>",$news['news_main']);
$news['news_main'] = str_replace("[img]","<img border='0' src='uploads/",$news['news_main']);
$news['news_main'] = str_replace("[/img]","'>",$news['news_main']);  
$news['news_main'] = str_replace("[img2]","<img border='0' src='",$news['news_main']);
$news['news_main'] = str_replace("[/img2]","'>",$news['news_main']);  
$news['news_main'] = eregi_replace("\[url\]www.([^\[]*)","<a href=\"http://www.\\1\">\\1", $news['news_main']);
$news['news_main'] = eregi_replace("\[url\]([^\[]*)","<a href=\"\\1\" >\\1", $news['news_main']);
$news['news_main'] = eregi_replace("(\[url=)([A-Za-z0-9_~&=;\?:%@#./\-]+[A-Za-z0-9/])(\])", "<a href=\"http://\\2\">", $news['news_main']);
$news['news_main'] = eregi_replace("\[url](http://(.*))", "<a href=\"\\1\" >\\1", $news['news_main']);
$news['news_main'] = eregi_replace("(\[/url\])", "</a>", $news['news_main']);
$news['news_main'] = str_replace("http://http://", "http://", $news['news_main']);
$news['news_main'] = eregi_replace("([a-zA-Z0-9_-]+)@([a-zA-Z0-9\._-]+)(\.[a-zA-Z]+)", "<a href=\"mailto:\\1@\\2\\3\">\\1@\\2\\3</a>", $news['news_main']);


    $arraydag = array(
    "Zondag ",
    "Maandag ",
    "Dinsdag ",
    "Woensdag ",
    "Donderdag ",
    "Vrijdag ",
    "Zaterdag "
    );
    $dagvanweek = $arraydag[date("w", $unixtime)];
    
    $arraymaand = array(
    "Januari",
    "Februari",
    "Maart",
    "April",
    "Mei",
    "Juni",
    "Juli",
    "Augustus",
    "September",
    "Oktober",
    "November",
    "December"
    );     
    $dag = date("j", $unixtime); 
    $maand= $arraymaand [date("n" , $unixtime) - 1]; 
    $jaar = date(" Y" , $unixtime);	
    ?> 


        
    <tr bgcolor="#F9F9F9"> 
        <td><?php echo "$dagvanweek $dag $maand $jaar"; ?></td>
        <td><?php echo $news['news_header'] ?></td>
        <td><?php echo $news['news_main'] ?></td>



<?php

}
mysql_close();
?>          
         
    </tr>

</table>
</body>

</html> 




Nu wil ik maximaal 10 berichten per pagina laten zien.

Ik gebruik de onderstaande code. De paginanummers werken maar op elke pagina zie ik alle berichten. Dus wanneer ik bv 16 berichten heb zie ik op pagina 1 , 16 berichten. Op pagina 2 zie ik eveneens 16 berichten.

<?php
//Constante waarde definieren die weergeeft hoeveel berichten er per pagina maximaal kunnen getoond worden
define("MAX_AANTAL_BERICHTEN",15);

//Ophalen van de pagina-nummer.
if(!isset($_GET['pagina_nr']))$pagina_nr = 1;
else $pagina_nr = $_GET['pagina_nr'];

$start_nr = ($pagina_nr-1)*MAX_AANTAL_BERICHTEN; //Vanaf waar we selecteren uit de database
$totaal_aantal_berichten = mysql_result(mysql_query("SELECT COUNT(id) FROM news"),0);
if($totaal_aantal_berichten!=0) $aantal_paginas = ceil($totaal_aantal_berichten/MAX_AANTAL_BERICHTEN);
else $aantal_paginas=1;
?>

<?
echo 'Pagina: ';
for($i=1;$i<=$aantal_paginas;$i++)
{
if($i==$pagina_nr) echo ' | '.$i;
else echo ' | <a href="news.php?pagina_nr='.$i.'">'.$i.'</a>';
}

?>

Mijn database ziet er als volgt uit:

create table news (
id int(11) unsigned NOT NULL auto_increment,
news_header text NOT NULL,
news_main TEXT not null,
news_datetime DATE not null,
PRIMARY KEY (id)
) TYPE=MyISAM;



Ziet iemand wat er verkeerd is?
Oké. Leuk script.
Mooi zo....
Wat de mensen hier boven willen zeggen (Hoe wel, ik spreek enkel voor mezelf, maar ik vermoed toch iets) ...

Als je een probleem post, vertel ons dan in detail wat je wil realiseren en wat er eventueel fout loopt.

Indien je errors of warnings krijgt, vertel ons dan wat die errors zijn.

Als je geen specifieke vraag stelt, kunnen wij geen specifiek antwoord geven.
Ik heb mijn bericht aangepast.

Met mijn huidige code worden alle berichten uit de database op 1 pagina weergegeven. Wanneer er bv 100 berichten zijn wordt de pagina ernorm lang.

Nu wil ik het aantal berichten beperken tot bv 10 per pagina. Het 11de bericht moet op pagina 2 weergegeven worden, bericht 21 op pagina 3,....

Wanneer ik de twee stukjes code toevoeg aan mijn basis script gebeurt het volgende. De paginanummers verschijnen. Dit werkt perfect MAAR op elke pagina worden alle berichten weergegeven. Dus geen 15 berichten per pagina.

Ik hoop dat ik nu een beetje duidelijker ben.
Het lijkt erop dat de pagination niet op de goede manier werkt, hij herkend inderdaad wel hoeveel pagina nummers er nodig zijn, maar hij strijkt het niet mooi uit over elke pagina.

heb je al error_reporting(E_ALL); aan staan?

daarmee vis je meestal wel wat probleempjes uit je script

Reageren