ik had een gastenboek gemaakt waar bij de in gelogde gast ook zijn bericht kan wijzigen alleen nu gaat dta niet goed hij keer naar het toevoegen wel terug naar de hoofd pagina maar update niks maar dan ook niks



<?
include("config.php");

if (isset($_POST['submit'])) {
if ($_POST['submit'] == "Toevoegen") {
$titel = $_POST['tt'];
$bericht = $_POST['t'];
$datumupdate = date("Y-m-d");
$tijdupdate = date("H:i:s");
$bericht_id = $_POST['bericht_id'];
////////////////////////////////////////////////////////
$titel = addslashes( $titel);
$titel = strip_tags($titel);
$titel = htmlentities( $titel);
$titel = htmlspecialchars( $titel);
////////////////////////////////////////////////////////
$bericht = addslashes($bericht);
$bericht = strip_tags($bericht);
$bericht = htmlentities($bericht);
$bericht = htmlspecialchars($bericht);
/////////////////////////////////////////////////////////
define("MINIMUMAANTAL_TEKENS", 4);
define("MAXIMUMAANTAL_WOORDEN", 500);
$aantal_tekens = strlen($bericht);
$aantal_woorden = str_word_count($bericht);
if (($aantal_tekens >= MINIMUMAANTAL_TEKENS) and ($aantal_woorden <= MAXIMUMAANTAL_WOORDEN)) {
$sql = "UPDATE prikbord SET titel='$titel', tekst='$bericht' , datumupdate='$datumupdate', tijdupdate='$tijdupdate' WHERE bericht_id ='".$_GET['bericht_id']."'";


$verbinding = mysql_connect($db_host, $db_db, $db_pass) or die(mysql_error());
mysql_select_db("gbdb") or die(mysql_error());
$toegevoegd = mysql_query($sql) or die(mysql_error());
mysql_close($verbinding);

// Browser omleiden naar het gastenboek
// als de bijdrage is toegevoegd:
if ($toegevoegd) {
header("Location: http://"; . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/gastenboek.php");
exit;
}
} else {
// Foutmelding weergeven:
if (!($aantal_tekens >= MINIMUMAANTAL_TEKENS)) {
$melding .= "De tekst is te kort.";
}
if (!($aantal_woorden <= MAXIMUMAANTAL_WOORDEN)) {
$melding .= "Uw tekst telt " . $aantal_woorden . "&nbsp;woorden. ";
$melding .= "Kort de tekst in tot maximaal " . MAXIMUMAANTAL_WOORDEN . "&nbsp;woorden. ";
}
}

}
}

// Een eventuele foutmelding opmaken als een alinea:
if (strlen(trim($melding)) > 1) {
$melding = '<p class="w">' . $melding . "</p>\n";


}else{
$sqll = "SELECT * FROM gastenboek WHERE bericht_id ='".$_GET['bericht_id']."'";

$verbinding = mysql_connect($db_host, $db_db, $db_pass) or die(mysql_error());
mysql_select_db("gbdb") or die(mysql_error());
$resultaat = mysql_query($sqll) or die(mysql_error());
while ($rij = mysql_fetch_assoc($resultaat)) {
$titel = $rij["titel"];
$bericht = $rij["tekst"];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml"; lang="nl">
<head>
<title></title>

</head>
<body>


<form action="gb_edit.php" method="post" name="form" onsubmit="return Len();">
<div align="center">




<textarea accesskey="t" rows="20" cols="82" id="t" name="t" onselect="saveC(this);" onclick="saveC(this);" onkeyup="saveC(this);"><? echo $bericht; ?></textarea>

<input accesskey="n" id="t" name="tt" type="text" size="80" maxlength="50" value="<? echo $titel; ?>">


<input class="knop" name="submit" type="submit" value="Wissen">
<input class="knop" name="submit" type="submit" value="Toevoegen">



</form>


<?
}
}
?>

</body>
</html>

-----------------------------------------------------------------
<?
/* MySQL-query voor het maken van de tabel 'gastenboek':

CREATE TABLE `prikbord` (
`bericht_id` INT NOT NULL AUTO_INCREMENT,
`datum` DATE NOT NULL,
`tijd` TIME NOT NULL,
`titel` VARCHAR(255),
`tekst` TEXT NOT NULL,
`naam` VARCHAR(255),
`datumupdate` DATE,
`tijdupdate` TIME,
PRIMARY KEY (`bericht_id`),
INDEX (`datum`, `tijd`)
);

*/ ?>

ik werk nog niet zo lang met php dus weet der weinig van ziet iemand wat ik fout doe?
Controleer met mysql_affected_rows() (zie handleiding) of er wel iets is bijgewerkt.

Tevens nog iets aan beveiliging doen, een GET mag nooit onbeveiligd in een query staan. Dat is vragen om SQL-injection.

DATE en TIME vormen samen een DATETIME, wel zo handig! Scheelt weer een veld in de tabel.
ik zal eens gaan kijken naar de mysql_affected_rows()


de beveliging komt nog wel sinds dat ik een noob ben doe ik dat wel op het laaste :)


date en time kan samen dat weet ik maar ik vind het zo makelijker(voor nu) ;)

thanks

Reageren