info vergelijken en uit 2e tabel halen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jonathan

jonathan

21/10/2007 15:18:00
Quote Anchor link
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?
 
PHP hulp

PHP hulp

19/04/2024 05:49:46
 
Joren de Wit

Joren de Wit

21/10/2007 15:24:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

Mocht je je eigen situatie aan willen houden, dan kun je in bovenstaande query de id's natuurlijk vervangen door de naam.
 
Frank -

Frank -

21/10/2007 15:25:00
Quote Anchor link
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.
 
Jonathan

jonathan

21/10/2007 15:49:00
Quote Anchor link
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!
 
Jonathan

jonathan

21/10/2007 16:42:00
Quote Anchor link
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...?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
 

wat doen AS precies?
en waarom op het einde AND?
 
PHP erik

PHP erik

21/10/2007 17:03:00
Quote Anchor link
u en s zijn aliasses voor de tabellen users en sessions. Als je de aliasses weg zou laten zou je dit krijgen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;


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
 
Jonathan

jonathan

21/10/2007 20:27:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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( ) );

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.
 
Joren de Wit

Joren de Wit

21/10/2007 20:45:00
Quote Anchor link
Argh, smerige backticks :S

Hoogstwaarschijnlijk zorgen die smerige dingen op regel 3 voor de problemen. Backticks horen niet thuis in een SQL query, weggooien dus...
 
Frank -

Frank -

21/10/2007 20:52:00
Quote Anchor link
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.
 
Jonathan

jonathan

22/10/2007 20:46:00
Quote Anchor link
nee jos users is de naam van de tabel ;)
het werkt nu naar behoren bedankt voor de reacties!
 
Jonathan

jonathan

26/10/2007 13:22:00
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$query = "SELECT jos_users.name, jos_users.username FROM jos_users  WHERE jos_users.id = '".$_SESSION['userid']."'";
 
Gerben Jacobs

Gerben Jacobs

26/10/2007 13:54:00
Quote Anchor link
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
 
Jonathan

jonathan

26/10/2007 13:58:00
Quote Anchor link
okeeey maar heb je een idee hoe ik die sessie dan tog kan ophalen?
 
Gerben Jacobs

Gerben Jacobs

26/10/2007 14:01:00
Quote Anchor link
Doe eerst eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print_r($_SESSION); ?>
om te kijken wat je wel hebt. Ik kan me ook haast niet voorstellen dat Joomla "userid" gebruikt als sessienaam.
 
Jonathan

jonathan

26/10/2007 14:04:00
Quote Anchor link
ik krijg gwn een blanke pagina... dus hier gaat iets fout..
maar wat:S hoe kan ik er dan wel achter komen wat de juiste benaming is van de sessie?
 
Elwin - Fratsloos

Elwin - Fratsloos

26/10/2007 14:08:00
Quote Anchor link
Deze: http://www.phphulp.nl/php/faq/#11
En dan helemaal onderaan.
 
Frank -

Frank -

26/10/2007 14:11:00
Quote Anchor link
Gerben Jacobs schreef op 26.10.2007 13:54:
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
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...
 
Gerben Jacobs

Gerben Jacobs

26/10/2007 14:16:00
Quote Anchor link
@jonathan: Dat betekent dus dat er helemaal geen sessie gezet is.

@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
 
Elwin - Fratsloos

Elwin - Fratsloos

26/10/2007 14:19:00
Quote Anchor link
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 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]
Gewijzigd op 01/01/1970 01:00:00 door Elwin - Fratsloos
 
Jonathan

jonathan

26/10/2007 14:25:00
Quote Anchor link
jah idd zoals elwin zegt zo zit het, iedere tabel begint met jos_
ik krijg nu dus de foutmelding: Undefined variable: _SESSION maar wat is dan wel de goede variable? of hoe kom ik hier achter
 
Elwin - Fratsloos

Elwin - Fratsloos

26/10/2007 14:28:00
Quote Anchor link
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.
 

Pagina: 1 2 volgende »



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.