Ik ben bezig met een nieuwspagina in PHP te maken. Gekoppeld aan een database in mysql. Op de hoofdpagina verschijnen de nieuwsberichten, maar worden ingekort als er meer dan 220 tekens in voorkomen. Er verschijnt automatisch een link (MEER) en vervolgens kan het hele nieuwsbericht gelezen worden.
Ik gebruik 2 pagina's, 1 pagina index.php met nieuwsberichtenoverzicht. 1 Pagina om het geselecteerde nieuwsbericht te lezen.

Als er verzoek wordt gedaan om een nieuwsbericht helemaal te lezen, blijf de ID= leeg. Het is misschien allemaal vrij basic, maar ik heb nog niet zoveel arvaring met php en mysql en ik kom niet echt vooruit. Ik heb er al verschillende boeken bij gehaald, maar het haal tniets uit.
Ik hoop dat jullie me op weg kunnen helpen want ik wil het graag onder de knie krijgen!

de index.php:

<?php
//pad naar rootmap
$rootdir="../";

//tot welke rubriek behoort de pagina?
$section="news";

/***********************************News-System********************************/
//Hier worden de berichten uit de database ingelezen
$db = mysql_connect("localhost","***","****") or die (mysql_error());
mysql_select_db("ferrysch_pagina",$db);
$news_SQL="SELECT * FROM news ORDER BY news_datetime DESC";
$news_result=mysql_query($news_SQL);

/***********************************News-System-Ende***************************/

//Eerste deel van de standaardopmaak laden
include("../opmaak/header.inc.php");
include($rootdir."opmaak/navigation.inc.php");
//Hier komt de inhoud


//Hier worden de berichten weergegeven
while($news=mysql_fetch_array($news_result)){


//Opmaak van datum
$unixtime = strtotime($news['news_datetime']);
//controle op lengte hoofdtekst en eventueel inkorten
if(strlen($news['news_main'])>220){
$news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">meer</a>";
}
?>




news.php voor het nieuwsbericht compleet te kunnen lezen:



<?php
//Nieuwspagina - weergave van een volledig bericht.
$rootdir="../";

$section="news";

//Parameter inlezen
$news_ID=$_GET['news_ID'];
//type variabele instellen om misbruik te voorkomen
settype($news_ID,"int");

/***********************************News-Systeem********************************/
//Bericht inlezen aan de hand van news_ID
$db = mysql_connect("localhost","***","***") or die (mysql_error());
mysql_select_db("ferrysch_pagina",$db);
$news_SQL="SELECT * FROM news WHERE news_ID=" . $news_ID;
$news_result=mysql_query($news_SQL);
$news=mysql_fetch_array($news_result);
mysql_close();
/***********************************News-Systeem-Einde**************************/


//Hier worden de berichten weergegeven
//De datum opmaken
$unixtime = strtotime($news['news_datetime']);

?>


De link naar de testsite

Alvast bedankt!
FF raden naar het boek: PHP 5 zonder stress?? :)

Maar waar ik denk dat het fout gaat is dat je kolom news_ID niet bestaat (is ook hoofdletter gevoelig, dus controleer daar even op)

Hey, je hebt gelijk over dat boek en de hoofdletters! het boek waar ik mee oefen heet PHP5 & Mysql. Ik ben al wat fouten tegen gekomen in het boek en nu dus weer 1. De ID moet in kleine letters en nu doet ie 't!
Hartstikke bedankt, mede door je snelle reactie Robert.

Nu werkt het
Tip:
Begin je scripts altijd met de volgende regels:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest van je script
?>
Dan krijg je alle fouten en waarschuwingen die er zijn ook daadwerkelijk op het scherm te zien.

En ga natuurlijk geen @-jes gebruiken om fouten en waarschuwingen weer te onderdrukken...
Bedankt voor je tip Frank, ik zal t meenemen in mijn scripts.
Fer schreef op 30.01.2007 11:11
Hey, je hebt gelijk over dat boek en de hoofdletters! het boek waar ik mee oefen heet PHP5 & Mysql. Ik ben al wat fouten tegen gekomen in het boek en nu dus weer 1. De ID moet in kleine letters en nu doet ie 't!
Hartstikke bedankt, mede door je snelle reactie Robert.

Nu werkt het


Dit wist ik toevallig, want die fout was ik zelf ook al tegengekomen in het boek, en Frank heeft gelijk voor de foutmeldingen. En met SQL gebruik je dit;

$var=mysql_query($sql) or trigger_error(mysql_error());

Reageren