Forum » Server-Side scripting » HELP | Verwijder sql op datum..
Lolz0r.
Berichten: 245
avatar
Offline Stuur privebericht
Ik zoek een scriptje, dat een familie uit je criminals database verwijderd die langer dan een week oud is en minder dan 3 leden heeft.

Zeg maar voorbeeldje:

Code | Selecteer Alles
minimaliseren
1
mysql_query("DELETE FROM `[clans]`'");


Het probleempje, het aantal leden moet geteld worden vanuit de table [users]

Stukje SQL
Code | Selecteer Alles
minimaliseren
1
2
$dbre            mysql_query("SELECT * FROM `[users]` WHERE `clan`='$name'");
      
$nummembers                mysql_num_rows($dbre);


Wie mijn kan helpen, graag...
08-06-2011 00:13
Dit topic is 272 keer bekeken door 52 verschillende leden
Reacties op: "HELP | Verwijder sql op datum.."
1
Rapifia Europe
Berichten: 3716
avatar
Offline Stuur privébericht
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
<?php
$res 
mysql_query("SELECT id, naam FROM [clans] WHERE DATE_ADD(added, 1 WEEK) < CURDATE()");
while(
$sel mysql_fetch_array($res)){
    
$res mysql_query("SELECT id FROM users WHERE clan='".$sel['naam']."'");
    
$leden mysql_num_rows($res);
    if(
$leden 3){
        
mysql_query("DELETE FROM [clans] WHERE id='".$sel['id']."'");
    }
}
?>


Dat moet werken.
Moet je alleen nog even checken of in de clan tabel er een kolom is die naam heet en een kolom is die added heet (zoniet even in de goede veranderen). Met added bedoel ik een date of een datetime waarde wanneer de clan is aangemaakt.

Succes ermee.
08-06-2011 08:56
world-of-maffia.nl
Berichten: 744
avatar
Offline Stuur privébericht
Gebruik cron jobs..

Maak een cron job week aan
en zorg dat hij de familie's dan verwijderd
08-06-2011 18:15
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
DELETE FROM `[clans]` WHERE DATE_ADD(added, 1 WEEK) < CURDATE() AND (SELECT COUNT(*) FROM `[users]` WHERE `[users]`.`clan`=`[clans]`.`name`) < 3

Try that.
En vergeet niet zoals je altijd moet doen als je iets nog getest hebt een backup te maken.
08-06-2011 18:42
Lolz0r.
Berichten: 245
avatar
Offline Stuur privébericht
Het werkte niet echt..
13-06-2011 00:04
Informatica Student
Berichten: 1406
avatar
Online Stuur privébericht
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$query mysql_query("SELECT naam,date FROM clans ORDER BY id");
$i 0;
while(
$info mysql_fetch_assoc($query) {
$i++;
if(
time() - $info['date'] > 60*60*24*21) {
$aantal mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS aantal FROM users WHERE clan='".$info['naam']."'"));
if(
$aantal['aantal'] < 3) {
mysql_query("DELETE FROM clans WHERE naam='".info['naam']."'");
}
if(
$i == 25) {
$i 0;
sleep(3);
}
}

Deze is ineffici?nt aangezien hij in een loop is. Die van Darsstar is beter.
Code | Selecteer Alles
minimaliseren
1
DELETE FROM clans WHERE '".time()." - date > '".(60*60*24*21)."' AND (SELECT COUNT(*) FROM users WHERE users.clan=clan.naam) < 3


Maar, dit zou toch heel eenvoudig moeten zijn voor iemand met zoveel sql en php kennis? Althans, dat staat op je profiel
13-06-2011 00:23
Reageer op: "HELP | Verwijder sql op datum.."
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden