Overzicht alleen voor ingelogde gebruiker

Status
Niet open voor verdere reacties.

htenveen

Nieuwe gebruiker
Lid geworden
15 mei 2010
Berichten
4
Ik wil overzichten maken voor een gebruiker met gegevens uit de database, waarbij de (ingelogde) gebruiker alleen zijn eigen gegevens kan zien.

Ik heb de volgende SQL-query gemaakt:
[sql]SELECT Gebruikersnaam, Datum, Afzender, Afhalen_bij, Adres, Postcode, Plaats, Afleveren_bij, tav, Straat, Postcode_, Plaats_, Opties, Aantal, Referentie, Memo
FROM `jos_xxxxx`
WHERE Gebruikersnaam=(SELECT username FROM jos_xxxx where id=@user_id) AND Datum LIKE '%-05-2010'[/sql]

Wanneer de klant nu inlogt en naar het betreffende overzicht op de site gaat, krijgt hij de mededeling: "No records found". En dat terwijl er meerdere records in de database staan.

Is de query fout en zo ja, wat moet het wel zijn?

Herman.
 
Laatst bewerkt door een moderator:
Je script roept bij mij 2 vragen op. Wordt de variabele @user_id wel gedefinieerd? Zo nee, dan is deze leeg (null) en zal de query geen rijen terug geven. En is het veld datum ook van het type datum of is het een tekstveld?
 
Wat bedoel je met: "Wordt de variabele @user_id wel gedefinieerd?" Wat moet er dan worden gedefinieerd?

Het veld Datum is een tekstveld.


Herman.
 
Wanneer het veld Datum een tekstveld is moet het goed gaan zoals het nu in je query zit.

Ik zie dat ik nog vraag ben vergeten te stellen. Mijn aanname was dat je mysql gebruikt, klopt dat? Als dat zo is dan is het volgende van belang:

Het gebruik van @ kun je zien als een variabele. Dat werkt zo:[sql]mysql> select @user_id;
+----------+
| @user_id |
+----------+
| NULL |
+----------+
1 row in set (0.00 sec)[/sql]In dit voorbeeld bevat @user_id geen waarde, als je daarmee een selectie op een tabel doet krijg je geen resultaat. Je moet de variabele een waarde geven, daarna kun je hem pas gebruiken in een query:[sql]mysql> SET @user_id = 73;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @user_id;
+----------+
| @user_id |
+----------+
| 73 |
+----------+
1 row in set (0.00 sec)[/sql]Ik hoop dat het een beetje te volgen is...:o
 
Ik begrijp het niet helemaal....

In de database krijgt iedere gebruiker automatisch een unieke "id" bij het registreren.

Moet de query dan misschien als volgt:
HTML:
SELECT username FROM jos_xxxx WHERE id=@user_id(1,999)
????



Herman.
 
Ik begrijp niet zo goed wat je met "@user_id" probeert te doen. De code zou moeten zijn:[sql]SELECT username FROM jos_xxxx WHERE id=23[/sql] Hierbij is 23 het user_id van de klant die ingelogd is. Omdat het unieke id van een klant (user_id) verschillend is gebruik je hier een variabele voor. Dit id is niet 'zomaar' beschikbaar in de database, hij moet opgehaald worden waarna je hem kunt gebruiken in volgende queries. Dit zal bijvoorbeeld bij het inloggen gebeuren. Als de klant is ingelogd zou deze variabele in de pagina (php) beschikbaar moeten zijn. Om deze dan weer te gebruiken krijg je zoiets:
PHP:
SELECT username FROM jos_xxxx WHERE id=$user_id
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan