Na inloggen data opvragen
Ja, ik zou wel de uitlijning van de if-else statements even wat tab's geven, zodat je een mooi genest overzicht hebt.
session_start();
Vanaf dan werken de sessies pas. Verder ben ik benieuwd welke echo je bedoelt.
Gewijzigd op 13/05/2015 08:26:49 door - Ariën -
Alle data komt ook netjes.
Bijvoorbeeld gebruiker 5 heeft id 5 na het inloggen moet hij alleen zijn eigen werkstukken (id 5) op zijn scherm krijgen.
Het is voor mij namelijk nog niet duidelijk of je wel een variabele in de sessie bijhoudt met daarin de gebruikers_id van de ingelogde persoon.
Daarnaast voer je 2 query's uit, waarvan één query uitgevoerd wordt voordat je verbinding maakt met de database. Dit gaat dus niet!
Wat het moet zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
session_start();
// zorg dat je ergens je sessie start...
if (isset($_SESSION['user_login_status']) AND $_SESSION['user_login_status'] == 1) {
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT werkstuk_id, werkstuk_naam, werkstuk_datum FROM werkstukken WHERE gebruikers_id = ".$_SESSION['user_id'];
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Naam</th><th>Datum</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["werkstuk_id"]."</td><td>".$row["werkstuk_naam"]."</td><td>".$row["werkstuk_datum"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
} else {
// boodschap dat iemand eerst in moet loggen...
echo "Log je eerst in.";
}
?>
session_start();
// zorg dat je ergens je sessie start...
if (isset($_SESSION['user_login_status']) AND $_SESSION['user_login_status'] == 1) {
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT werkstuk_id, werkstuk_naam, werkstuk_datum FROM werkstukken WHERE gebruikers_id = ".$_SESSION['user_id'];
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Naam</th><th>Datum</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["werkstuk_id"]."</td><td>".$row["werkstuk_naam"]."</td><td>".$row["werkstuk_datum"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
} else {
// boodschap dat iemand eerst in moet loggen...
echo "Log je eerst in.";
}
?>
Gewijzigd op 13/05/2015 13:37:39 door Arjan -
Inderdaad ik gebruik overal variabele voor sessie.
Quote:
Het is voor mij namelijk nog niet duidelijk of je wel een variabele in de sessie bijhoudt met daarin de gebruikers_id van de ingelogde persoon.
Ik had daar twijfels er over, goed dat je hebt gezegd.
Quote:
Daarnaast voer je 2 query's uit, waarvan één query uitgevoerd wordt voordat je verbinding maakt met de database. Dit gaat dus niet!
Ik krijg echo "0 results"; melding te zien
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
session_start();
// zorg dat je ergens je sessie start...
if (isset($_SESSION['user_login_status']) AND $_SESSION['user_login_status'] == 1) {
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT werkstuk_id, werkstuk_naam, werkstuk_datum FROM werkstukken WHERE gebruikers_id = ".$_SESSION['user_id'];
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Naam</th><th>Datum</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["werkstuk_id"]."</td><td>".$row["werkstuk_naam"]."</td><td>".$row["werkstuk_datum"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
} else {
// boodschap dat iemand eerst in moet loggen...
echo "Log je eerst in.";
}
?>
session_start();
// zorg dat je ergens je sessie start...
if (isset($_SESSION['user_login_status']) AND $_SESSION['user_login_status'] == 1) {
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT werkstuk_id, werkstuk_naam, werkstuk_datum FROM werkstukken WHERE gebruikers_id = ".$_SESSION['user_id'];
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Naam</th><th>Datum</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["werkstuk_id"]."</td><td>".$row["werkstuk_naam"]."</td><td>".$row["werkstuk_datum"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
} else {
// boodschap dat iemand eerst in moet loggen...
echo "Log je eerst in.";
}
?>
Moet dit niet zo zijn?
Blijkbaar houd je geen user id bij in je sessie. Dan kun je ook niet user-specifieke data ophalen op grond van een argument wat je niet hebt...
Misschien moet je een stapje terug doen en de beginselen van PHP, MySQL en sessies doornemen...
Om het werkend te krijgen zal je dus ook een $_SESSION['user_id'] of $_SESSION['gebruikers_id'] aan moeten maken met de Id van de ingelogde gebruiker. Zolang je dit niet doet, kan je dus nooit de gewenste output genereren.
Arjan - op 13/05/2015 14:16:04:
Direct als een gebruiker inlogt krijgt $_SESSION['user_login_status'] de waarde 1, aangezien je hier op controleert en de vergelijking $_SESSION['user_login_status'] == 1 blijkbaar waar (true) is.
Dat heb ik wel want zodra ik alleen $_SESSION['gebruikers_id'] dan krijg ik netjes ID te zien.
Arjan - op 13/05/2015 14:16:04:
Om het werkend te krijgen zal je dus ook een $_SESSION['user_id'] of $_SESSION['gebruikers_id'] aan moeten maken met de Id van de ingelogde gebruiker. Zolang je dit niet doet, kan je dus nooit de gewenste output genereren.
Mij vraag was anders bedoeld ik zal even anders vragen.
Gebruikers_id had je waarschijnlijk uit Werkstukken bedoeld en user_id van Gebruikers als het goed is?
Zowel Gebruikers als Werkstukken hebben het zelfde tabel gebruikers_id kan daar aan conflict zitten?
$sql = "SELECT werkstuk_id, werkstuk_naam, werkstuk_datum FROM werkstukken WHERE gebruikers_id = ".$_SESSION['gebruikers_id'];
Om er zeker van te zijn dat je de juiste $_SESSION variabele gebruikt kan je op dezelfde pagina een dump maken van je variabele middels:
print_r($_SESSION);
Deze toont alle waarden van $_SESSION.
Top! het werkt nu perfect.
Harstikke bedankt en ondertussen heb ik veel van jullie geleerd!
Gewijzigd op 13/05/2015 15:13:14 door johan de wit