login  Naam:   Wachtwoord: 
Registreer je!
 Forum

sorteer probleem (arrays)

Offline eques - 10/03/2008 12:05 (laatste wijziging 10/03/2008 12:06)
Avatar van equesNieuw lid ok ik moet een bestaand database bestand opkuisen.
Het is zo dat in het vroegere systeem elke paginabezoek als login werd aanzien waardoor je in DB kreeg:

// contactid | datum
// 1 | 2008 - 09 - 03 12:08:12
// 1 | 2008 - 09 - 03 12:10: 23
// 1 | 2008 - 09 - 03 14:14: 23

Nu wil ik alleen die bijhouden die een uur van elkaar verschillen. Al de rest wil ik in een array steken met de naam "slechte".

ik maakte het volgende script:

  1. // contactid | datum
  2. // 1 | 2008 - 09 - 03 12:08:12
  3. // 1 | 2008 - 09 - 03 12:10: 23
  4. // 1 | 2008 - 09 - 03 14:14: 23
  5.  
  6.  
  7. $sql = "SELECT tijdstip, contactID FROM log_login ORDER BY contactID, tijdstip ASC ";
  8. $query = mysql_query($sql) or die (mysql_error());
  9. $slechte = array();
  10. $datum = array();
  11. $ids = array();
  12.  
  13. while($lijn = mysql_fetch_array($query,MYSQL_NUM)){
  14. $datum[] = $lijn[0];
  15. $ids[] = $lijn[1];
  16. }
  17. // voor eerste keer begindatum meegeven
  18. $huidigedatum = $lijn[0];
  19. // zolang i kleiner is dan aantal gevonden datums
  20. for ($i=0; $i<count($datum[$i]); $i++){
  21. // array ids doorlopen 1,2,3,... en da telkens vergelijken met wat in lijn1 zit
  22. if($ids[$i] == $lijn[1]){
  23. // als huidigedatum + een uur groter is dan de volgende datum op volgende rij
  24. if(strtotime($huidigedatum) + 60*60 > $datum[$i] ){
  25. // dan zijn er geen 60 minuten voorbij en dus moet datum[i] in de slechte array gezet worden
  26. $slechte[] = $datum[$i];
  27. }
  28. // anders zijn er wel 60 min voorbij en dus is het een nieuwe login, dus huidigedatum wordt dan datum[i]
  29. else{
  30. $huidigedatum = $datum[$i];
  31. echo $huidigedatum;
  32. }
  33. }
  34. }



Ik DENK dat de logica ongeveer klopt, maar toch scheelt er iets , ik weet alleen niet wat. Iemand die me kan helpen?

PS Ik weet dat het eigenlijke probleem bij input ligt maar daar kan ik niks aan doen ik MOET het zo oplossen

1 antwoord

Gesponsorde links
Offline marten - 10/03/2008 12:10
Avatar van marten Beheerder Bekijk de tutorials eens over datum en tijdfuncties in MySQL. Je kan dan met de functie MySQL.com: datediff werken.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.33s