Voor een spelletje ben in begonnen met een systeem om donaties van de leden in familie bij te houden.
Dit heb ik zo gemaakt, dat als ik de logs kopieer en plak bij mijn site dat hij ze automatisch omzet in de juiste soort.
Elke log heeft een aparte eigenschap waarmee ik ze uit elkaar haal.
Ik heb voor bij nieuwe leden automatisch laten regelen dat ze vrije dagen krijgen als ze worden aangenomen.
Hierin zit de "fout". Het script haalt uit een tabel "dag_donatie" de datum die hier wordt beschreven als zondag. Het verschil met de datum dat hij is aangenomen bepaald dan het aantal vrije dagen.
Deze laat ik ook via for gaan zoals hieronder te zien is. (regel 50 t/m 53)
Ik kan de logs wel één voor één invullen dan gaat alles goed, maar meerdere achter elkaar lukt niet.
Als ik dit stuk script weghaal (regel 50 t/m 53) kan ik meerdere logs invullen, maar als er dus een lid inkomt met vrije dagen niet. Hij stopt dan onder for(){} (regel 53)
for($i=0; $i < $count; $i++){
if(preg_match("!\[X\]!",$a[$count-$i-1]) && preg_match("!\$!",$a[$count-$i-1])){
//NVT
}
elseif(preg_match("!aangenomen!",$a[$count-$i-1])){
$newlog = str_replace(" ", " ", $a[$count-$i-1]);
$new_log = str_replace(" ", " ", $newlog);
$log = explode(" ",$new_log);
$datum1 = explode("-",$log[1]);
$datum = $datum1[2].'-'.$datum1[1].'-'.$datum1[0].' '.$log[0].':00';
$dag = $datum1[0].'-'.$datum1[1].'-'.$datum1[2];
$week = date("W",strtotime($dag));
$dweek = date("w",strtotime($dag));
$get_weeksql = "SELECT *,UNIX_TIMESTAMP(zondag) AS zondag FROM dag_donatie WHERE donatie_weeknr = '".mysql_real_escape_string($week)."'";
$get_usersql = "SELECT * FROM leden WHERE gebruiker = '".mysql_real_escape_string($log[4])."'";
$get_logssql = "SELECT * FROM logs WHERE gebruiker = '".mysql_real_escape_string($log[4])."' AND
datum = '".mysql_real_escape_string($datum)."' AND
soort = '2' AND door = '".mysql_real_escape_string($log[2])."'";
$userquery = mysql_query($get_usersql);
$donatiewquery = mysql_query($get_weeksql);
$logsquery = mysql_query($get_logssql);
$donatieweek = mysql_fetch_assoc($donatiewquery);
$zondag = date("Y-m-d",$donatieweek['zondag']);
if(mysql_num_rows($userquery) > 0){
$userfetch = mysql_fetch_assoc($userquery);
if(mysql_num_rows($logsquery) > 0){
// Log already exist
}
else{
$insert_logsql = "INSERT INTO logs (gebruiker,datum,soort,door)
VALUES('".mysql_real_escape_string($log[4])."','".mysql_real_escape_string($datum)."','2','".mysql_real_escape_string($log[2])."')";
mysql_query($insert_logsql);
}
if($userfetch['rank'] == '0'){
$update_user = "UPDATE leden SET rank = '1' WHERE gebruiker = '".mysql_real_escape_string($log[4])."'";
mysql_query($update_user);
}
else{
// Do nothing
}
}
else{
if(mysql_num_rows($logsquery) > 0){
// Log already exist
}
else{
$insert_logsql = "INSERT INTO logs (gebruiker,datum,soort,door)
VALUES('".mysql_real_escape_string($log[4])."','".mysql_real_escape_string($datum)."','2','".mysql_real_escape_string($log[2])."')";
if($dweek > 0){
for($i=1; $i <= $dweek; $i++){
$insert_freedaysql = "INSERT INTO d_vrije_dagen (gebruiker,datum,door,reden) VALUES('".mysql_real_escape_string($log[4])."','".mysql_real_escape_string(date("Y-m-d",$donatieweek['zondag']+(86400*$i)))."','".mysql_real_escape_string($_SESSION['gebruikersnaam'])."','Nieuw')";
mysql_query($insert_freedaysql);
}
}
else{
// Geen vrije dagen
}
mysql_query($insert_logsql);
}
$insert_user = "INSERT INTO leden (gebruiker,datum,rank) VALUES('".mysql_real_escape_string($log[4])."','".mysql_real_escape_string($datum)."','1')";
mysql_query($insert_user);
}
}