Ik heb een pagina met items uit een database, waarbij ik een specifiek item kan selecteren via de id.
De code op de verzamelpagina:
<div class="page">
<div class="leftmenu">
<?php
try {
require_once ('../data/sql_link.php');
$sql_select = "SELECT id,
titel,
introverhaal,
verhaal,
datum
FROM verhalen
ORDER BY datum";
$stmt = $db->prepare($sql_select);
$stmt -> execute(array());
$results = $stmt->fetchAll();
?>
<dl class="leftmenu">
<?php foreach ($results as $result) { ?>
<dt><?php echo $result['datum']; ?></dt>
<dd><?php echo $result['titel']; ?></dd>
<?php
}
?>
</dl>
<?php
}
catch (PDOException $e) {
print "Error!: ".$e->getMessage()."<br/>";
echo 'Iets gaat niet goed.';
}
?>
</div>
<div class="article">
<?php
foreach ($results as $result) {?>
<h3><?php echo $result['titel']; ?></h3>
<?php echo $result['introverhaal'].'<br><span style="text-align:right; font-size:0,925em;"><a href="verhaal.php?id='.$result['id'].'">Lees verder...'.$result['id'].'</a></span><br><hr>';
}
?>
</div>
</div>
Via de link in dit script 'lees verder...', ga ik naar een nieuwe file. In de browser zie ik als adres: verhaal.php?id=.. en het juiste nummer behorend bij de link.
De code op die pagina die de rij uit de database moet ophalen van het bijbehorende id is:
<div class="page">
<div class="leftmenu">
<?php
ini_set('display_errors',1); // 1 == on , 0 == off
error_reporting(E_ALL | E_STRICT);
session_start();
if (!isset($_GET['id']) OR !ctype_digit($_GET['id'])) {
echo '<p>Geen verhaal geselecteerd!</p>';
//exit();
}
else {
$id=$_GET['id'];
try {
require_once ('../data/sql_link.php');
$sql_select = "SELECT id,
titel,
verhaal,
datum
FROM verhalen
WHERE id=$id";
$stmt = $db->prepare($sql_select);
$stmt -> execute(array());
$results = $stmt->fetchAll();?>
<div class="article">
<?php
foreach ($results as $result) {?>
<h3><?php echo $result['id'].' - '.$result['titel']; ?></h3>
<?php echo $result['verhaal'];
}
?>
</div>
<?php
}
catch(PDOException $e) {
echo $e->getMessage().'<p>Er is een probleem opgetreden, probeer het later nog eens. Als het probleem blijft bestaan neem contact op via de contactpagina.</p>';
//exit();
}
}
?>
</div>
</div>
De link werkt, ik krijg geen foutmeldingen, maar om de een of andere reden wordt niet de juiste rij uit de database geselecteerd. Ik krijg altijd de rij te zien met het laatste id-nummer.
Het is vast een stommiteit, maar ik zie niet waar de fout zit. Kan iemand me helpen?