Modérateur PHPfrance |
8758 Messages
11 nov. 2010, 23:48
coté SQL pas de select * deux champs sont utile il suffit de les noter dans la requête (ça évite de récupérer 300000 infos inutiles et à la lecture du code c'est plus clair).
date est un mot sql de mysql est préférable de ne pas l'utiliser et de donner un nom explicite par exemple date-ajout.
utilise la valeur de retour de unlink pour savoir si tout se passe bien
tu a une erreur de parse dans le while (problème de concaténation)
voila comment je pourrais faire
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=videos', 'root', '');
}
catch(Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
$reponse = $bdd->query('SELECT idvi, vid FROM video WHERE TO_DAYS(NOW()) - TO_DAYS(date) >= 7 AND note < 10');
$ok = array();
$nok = array();
while ($s = $reponse->fetch()){
$ret = unlink('video/'.$s['vid'].'.flv');
if ($ret === false) {
$nok[] = $s['idvid'];
}
else {
$ok[] = $s['vid'];
}
}
$reponse->closeCursor();
if (count($nok)){
echo 'il y a '.count($nok).' fichier non supprimer<br />';
}
$requete = 'DELETE FROM video WHERE idvid in('.implode(',',$ok).')';
$bdd->exec($requete);
?>
Pour info utilise la balise
pour coloriser le code sur le forum c'est plus facile a lire
@+
Il en faut peu pour être heureux ......