Het opslaan van session variabelen in een mysql database
Mijn naam is Dirk, en ik ben net begonnen met PHP.
Op dit moment ben ik met een project bezig waarmee ik wil leren om session variables in een table op te slaan. Ik heb al een registratie- en loginformulier weten te maken, die gekoppeld is aan een mysql database. Wanneer de user is ingelogd kan deze vervolgens een survey invullen, welke dan gesubmit wordt en opgeslagen in de database, echter lukt het mij niet om de specifieke user_id van de ingelogde gebruiker bij de survey-data op te slaan.
Ik gebruik
$sql = mysql_query("INSERT INTO surveys (user_id, questionone, questiontwo) VALUES('{$_SESSION['iduser']}', '$firstquestion', '$secondquestion')");
session_start(); en de database zijn correct opgezet, inclusief de header/location, en de session variables kan ik echoen. Ik kan ze echter niet opslaan in de mysql database.
Ik probeer al een week session variables op te slaan in een MYSQL database, maar het lukt niet.
Weet iemand wellicht waaraan het zou kunnen liggen? Weet iemand waar ik dit kan leren(link/boek/kennisbron)? Hartelijk dank!
Met vriendelijke groet,
Dirk,
Allereerst je vraag.
Je moet gewoon session variabelen in de database kunnen zetten. Dat is op zich niets bijzonders. Ik neig daarom te zeggen dat je ergens een dingetje over het hoofd ziet.
Een paar dingen die me wel opvallen:
- Haal die accolades weg en laat variabelen buiten je string:
Code (php)
1
2
3
2
3
<?php
$sql = mysql_query("INSERT INTO surveys (user_id, questionone, questiontwo) VALUES('" . $_SESSION['iduser'] . "', '" . $firstquestion . "', '". $secondquestion . "')");
?>
$sql = mysql_query("INSERT INTO surveys (user_id, questionone, questiontwo) VALUES('" . $_SESSION['iduser'] . "', '" . $firstquestion . "', '". $secondquestion . "')");
?>
- benader nooit rechtstreeks $_SESSION, $_POST en $_GET variabelen maar check eerst of ze wel bestaan:
Code (php)
Wat mij verder nog opvalt:
Je gebruikt nog de oude mysql_ functies. Deze worden in de nieuwste php versie NIET MEER ONDERSTEUND. Stap over op mysqli_ functies of PDO.
Je gebruikt een kolom questionone en questiontwo. zodra je meerdere zelfde kolommen hebt dan klopt je database layout niet. In dit geval mis je een extra tabel met de naam "questions".
Ontzettend bedankt voor uw hulp. Ik ga er gelijk mee aan de slag!
Hopelijk lukt het mij vandaag nog om het project te maken, nogmaals bedankt.
Met vriendelijke groet,
Dirk,
Toevoeging op 23/02/2017 13:03:59:
Beste Frank,
Het is gelukt om sessie variabelen op te slaan in de database.
Dankzij uw hulp.
Wederom hartelijk bedankt.
Ik gebruikte dit stukje code:
$iduser= 0;
if(isset($_SESSION['iduser']))
{
$iduser = $_SESSION['iduser'];
}
Wanneer de sessie niet actief was, was de waarde inderdaad 0.
Zodra de sessie actief werd verscheen de user id. Ik ben ook mysqli gaan gebruiken.
Dank!
Met vriendelijke groet,
Dirk,