Hallo,
Ik heb een gastenboek geprogrammeerd in php mbv sql en dat werkt. Nu wilde ik ook een beheerpagina maken, met bij elk bericht een knop 'verwijder' en dan de functie erbij dat het bijbehorende bericht verwijderd wordt.
Ik kom er echter niet uit. Ik heb al verschillende errors gehad, maar bij de code zoals ik hieronder heb neergezet, krijg ik:

Parse error: syntax error, unexpected $end in C:\Xampp\htdocs\gastenboekbeheer.php on line 54

Voordat ik de reactie krijg "haakjes tellen", dit heb ik gedaan, en daar ligt het volgensmij niet aan.
Kan iemand mij helpen?

Hier de code van de beheerpagina:

<?php
$mysql_user = "";
$mysql_pass = "";
$mysql_host = "localhost";
$mysql_dbn = "gastenboek";

if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
echo "database connectie mislukt!";

exit();
}

elseif (isset ($_POST["verwijderen"]))
{
echo "gelukt, waarde: ". $_POST["verwijderen"];
}

else
{
echo "<h1>Gastenboek</h1>";

echo "<p>Voeg een <a href=\"" . $_SERVER['PHP_SELF'] . "?show=add\">nieuw bericht</a> toe aan het gastenboek.</p>";

$sql = "SELECT id,naam,email,bericht,DATE_FORMAT(datum, '%d.%m.%Y') as show_datum FROM reunisten_gastenboek ORDER BY datum DESC";

$res = mysql_query($sql);
$srv = $_SERVER['PHP_SELF'];

if (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
$row['email'] = htmlentities($row['email']);
$row['naam'] = nl2br(htmlentities($row['naam']));
$row['bericht'] = nl2br(htmlentities($row['bericht']));
$row['id'] = nl2br(htmlentities($row['id']));

echo "<p><fieldset><a href=\"mailto:" . $row['email'] . "\">" . $row['naam'] . "</a> schreef op <i>" . $row['show_datum'] . "</i>: <br />";
echo $row['bericht'] . "</fieldset></p>";

$idknop = $row['id'];

echo <<<EOD
<form action="$srv" method="post">
<input type="submit" name="verwijderen" value="$idknop" />
</form>
EOD;
}
}
else
echo "<p>Er zijn nog geen gastenboek berichten toegevoegd.</p>";
}
?>

Eric
Hij geeft het id van het bericht...

<?php

{
echo "<h1>Gastenboek beheer</h1>";

$sql = "SELECT id,naam,email,bericht,DATE_FORMAT(datum, '%d.%m.%Y') as show_datum FROM jbw_gastenboek ORDER BY datum DESC";

$res = mysql_query($sql);
$srv = $_SERVER['PHP_SELF'];

if (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
$row['email'] = htmlentities($row['email']);
$row['naam'] = nl2br(htmlentities($row['naam']));
$row['bericht'] = nl2br(htmlentities($row['bericht']));
$row['id'] = nl2br(htmlentities($row['id']));

echo "<p><fieldset><a href=\"mailto:" . $row['email'] . "\">" . $row['naam'] . "</a> schreef op <i>" . $row['show_datum'] . "</i>: <br />";
echo $row['bericht'] . "</fieldset></p>";

$idknop = $row['id'];

echo '<form action="'.$srv.'" method="post">
<input type="submit" name="verwijderen" value="'.$idknop.'" />
</form>';
}
}
else
{
echo "<p>Er zijn nog geen gastenboek berichten toegevoegd.</p>";
}
}

?>
Waarom zet je het dan in de value van de verwijder knop?
Je zou het dan eigenlijk zo aan moeten roepen $_POST['verwijderen']


elseif (isset ($_POST["verwijderen"])) 
{
        $idknop = $_POST["verwijderen"];
        $sql = "DELETE FROM reunisten_gastenboek WHERE id = '" . $idknop . "'";
        $result = mysql_query($sql)
            or die("Fout bij uitvoeren query");
             
        $check = mysql_affected_rows();

if ($check != 0)
    { 
        echo "<h1>Bericht verwijderd</h1>";
    
        echo "<p>Het bericht is verwijderd. Ga nu naar <a href=\"" . $_SERVER['PHP_SELF'] . "\" title=\"Berichten overzicht\">het berichten overzicht</a>.";
    }
}

Probeer het zo eens
Dat gebeurt nu ook, maar die variabele idknop moet passen bij het bericht. Per bericht moet er een knop staan om dat bericht te verwijderen.
Ik roep het wel aan met $_POST['verwijderen']

<?php
include '../../db.php';

if (isset ($_POST["verwijderen"]))
{

$sql = "DELETE FROM jbw_gastenboek WHERE id = '" . $idknop . "'";
$result = mysql_query($sql)
or die("Fout bij uitvoeren query");

$check = mysql_affected_rows();

if ($check != 0)
{
echo "<h1>Bericht verwijderd</h1>";

echo "<p>Het bericht is verwijderd. Ga nu naar <a href=\"" . $_SERVER['PHP_SELF'] . "\" title=\"Berichten overzicht\">het berichten overzicht</a>.";
}
}

else
{
echo "<h1>Gastenboek beheer</h1>";

$sql = "SELECT id,naam,email,bericht,DATE_FORMAT(datum, '%d.%m.%Y') as show_datum FROM jbw_gastenboek ORDER BY datum DESC";

$res = mysql_query($sql);
$srv = $_SERVER['PHP_SELF'];

if (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
$row['email'] = htmlentities($row['email']);
$row['naam'] = nl2br(htmlentities($row['naam']));
$row['bericht'] = nl2br(htmlentities($row['bericht']));
$row['id'] = nl2br(htmlentities($row['id']));

echo "<p><fieldset><a href=\"mailto:" . $row['email'] . "\">" . $row['naam'] . "</a> schreef op <i>" . $row['show_datum'] . "</i>: <br />";
echo $row['bericht'] . "</fieldset></p>";

$idknop = $row['id'];

echo '<form action="'.$srv.'" method="post">
<input type="submit" name="verwijderen" value="'.$idknop.'" />
</form>';
}
}
else
{
echo "<p>Er zijn nog geen gastenboek berichten toegevoegd.</p>";
}
}
?>


EDITEDITEDIT
HIJ WERKT!!! DANK!!
Nog een vraagje hierover..als ik nu in de knop wil zetten 'Verwijder bericht $row['id']' Hoe moet ik dit in code zetten?
Of is het ook mogelijk om alleen de tekst 'verwijder bericht' in de knop te zetten en een soort hidden-value erbij te zetten met het id van het bericht...

echo '<form action="'.$srv.'" method="post">
<input type="submit" name="verwijderen" value="Verwijder bericht" />
<input type="hidden" value="'.$idknop.'" />
</form>';
Bedankt! Het is gelukt! Was eerst vergeten de actie ook aan te passen, maar dat is nu gelukt!

Reageren