Nieuw 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:
// contactid | datum
// 1 | 2008 - 09 - 03 12:08:12
// 1 | 2008 - 09 - 03 12:10: 23
// 1 | 2008 - 09 - 03 14:14: 23
$sql = "SELECT tijdstip, contactID FROM log_login ORDER BY contactID, tijdstip ASC ";
$query = mysql_query($sql) or die (mysql_error());
$slechte = array();
$datum = array();
$ids = array();
while($lijn = mysql_fetch_array($query,MYSQL_NUM)){
$datum[] = $lijn[0];
$ids[] = $lijn[1];
}
// voor eerste keer begindatum meegeven
$huidigedatum = $lijn[0];
// zolang i kleiner is dan aantal gevonden datums
for ($i=0; $i<count($datum[$i]); $i++){
// array ids doorlopen 1,2,3,... en da telkens vergelijken met wat in lijn1 zit
if($ids[$i] == $lijn[1]){
// als huidigedatum + een uur groter is dan de volgende datum op volgende rij
if(strtotime($huidigedatum) + 60*60 > $datum[$i] ){
// dan zijn er geen 60 minuten voorbij en dus moet datum[i] in de slechte array gezet worden
$slechte[] = $datum[$i];
}
// anders zijn er wel 60 min voorbij en dus is het een nieuwe login, dus huidigedatum wordt dan datum[i]
else{
$huidigedatum = $datum[$i];
echo $huidigedatum;
}
}
}
// contactid | datum // 1 | 2008 - 09 - 03 12:08:12 // 1 | 2008 - 09 - 03 12:10: 23 // 1 | 2008 - 09 - 03 14:14: 23 $sql = "SELECT tijdstip, contactID FROM log_login ORDER BY contactID, tijdstip ASC "; $datum[] = $lijn[0]; $ids[] = $lijn[1]; } // voor eerste keer begindatum meegeven $huidigedatum = $lijn[0]; // zolang i kleiner is dan aantal gevonden datums for ($i=0; $i<count($datum[$i]); $i++){ // array ids doorlopen 1,2,3,... en da telkens vergelijken met wat in lijn1 zit if($ids[$i] == $lijn[1]){ // als huidigedatum + een uur groter is dan de volgende datum op volgende rij if(strtotime($huidigedatum) + 60*60 > $datum[$i] ){ // dan zijn er geen 60 minuten voorbij en dus moet datum[i] in de slechte array gezet worden $slechte[] = $datum[$i]; } // anders zijn er wel 60 min voorbij en dus is het een nieuwe login, dus huidigedatum wordt dan datum[i] else{ $huidigedatum = $datum[$i]; } } }
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
|