Door
- Pepijn -
op 21-04-2014 19:32
gewijzigd op 21-04-2014 19:34
4.413 views
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>';
}
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,
Nu vraag ik me af, als dit gepost is, dan zie ik de oude dingen nog qua database gegevens.
Nu wil ik dat je gelijk de gegevens die je POST ziet.
Voor de mensen die het niet begrijpen:
Als je "Kaas" veranderd naar "Worst" Dan zie je als je op Aanpassen klikt nog steeds "Kaas", pas als je de pagina opnieuw laadt, zie je "Worst.
ergens een else invoegen?
Dat komt dan vaak omdat mensen in het script de verkeerde volgorde hanteren:
als je eerst een SELECT ... FROM tabel doet.
En pas later een UPDATE tabel, dan zal de nog niet aangepaste data getoond worden. Ook als je het tonen nog uitstelt tot na het aanpassen: PHP wordt niet ingelicht dat de datatbase inhoud veranderd is.
Nog logischer is het om na een POST actie de nodige aanpassingen uit te voeren en daarna middels header('Location: ....); de browser via GET de pagina nog een keer te laten opvragen.
Dat voorkomt ook dat je 2x een post doet als je opo F5 drukt.