login  Naam:   Wachtwoord: 
Registreer je!
 Forum

fout in query (dateadd) (Opgelost)

Offline Geoffreydv - 04/04/2008 14:37
Avatar van GeoffreydvNieuw lid Wat is er fout aan deze query? Ik wil deze gebruiken om later te kijken of een gebruiker langer inactief is dan deze tijd voor een online/offline script.

  1. $q = "SELECT dateadd(S,-30,NOW()) AS outdated FROM users";


fout: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

6 antwoorden

Gesponsorde links
Offline marten - 04/04/2008 14:42 (laatste wijziging 04/04/2008 14:43)
Avatar van marten Beheerder Het is MySQL.com: ADDDATE of MySQL.com: date_add
Offline Geoffreydv - 04/04/2008 14:48
Avatar van Geoffreydv Nieuw lid Nog altijd niet, waarschijnlijk een of andere domme fout. 

  1. "SELECT ADDDATE(NOW(),SECOND -300) AS outdated FROM users";
Offline Geoffreydv - 04/04/2008 14:53 (laatste wijziging 04/04/2008 14:57)
Avatar van Geoffreydv Nieuw lid Nog steeds fout, ook met dateadd  

heeft iemand anders een voorbeeldje van een online/offline user script? Mijn vorige query was:

  1. (TIME_TO_SEC(NOW()) - TIME_TO_SEC(lastseen)) AS difference


Dit werkte maar vanaf het verschil groter was dan een getal in de duizenden, werd het ineens negatief.
Offline Geoffreydv - 04/04/2008 15:00 (laatste wijziging 04/04/2008 15:02)
Avatar van Geoffreydv Nieuw lid
  1. $q = mysql_query("SELECT dateadd(S,-300,NOW()) AS outdated FROM users");
  2.  
  3. while($user=mysql_fetch_array($q))
  4. {
  5. echo "$user[outdated]" . "<br>";
  6. }


later zal het script dan niet het verschil echoën maar kijken of het veld lastseen (laatst actief) kleiner is dan "outdated" en aan de hand daarvan online of offline tonen.

Ik zie ook dat dit duidelijk NIET de meest effectieve manier is, omdat hij elke keer de query doet om uiteindelijk maar 1 waarde bij alles uit te komen maar ik weet echt niets beters.
Offline Thomas - 04/04/2008 17:24 (laatste wijziging 04/04/2008 17:25)
Avatar van Thomas Moderator Gebruik DATE_SUB ipv DATE_ADD? 

En je moet een datum in het verleden vergelijken met gegevens uit je user-tabel, dus het zal zoiets worden als:

  1. SELECT *
  2. FROM users
  3. WHERE <user_date_column> <= DATE_SUB(NOW(), INTERVAL 7 DAY)
Offline Geoffreydv - 04/04/2008 23:23
Avatar van Geoffreydv Nieuw lid Bedankt Werkt perfect
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s