info vergelijken en uit 2e tabel halen
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?
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
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;
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.
$_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.
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!
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...?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
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;
u.naam,
u.straat,
u.postcode
FROM //
users AS u,
sessions AS s
WHERE
u.id = s.user_id
AND
s.user_id = 1;
wat doen AS precies?
en waarom op het einde AND?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT
users.naam,
users.straat,
users.postcode
FROM
users,
sessions
WHERE
users.id = sessions.user_id
AND
sessions.user_id = 1;
users.naam,
users.straat,
users.postcode
FROM
users,
sessions
WHERE
users.id = sessions.user_id
AND
sessions.user_id = 1;
Syntax is altijd "tabelnaam.kolomnaam". Snap je het nu? Kloppen je tabelnamen? Of moet het user zijn in plaats van users?
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
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:
Code (php)
1
2
3
4
5
2
3
4
5
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( ) );
$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.
Hoogstwaarschijnlijk zorgen die smerige dingen op regel 3 voor de problemen. Backticks horen niet thuis in een SQL query, weggooien dus...
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.
het werkt nu naar behoren bedankt voor de reacties!
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
@ pgFrank: Databases zoals bijv. jos_users zijn meestal database gecreëert door admintools zoals Cpanel
okeeey maar heb je een idee hoe ik die sessie dan tog kan ophalen?
om te kijken wat je wel hebt. Ik kan me ook haast niet voorstellen dat Joomla "userid" gebruikt als sessienaam.
Doe eerst eens maar wat:S hoe kan ik er dan wel achter komen wat de juiste benaming is van de sessie?
http://www.phphulp.nl/php/faq/#11
En dan helemaal onderaan.
Deze: En dan helemaal onderaan.
Gerben Jacobs schreef op 26.10.2007 13:54:
Database en tabel zijn 2 verschillende zaken. Een tabel jos_naam kan eigenlijk niet goed zijn, de naam slaat nergens op wanneer er data van Klaas in komt te staan. En wanneer je voor Klaas een andere tabel hebt, ben je nog verder van huis...Misschien bestaat de sessie niet, misschien gebruik je geen lus om je data uit te lezen. Kan van alles zijn.
@ pgFrank: Databases zoals bijv. jos_users zijn meestal database gecreëert door admintools zoals Cpanel
@ pgFrank: Databases zoals bijv. jos_users zijn meestal database gecreëert door admintools zoals Cpanel
@pgFrank: Uiteraard! Maar je vat het verkeerd op. Het is gewoon een naam. Het wordt niet gebruikt om de data van of Jos of Klaas op te slaan.
Edit: Zie trouwens net dat jos de prefix van Joomla is
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs
SMF en PHPBB die bij de installatie vragen om een Database prefix. Dit doen ze dan zodat meerdere tabellen, met in principe dezelfde naam, naast elkaar kunnen draaien, zodat twee keer hetzelfde systeem geïnstalleerd kan worden op een DB.
Je kan je dan natuurlijk afvragen waarom je twee keer het zelfde pakket zou willen installeren, maar het hoeft natuurlijk niet hetzelfde pakket te zijn. Bijvoorbeeld een OS forum en een OS webwinkel zullen beide de tabel user o.i.d. hebben. Mbv die prefix kan je dan het ene systeem installeren als phpbb_user en de andere als oscommerce_user.
[Edit: Linkfix]
Ik denk overigens dat tabelnamen als jos_dit en jos_dat wijzen op een zgn. prefix waar veel OS-systemen mee weken. Denk dan bijvoorbeeld aan een Je kan je dan natuurlijk afvragen waarom je twee keer het zelfde pakket zou willen installeren, maar het hoeft natuurlijk niet hetzelfde pakket te zijn. Bijvoorbeeld een OS forum en een OS webwinkel zullen beide de tabel user o.i.d. hebben. Mbv die prefix kan je dan het ene systeem installeren als phpbb_user en de andere als oscommerce_user.
[Edit: Linkfix]
Gewijzigd op 01/01/1970 01:00:00 door Elwin - Fratsloos
ik krijg nu dus de foutmelding: Undefined variable: _SESSION maar wat is dan wel de goede variable? of hoe kom ik hier achter
Jonathan: is dat de volledige foutmelding? Meestal staat er ook nog een regelnummer bij. Geef eens die regel, plus 5 regels ervoor en 5 regels er na en zet dit alles tussen de tags.