Hey mensjes, ik heb een script om iets om te slaan in een database, echter werkt deze niet.

<?php

if (!isset($_SESSION['id'])) {

echo '<div id="error">You must be logged on to see this page!</div>';
} else {

$uQuery = mysql_query("SELECT * FROM users WHERE id = '" . $_SESSION['id'] . "'") or die(mysql_error());
$uFetch = mysql_fetch_assoc($uQuery);

if (isset($_POST['submit']))
$test = htmlspecialchars($_POST['test']);
mysql_query("UPDATE users SET test = '" . mysql_real_escape_string($test) . "'") or die(mysql_error());
echo '<div id="succes">Your information has been successfully updated! <a href="index.php">Click here</a></div>';
}

?>

<form method="post" action="profielaanpassen.php" enctype="multipart/form-data">
<textarea id="test" name="test" style="width: 350px; height: 190px;"><?php
echo str_replace('<br />', '', $uFetch['test']);
?></textarea>
<input type="submit" name="submit" value="Opslaan" />
</form>


Het probleem is: Ik krijg gelijk al:
Your information has been successfully updated! Click here, en ik krijg een notice:
Notice: Undefined variable: test in /home/pepijar28/domains/pepijnvanderstap.eu/public_html/pages/pages.php on line 15

Wat ik zelf al begreep was, ik roep die echo te vroeg uit,
en " test " is niet gedefineerd, maar ik krijg het niet voorelkaar om dit goed te krijgen.
Mvg,
Ik zie 2x een if maar 1x ziet er naar mijn idee goed uit.
Kijk maar eens goed.
Bedoel je dat die 2e bovenaan bij } else { moet?, even proberen
Ah, er moet nog een {, even kijken

[size=xsmall]Toevoeging op 21/04/2014 19:40:21:[/size]

Het script zelf werkt, echter plaatst het niks in mijn database.

[size=xsmall]Toevoeging op 21/04/2014 19:40:36:[/size]

Het werkt!, vergeten af te sluiten :P
je kon ook dit doen voor als je denkt dat je te veel "{" krijgt.

<?php
 if (isset($_POST['submit'])):
        $test = htmlspecialchars($_POST['test']);
    mysql_query("UPDATE users SET test = '" . mysql_real_escape_string($test) . "'") or die(mysql_error());
    echo '<div id="succes">Your information has been successfully updated! <a href="index.php">Click here</a></div>';
endif;
?>
Ach, dit werkt prima
Dat kan beter.....


<?php
$debug = true; //zet op false als je de site inline zet voor publiek. Zij hoeven geen lastige foutmeldingen te zien als er iets misgaat. 
if ($_SERVER['REQUEST_METHOD']=="POST") {
	$result = mysql_query("UPDATE users SET test = '".mysql_real_escape_string($test)."'");
	if($result) {
   		echo '<div id="succes">Your information has been successfully updated! <a href="index.php">Click here</a></div>';
	} else {
		echo '<div id="error">Er is een fout opgetreden.</div>';
		if(isset($debug)) { echo '<div id="error">'.mysql_error().'</div>'; }
	}
}
?>

Ik raad om deze constructie te blijven gebruiken, en htmlspecialchars alleen te gebruiken bij het tonen van de output.
Er zit goede foutafhandeling in, en het zorgt voor logische afhandeling van formulieren.
naar mijn mening hoort htmlspecialchars() gebruikt te worden in combinatie met "echo" en niet voordat je data in een database zet.
Naar mijn mening ook. En als je dat niet doet, is mysql_real_escape_string niet meer nodig, aangezien htmlspecialchars het al voor je oplost.
Jep, die zag ik over het hoofd.

Reageren