ik heb een tabel: session, hier wordt bij inloggen oa de username in opgeslagen.
en ik heb een tabel user, hier staat alle informatie in over de gebruiker oa de username.
nu heb ik dat in mijn formulier de username van de ingelogde gebruiker wordt weergegeven.
maar ik wil meer informatie in het formulier weergeven, bijv straat postcode enz.
mijn vraag: kan ik de username van de session tabel vergelijken met de username van de user tabel en op deze manier dus meer gegevens van de ingelogde gebruiker kunnen oproepen?
kan iemand mij hiermee verder helpen?
Ja dat kan, maar dat is niet de gebruikelijke manier. De username wordt nu namelijk dubbel opgeslagen en dat probeer je altijd te voorkomen.
In de sessions tabel hoor je eigenlijk alleen het id van de user uit de users tabel op te slaan en vervolgens kun je aan de hand van het id uit de sessions tabel alle gegevens over een bepaalde user uitlezen.
Bijvoorbeeld:
SELECT
u.naam,
u.straat,
u.postcode
FROM
users AS u,
sessions AS s
WHERE
u.id = s.user_id
AND
s.user_id = 1;
Mocht je je eigen situatie aan willen houden, dan kun je in bovenstaande query de id's natuurlijk vervangen door de naam.
Heb je een eigen session-handler geschreven die de data in een tabel opslaat? Dan heb je binnen PHP nog steeds gewoon de beschikking over $_SESSION met daarin bv. de username van iemand die je daar net in hebt gezet:
$_SESSION['usernam'] = $_POST['username'];
Wanneer je vervolgens in jouw database deze data wilt gaan vergelijken met data in een tabel, geef je gewoon de session als vergelijkingsmateriaal op:
SELECT * FROM users WHERE username = '$_SESSION['username']
Het is niet aan te raden om de data in de tabel met sessies te gaan matchen met data in de overige tabellen, daar is met geen mogelijkheid een verband tussen te leggen, de foreignkey's. Er kan gewoon teveel verschillende data in een sessie staan en dat is niet genormaliseerd.
okeey dit maakt een hoop duidelijk!
ik heb in de sessions en user tabel ook een id staan, als ik het goed begrijp kan ik deze dus het beste gebruiken.
bedankt voor je voorbeeldje, ik ga eens even verder proberen!
Ik heb even wat geprobeerd maar ik kom er niet helemaal uit.
ten eerste krijg ik de foutmelding dat de tabel niet bestaat.
ik heb de u vervangen door de tabel naam, maar dit bood geen uitkomst
miss komt het omdat ik niet helemaal begrijp wat er precies gebeurt...?
SELECT // gewenste kolommen uitlezen, maar waarom de u in dit voorbeeld ervoor?
u.naam,
u.straat,
u.postcode
FROM //
users AS u,
sessions AS s
WHERE
u.id = s.user_id
AND
s.user_id = 1;
okeey dit maakt nog weer een hoop duidelijk!
maar ik blijf de foutmelding krijgen dat de tabellen niet bestaan
ik heb de namen van de tabellen en kolommen gecheck en gecheckt n dat moet ok zijn.
dit is wat ik heb:
include "../connect.php"; //verbinding maken
$query = "SELECT jos_users.name, jos_users.username
FROM `jos_users, jos_session`
WHERE jos_users.id = jos_session.userid ";
$sql = mysql_query($query) or die ( mysql_error( ) );
ik blijf dus de foutmelding krijgen dat de tabellen niet bestaan
terwijl de namen volgens mij kloppen en er zit volgens mij ook geen typ fout in.
jos_users ? Is dan ook een klaas_users? Zo ja, dan ben je druk bezig om bugs en problemen in je systeem te bouwen. Normaliseren is de basis van een goed systeem.
Ik dacht dat ik het werkend had maar hij pakt gewoon het eerste reccord uit de database! dus als meerdere gebruikers onine zijn pakt hij voor iedereen het eerste record!
u probeer ik het d.mv session ik krijg geen foutmeldingen maar er verschijnt ook niks! ziet iemand miss of ik iets fout doe?
het lijkt me zo tog wel goed geformuleerd?
ik maak trouwens gebruik van een joomla site waar ik de sessies van wil uitlezen maar dat maakt tog niet veel uit lijkt mij
$query = "SELECT jos_users.name, jos_users.username FROM jos_users WHERE jos_users.id = '".$_SESSION['userid']."'";