probleem met update in sql

Status
Niet open voor verdere reacties.

caletoreon

Gebruiker
Lid geworden
21 aug 2007
Berichten
5
ik heb klein probleempje

ik heb een tabel voor men gastenboek, maar als ik iets wil updaten krijg ik dat de gegevens geupdate zijn maar als ik dan kijk zijn ze nie geupdate

hier zijn men scripts:
PHP:
<?php
}else{
	echo "<table bgcolor='#EEEEEE'><tr><td>Bericht</td></tr></table><p></p>";
	$id=$_GET["id"];
	$sql = "select * FROM gastenboek where id='$id'";
	$resultaat = mysql_query($sql);
	if($resultaat){
		while($rij = mysql_fetch_object($resultaat)){
			$id = htmlspecialchars($rij ->id);
			$naam = htmlspecialchars($rij->naam);
			$email = htmlspecialchars($rij->email);
			$datum = htmlspecialchars($rij->datum);
			$bericht = htmlspecialchars($rij->bericht);
			set_smilies($bericht);
			echo "<table><form name=\"updaten\" method=\"post\" action=\"wijzigen.php\">";
			echo "<tr><td width=150 valign=top><b><input type=\"text\" value=\"$naam\" name=\"naam2\"></b><br>";
			echo "<input type=\"text\" value=\"$email\" name=\"email2\"><br><font size=1>";
			echo "<input type=\"text\" value=\"$datum\" name=\"datum2\" disabled><br>idnr: <input type=\"text\" value=\"$id\" name=\"id2\" disabled>";
			echo"</font></td><td width=250 valign=top><textarea cols=\"34\" rows=\"5\" name=\"bericht2\">$bericht</textarea></td></tr>";
			echo"<tr><td><input type=\"submit\" name=\"submit\" value=\"wijzig\"></td></tr>";
			echo "</form>";
			echo "</tabel>";
		}
	}
}
?>

men tweede:
PHP:
<php
}else{
	if($_POST["submit"]){
		$id=$_POST['id2'];
		$naam=$_POST['naam2'];
		$email=$_POST['email2'];
		$datum=$_POST['datum2'];
		$bericht=$_POST['bericht2'];
		$sql="update gastenboek set naam='$naam', email='$email', datum='$datum', bericht='$bericht' where id='$id'";
		$resultaat=mysql_query($sql);
		if($resultaat){
			echo "de gegevens werden gewijzigd";
		}else{
			echo "fout, kon niet wijzigen";
		}
	}
}
?>
als iemand me kan helpen laat dn zeker iets achter

groetes
 
Laatst bewerkt door een moderator:
Probeer eens de query te echo-en (echo $sql).
Wat ook handig is, is na de functie mysql_query() dit te zetten: or die(mysql_error())

Het zal er dan zoiets uitzien:
PHP:
$query = "SELECT * FROM table";
echo $query . "<br/>";
$result = mysql_query($query) or die(mysql_error());

Als er iets fout zit in je query kom je er op deze manier wel achter :thumb:
 
Ik doe het altijd anders, weet niet of het de oplossing is:
PHP:
$sql="update gastenboek set naam='".$naam."', email='".$email."', datum='"$datum"', bericht='"$bericht"' where id="$id"";
 
Beste Caletoreon,

Je code bevat een aantal fouten.

HTML:
<input type="text" value="$id" name="id2" disabled>

Wanneer je een veld disabled maakt in HTML dan telt dat veld officieel niet meer mee. Het gross van de browsers zal dan ook zijn waarde niet meezenden. De volgende code zou beter zijn:
HTML:
<input type="hidden" value="$id" name="id2">
<span>$id</span>
Je zou de span nog kunnen CSSen zodat hij eruit ziet als een input button.

De fout die momenteel waarschijnlijk de grootste invloed is, is een spatie in je PHP:

PHP:
$id = htmlspecialchars($rij ->id);
Die spatie tussen $rij & ->id zou een foutmelding moeten geven en zal op zijn minst een leeg resultaat veroorzaken.

Ik zou persoonlijk zeggen dat als het een leeg resultaat was geweest, het je opgevallen was omdat het $id gewoon op je scherm komt te staan. Dus misschien is die spatie er bij het over kopieëren naar Helpmij ingeslopen.

Werkt bovenstaande dus niet dan zou ik zeker de tip van aaajeetee opvolgen.

Wout
 
beste mensen, bedankt om te helpen, maar ik heb het gedaan zoals Svu het deed en nu werkt het (na hier een daar nog een spatie enzo weg te halen.) men inputs die disabled waren heb ik niet moeten veranderen, het werkt ook.

maar toch bedankt
 
Beste Caletoreon,

De code die SvU gaf wat nagenoeg hetzelfde als de jouwe, alleen gebruikte hij concat methode. Het zat hem in de spaties :).

Wat betreft de disabled: helaas zijn er browsers die net ietsje te ruimdenkend zijn en daarbij afwijken van "de standaard". IE is daar één van. Dit geldt echter niet voor alle browsers, dus zo nu en dan zal je functie niet werken. Meer info in §17.13.2 van W3C: http://www.w3.org/TR/html401/interact/forms.html#successful-controls.

Het is enkel een suggestie, dus kijk maar even of je er wat mee wilt doen.

Wout
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan