Ik vind niet direct een oplossing voor mijn probleem ondanks verschillende topics die heel nauw aansluiten met hetgeen ik wil doen...
Ik heb dus een login systeempje en als een user inlogd slaat deze de huidige tijd op.
Ik kan dan met een sql query alle namen uit de database halen die bijvoorbeeld de laatste 2 minuten online waren.
bijvoorbeeld
ik log in om precies 18:00 ->> ik sla deze tijd op in kolom tijd
sql query -->> selecteer de gebruiker vanuit database waar tijd > ( huidige tijd - 5 minuten )
$sql = "SELECT naam FROM leden WHERE tijd > DATE_SUB(NOW(),INTERVAL 2 MINUTE)";
Stel ik log uit.....de huidige tijd wordt hier niet gewijzigd....
Ik sluit alles af en morgen start ik de browser weer op om 18:00...en wat zie ik: ik word uit database gehaald omdat de tijd nog altijd op 18:00 staat.
Dus dat klopt niet ... ik blijk ingelogd als is dat niet zo....
Ik moet waarschijnlijk een kleine aanpassing doen aan die string en ene die goed werkt zonder bugs...
wat ik mij afvraag is of je het veld in de database hebt staan op het type datetime, want anders zou hij je de volgende dag niet ook moeten selecteren.
kun je even de stukjes (exacte) code geven waarmee je de tijd in de database zet?
SELECT
naam
FROM
leden
WHERE
MINUTE(TIMEDIFF(NOW(), tijd)) <= 2
Dat de tijd nog niet gewijzigd wordt klopt wel. Dat zul je pas merken nadat je na het inloggen refreshed of een andere pagina bezoekt. Dan pas zullen de nieuwe gegevens uit de database zichtbaar zijn.
zoals frank al zegt, met time kan mysql niet zien op welke dag die gebruiker het laatst is geweest, dus is het logisch dat hij je de volgende dag keurig opnieuw weergeeft.
wat betreft de gore backtics, dit zijn die ` om de namen van de tabel en kolommen. Dit is helemaal niet nodig en phpmyadmin doet het, maar helaas gaan hierdoor veel mensen het overnemen.
bij je WHERE clause controleer jij of de kolom naam voldoet aan de waarde die in de variabele $user zit.
Regel hierbij is dat de waarde waarop je controleert altijd tussen quotes moet staan, uitzondering hierop is weer dat dit niet hoeft (wel mag) bij cijfers, maar aangezien $user waarschijnlijk geen numerieke waarde is, moet deze tussen quotes.
Daarnaast wil ik je nog een andere tip geven, het is netter om je variabelen buiten de quotes te halen wat inhoudt dat je dan zoiets krijgt:
<?php
"WHERE naam= '".$user."'";
?>
Je ziet dat de variabele dan een andere kleur krijgt dan de query, en zo zie je makkelijk waar de variabelen staan in je script, overigens zou je dit principe ook toe moeten passen bij echo's e.d.
Ik heb alle `` eruitgehaald en alles werkt nog...bedankt voor de tip...;
Waarschijnlijk zullen er nog wel fouten insluipen...ik ben ook geen programmeur van beroep....maar hetgeen ik nu doe is wel bedoeld voor een toekomstige website dus alles moet zo goed mogelijk in orde zijn
Eigen fout van mij is ook dat ik altijd mijn error reporting hoog zet om de vervelende foutmeldingen niet te zien te krijgen al is dat ook weer een groot nadeel als je je script opbouwt..zo zie je de bugs niet..
Gelukkig had ik nog niet zoveel paginas om aan te passen....