Ik heb een tijdje terug ergens een gastenboek gevonden en hem aangepast naar mijn wensen qua layout enz... Het enige probleem wat ik nu heb is dat mijn Wijzigig- of Verwijder command niet doorkomt in de mySQL database. Ik krijg wel te zien dat het bericht gewijzigd of verwijdert zou moeten zijn maar als ik terug ga naar het gastenboek staat het bericht er nog steeds zoals het daarvoor er ook stond. Kan iemand mijn script nakijken en me vertellen wat er aangepast moet worden ik kom er gewoon niet meer uit.

Wijzig.php Hier kan ik dus iets wijzigen als ik ingelogd ben. Hier heb ik ook het probleem dat die wijziging niet doorkomt terwijl ik wel de bevestiging krijg:

<?php
if($_POST['submit']){
$id = $_GET["id"];
if ($_POST['naam'] == ""){
print("U hebt geen naam ingevuld, wat vereist is. Klik <a href=\"javascript:history.go(-1)\">hier</a> om terug te keren en uw naam in te vullen.<br>");
}
else if ($_POST['bericht'] == ""){
print("U heeft geen bericht ingevuld, wat vereist is. Klik <a href=\"javascript:history.go(-1)\">hier</a> om terug te keren en uw bericht in te vullen.<br>");
}
else if ($_POST['url']!="" && substr($_POST['url'], 0, 7)!="http://"){
print("Er zit een fout in het adres van uw homepage. Let er op dat het adres begint met \"http://\". Klik <a href=\"javascript:history.go(-1)\">hier</a> om terug te keren en dit te verbeteren.");
}

else{
require("connectie.php");
$query="UPDATE gastenboek SET naam='".strip_tags($_POST['naam'])."', bericht='".strip_tags($_POST['bericht'])."', email='".strip_tags($_POST['email'])."', url='".strip_tags($_POST['url'])."' WHERE id='".$id."'";
$wijzig=mysql_query($query) or die(mysql_error());
print("Bericht gewijzigd<br>Klik <a href=\"gastenboek.php\">hier</a> om terug te keren naar het gastenboek.");
}
}
else{
require ("connectie.php");
$select = mysql_query("SELECT * FROM gastenboek WHERE id='".$id."'");
$data = mysql_fetch_array($select);
?>
<form name="data" method="POST" action="wijzig.php?id=<?php $_GET ['id'];?>">
<input type="hidden" name="submit" value="1">

verwijder.php Hier dus hetzelfde als met wijzig.php alleen dan met verwijderen:

<?php
if($_POST['submit']){
$id = $_GET['id'];
require ("connectie.php");
$query = "DELETE FROM gastenboek WHERE id = '$id' ";
$verwijder = mysql_query($query) or die(mysql_error());
print("Het bericht is verwijdert.<br>Klik <a href=\"gastenboek.php\">hier</a> om terug te keren naar het gastenboek.");
}

else{
?>
<center>Ben je zeker dat je dit bericht wilt verwijderen?<br><br></center>
<form name="delete" action="verwijder.php?id=<?php $_GET ['id'];?>" method="POST">
<input type="hidden" name="submit" value="1">
iedereen is dom kenneth
kenneth kan je mij dat vertellen hoe ik die van mij zou moeten aanpassen richting die van jouw zodat het bij mij ook werkt?
@ Wesley:
Je gebruikt in je scripten wel de var $id, maar heeft die wel een waarde? Anders wordt de query wel uitgevoerd, maar wordt er niks veranderd of verwijderd. Dus geen foutmelding en geen resultaat..
Daan schreef op 08.03.2007 13:27
@ Wesley:
Je gebruikt in je scripten wel de var $id, maar heeft die wel een waarde? Anders wordt de query wel uitgevoerd, maar wordt er niks veranderd of verwijderd. Dus geen foutmelding en geen resultaat..


Ik had dat al gevonden na het posten van dit script ik heb hem nu geupdated maar of het goed is weet ik zelf niet. Ik blijf hetzelfde effect houden
iemand nog een oplossing of niet??
Na een UPDATE of DELETE query is het altijd van belang om met [php]mysql_affected_rows[/php]() te controleren of er ook daadwerkelijk records zijn veranderd of verwijderd.

Controleer ook altijd of $_GET['id'] wel numeriek is (bijv met [php]ctype_digit[/php]()). En bij het updaten gebruik je nu alleen strip_tags() voor de input, maar je moet minimaal ook [php]mysql_real_escape_string[/php]() gebruiken om sql injectie tegen te gaan.

Reageren