Toon posts:

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

Pagina: 1
Acties:

Onderwerpen


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!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 22:19
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).

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?

  • Cyw00d
  • Registratie: Januari 2006
  • Laatst online: 29-05 11:06
http://php.net/unlink

edit: thnx HuHu.

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

[ Tesla MIG MYP ]


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 22:19
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();

  • 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

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]


  • 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.

  • Cyw00d
  • Registratie: Januari 2006
  • Laatst online: 29-05 11:06
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 ]


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

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 :)

  • Cyw00d
  • Registratie: Januari 2006
  • Laatst online: 29-05 11:06
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


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee