[PHP + MySQL + CMD?] Bestand verwijderen als NOW > einddatum

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 289866

Topicstarter
Beste tweakers,

- Windows Server met o.a. IIS, MySQL, PHP
- C:\Bestanden\*.*

- Ik heb een (eind)datumveld in mijn database (eventueel inclusief tijd)
- Ik heb een bestandsnaam in dezelfde tabel.

Nu wil ik graag iets gaan maken wat om de zoveel tijd kijkt of de huidige datum(met of zonder tijd) groter is dan die in het veld, - als hij een row gevonden heeft die dit heeft - dient hij de betreffende bestandsnaam van die rij te kunnen ophalen.
Vervolgens dient hij het bestand met de opgehaalde bestandsnaam te verwijderen uit een map (bijvoorbeeld uit C:\Bestanden) van mijn server.

Weet iemand hoe ik dit het beste kan aanpakken, en wat voor eventuele functies e.d. ik moet gaan gebruiken?
En als ik dit dan met een Scheduled task zou moeten doen van Windows, hoe zou ik dit dan moeten gaan doen?

Alvast bedankt voor de hulp!

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 19:40
Een script schrijven die alleen de Windows Scheduler op mag starten. (Zodat hij in ieder geval niet van buitenaf aangeroepen kan worden).

Die maakt een array van alle bestanden die weg kunnen en dan gewoon de array doorlopen en de bestanden weg gooien (Let op: Zorg wel voor de juiste rechten).

Acties:
  • 0 Henk 'm!

Anoniem: 289866

Topicstarter
Akkoord dankje voor de hulp!

code:
1
SELECT naam FROM tabel WHERE eind_datum < NOW()


Zo ver ben ik voor als nu, en dit geeft alle namen inderdaad weer..
Maar hoe moet ik nu verder?

Acties:
  • 0 Henk 'm!

  • Cyw00d
  • Registratie: Januari 2006
  • Laatst online: 17-04 11:43
http://php.net/unlink

edit: thnx HuHu.

[ Voor 52% gewijzigd door Cyw00d op 12-05-2011 09:33 ]

[ Tesla MIG MYP ]


Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 19:40
En je kunt kijken naar foreach en while functies. Zo kun je de resultaten van je query gebruiken om de daadwerkelijke bestanden te verwijderen met unlink();

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
This is a dummy manual entry to satisfy those people who are looking for unlink() or unset() in the wrong place.
Link dan meteen naar de juiste functie: http://php.net/unlink

Acties:
  • 0 Henk 'm!

Anoniem: 289866

Topicstarter
Dank u allen,

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$query = mysql_query("SELECT * FROM tabel WHERE eind_datum < NOW();");
$result = $query or die ("MySQL Fout: ". mysql_error());
$controle=mysql_num_rows($result);
if($controle==0){
echo "Op het moment zijn er geen bestanden waarbij de einddatum kleiner is dan de huidige datum";
}
else {

?>
<li> Alle namen waarbij de eind_datum kleiner is dan NU. <br /><br />

<table border='0'>
    <tr>
        <td width='150'><b>Naam</b></td>
    </tr>
    <tr><td width='150'>&nbsp;</td></tr>
<?php
echo $controle." bestand(en) gevonden";
while($row = mysql_fetch_object($result)){

?>
    <tr>
        <td width='150'><?php echo "$row->naam";?></td>
    </tr>
</table>
            
<?php
}
}
?>


Heb inmiddels eventjes een testpagina gemaakt waarbij hij alle resultaten weergeeft, gaat al een beetje de goede kant op volgens mij :D

[ Voor 4% gewijzigd door Anoniem: 289866 op 12-05-2011 09:58 ]


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Je sluit nu je table-tag te vaak af, die moet buiten de while. Verder heeft het totaal geen nut om " om $row->naam te zetten.

Acties:
  • 0 Henk 'm!

  • Cyw00d
  • Registratie: Januari 2006
  • Laatst online: 17-04 11:43
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$query = mysql_query("SELECT * FROM tabel WHERE eind_datum < NOW();"); 
$result = $query or die ("MySQL Fout: ". mysql_error()); 
$controle=mysql_num_rows($result); 
if($controle==0){ 
    echo "Op het moment zijn er geen bestanden waarbij de einddatum kleiner is dan de huidige datum"; 
} else { 

?> 
    <li> Alle namen waarbij de eind_datum kleiner is dan NU. <br /><br /> 
    <table border='0'> 
        <tr> 
            <td width='150'><b>Naam</b></td> 
        </tr> 
        <tr>
        <td width='150'>&nbsp;</td>
        </tr> 
        <?php 
        echo $controle." bestand(en) gevonden"; 
        while($row = mysql_fetch_object($result)){ 
            echo "<tr><td width='150'>" . $row->naam . "</td></tr>";
        } 
    echo "</table>"
}
?>

[ Voor 43% gewijzigd door Cyw00d op 12-05-2011 10:31 ]

[ Tesla MIG MYP ]


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Dat is zowaar nog slechter en werkt maar half.

Acties:
  • 0 Henk 'm!

Anoniem: 289866

Topicstarter
HuHu schreef op donderdag 12 mei 2011 @ 10:11:
Je sluit nu je table-tag te vaak af, die moet buiten de while.
Dat zag ik inderdaad, en had ik al in mijn script verbeterd, maar hier nog niet.
HuHu schreef op donderdag 12 mei 2011 @ 10:11:
Verder heeft het totaal geen nut om " om $row->naam te zetten.
Dat is ook waar, maar zo 'lijkt' het wat overzichtelijker - vooral - voor een beginnend php'er als dat ik ben :)

Acties:
  • 0 Henk 'm!

  • Cyw00d
  • Registratie: Januari 2006
  • Laatst online: 17-04 11:43
HuHu schreef op donderdag 12 mei 2011 @ 10:27:
Dat is zowaar nog slechter en werkt maar half.
Werkt goed hoor.

[ Tesla MIG MYP ]

Pagina: 1