Het opslaan van session variabelen in een mysql database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dirk Eecen

Dirk Eecen

22/02/2017 22:55:52
Quote Anchor link
Hallo iedereen,

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,
 
PHP hulp

PHP hulp

19/04/2024 15:39:09
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/02/2017 23:45:13
Quote Anchor link
Dirk, welkom.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// initialisatie
$iduser= 0;
if(isset($_SESSION['iduser']))
{

    $iduser = $_SESSION['iduser'];
}


// gebruik nu verder $iduser die 0 is of hoger
?>


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".
 
Dirk Eecen

Dirk Eecen

23/02/2017 12:19:33
Quote Anchor link
Frank,

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,
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.