c´est bon ça marche quand même sans problème
Non c´est pour supprimer les photos du dossier "images" pas le dossier.
C´est à dire que je veux afficher la liste des images à l´intérieur du dossier "images" et effacer celles que je veux.
Je testerai tout à l´heure chez moi.
Merci de votre aide.
Sinon test le script que j´ai posté plus haut.
http://geneweb.fr/aide-jv/upload/index.php je l´ai testé avant de poster et il ne peux que fonctionner (sauf si bloquage de free)
https://www.jeuxvideo.com/forums/1-30-7860140-1-0-0-0-0.htm
| Citation de : deepblue
| Date du message : 25 novembre 2007 à 14:35:37
| Contenu du message :
| "" unlink(images/) " tu vexu supprimer un dossier ?
|
| test ça (chez free) :
| tu mets un fichier nommé toto.txt, et dans un fichier php (dans le meme dossier que toto.txt), tu mets <?php unlink("toto.txt"); ?> . Si il y une erreur, dis la nous"
J´ai testé comme ceci :
<?
//Page de suppression (supprimer.php)
mysql_connect("..................)
mysql_select_db("mabase");
$img = intval($_GET[´id´]);
$requete = mysql_query("SELECT nom FROM images WHERE id = ´.$img.´");
$suppr = mysql_fetch_assoc($requete);
$fichier = ´images/´.$suppr[´nom´].´´; //n´oubli pas de mettre le nom du dossier (si y´en a besoin) entre les 1er guillemets
unlink(´images/DSC00054.jpg´);
// jai remplacé par unlink($fichier);
mysql_query("DELETE FROM images WHERE id = ´.$img.´");
?>
Et ça efface bien l´image DSC00054.jpg, du moins sur free et en local.
Par contre il ne m´affiche aucun message comme quoi la photo a été supprimée.
Sinon merci pour ton script mais je le trouve trop compliqué pour moi et mon but c´est aussi de faire des scripts simples et de les comprendre.
Merci de me consacrer votre temps, on est proche du but ![]()
Pour afficher que c´est supprimé tu peux simplement faire un echo "OK"; ou alors tu mets juste après :
if(file_exists(´images/DSC00054.jpg´))
{
echo "Existe plus";
}
else
{
echo "pas supprimé";
}
Spartan_18 > if(!file_exists(´images/DSC00054.jpg´))
[chonchon] > si ça fonctionne c´est que l´erreur vient du script que utilises.
Sinon, mon script n´a rien de complexe :
makeDir($dirname) : créé des dossiers de façon récursive.
Si tu veux créer un ça : toto/titi/tata et que chacun de ses dossiers n´existe pas, il va les créer l´un après l´autre :
toto, toto/titi, toto/titi/tata
testFileType($filetype, $allowedtype) : retourne true si le type de fichier est autorisé, sinon false
testFileSize($filesize, $maxsize) : retourne true si la taille est correct, sinon false
fileName($dir, $name) : generer un nouveau nom si le fichier qu´on veut uplodé a déjà le meme nom de fichier sur le server :
if(!file_exists($dir.$name)) { return $name; } : si le fichier qu´on veut uploadé n´existe aps sur le server, on retourne son nom (donné en paramètre),
else { .... } sinon en regenere le nom avec une chaine (moi j´ai pris time()).
Après c´est de l´upload avec generation de fichier...
str_replace(array_pop(explode(´.´, $nom)), ´txt´, $nom)
str_replace(array_pop(explode(´.´, $_GET[´id´])), ´txt´, $_GET[´id´])
str_replace(array_pop(explode(´.´, $nm)), ´txt´, $nm)
Remplace l´extension du fichier par "txt"
toto.jpg > toto.txt
str_replace(´/´, ´´, $_GET[´id´]);
Evite a un eventuel utilisateur malsein de remonter dans les dossiers et de lister autre chose que tes photos.
Le reste, c´est du billard
a oui j´ai inversé, soit tu inverses les echo soit tu met le ! devant la fonction
Voilà j´ai réussi à faire le script de suppression !
A part un petit bug à chaque fois que la page est rafraichie :
Warning: unlink(./images/DSCFO669.jpg): No such file or directory in....
DSCFO669.jpg= image que j´ai supprimée précédemment donc c´est normal qu´il ne la trouve pas dans le répertoire !
(Si jamais vous pouvez m´aider à résoudre ce bug ça serait bien).
Voici mon code :
<?
$adresse = "./images/"; //Adresse du dossier.
if(isset($_GET[´nom´])) //Si $_GET[´nom´] existe, on supprime le fichier...
$nom=´´.$adresse.$_GET[´nom´].´´;
unlink($nom);
echo ´Le fichier "´.$_GET[´nom´].´" a été éffacé !< br>´;
$dossier = opendir($adresse); //Ouverture du dossier.
echo ´<fieldset><legend>Liste des fichiers</legend><br>´;
while ($Fichier = readdir($dossier)) //Affichage...
{
if ($Fichier != "." && $Fichier != "..")
{
echo ´<a
href="voir_fichiers.php?nom=´.$Fichier.´">Supprime
r</a> => <a
href=´.$adresse.$Fichier.´ target="_blank">´.$Fichier.´</a><BR>´;
}
}
closedir($dossier); //Fermeture du dossier.
echo ´<br></fieldset>´; //Fermeture du fieldset.
?>
Merci d´avance.
Désolée du double post.
Si je veux aussi supprimer les données dans la base de données, je dois ajouter et modifier comment la requête dans le script ?
mysql_query("DELETE FROM images WHERE id = ´.$img.´");
Merci.
pour l´erreur tu peux par exemple faire une redirection :
header("location: ta_page.php");
ou tu peux aussi la faire en javascript ou avec une balise meta
pour la BDD la requête est ok, et dans la variable $img tu mes l´id que tu as enregistré lors de l´upload.
Je mets où dans le script la fonction : header("location: ta_page.php"); ?
Parce que j´ai l´erreur suivante en plus :
Warning: Cannot modify header information - headers already sent by
Je l´ai mis à la fin du script c´est peut-être pour ça.
Merci.
Il faudrait le mettre dans le if qui vérifie si y´a le GET pour supprimer (par contre faut pas mettre de HTML avant.
Sinon y´a la solution du javascript qui redirige au bout de x secondes par exemple là au bout de 3 secs :
<script type="text/javascript">
setTimeout("window.location.replace(´ta_page.php´)
", 3000);
</script>
Merci , par contre je ne vois pas comment je dois modifier et où placer la requête dans le nouveau script :
$img = intval($_GET[´id´]);
$requete = mysql_query("SELECT nom FROM images WHERE id = ´.$img.´");
$suppr = mysql_fetch_assoc($requete);
Salut ! C´est encore moi.
Voilà, j´ai résolu la plupart des problèmes que j´avais.
J´ai juste un petit bug pour le script de suppression ( ps :il marche quand même) :
"Notice: Undefined index: nom in c:\**\diaporama\supprimer_photos.php on line 7"
Voici mon script :
<?
$adresse = "../../images/"; //Adresse du dossier.
if(isset($_GET[´nom´])) //Si $_GET[´nom´] existe, on supprime le fichier...
$nom=´´.$adresse.$_GET[´nom´].´´;
@unlink($nom);
echo ´Le fichier "´.$_GET[´nom´].´" a été effacé !< br>´;
$dossier = opendir($adresse); //Ouverture du dossier.
echo ´<fieldset><legend>Liste des fichiers</legend><br>´; //Ouverture de fieldset
while ($Fichier = readdir($dossier)) //Affichage...
{
if ($Fichier != "." && $Fichier != "..")
{
echo ´<a
href="supprimer_photos.php?nom=´.$Fichier.´">Suppr
imer</a> => <a
href=´.$adresse.$Fichier.´ target="_blank">´.$Fichier.´</a><BR>´;
}
}
closedir($dossier); //Fermeture du dossier.
echo ´<br></fieldset>´; //Fermeture du fieldset.
?>
Merci de m´aider. ![]()
Désolée du double post, je voudrais aussi savoir s´il est possible de restreindre l´affichage des fichiers, c´est à dire je veux juste pouvoir afficher la liste des images(pour pouvoir les supprimer) et non les autres fichiers à l´intérieur du dossier.
Donc afficher juste les fichiers en .jpg
Merci encore.
Salut !
C´est bon j´ai trouvé pour le bug, il manquait juste 2 accolades...
Sinon pour afficher juste les images du dossier( et non les autres fichiers), comment puis-je faire ?
Je sais qu´il faudrait que je fasse une restriction pour afficher juste les fichiers ayant les extensions en .jpg, .bmp...
Mais je ne sais pas comment faire en php.
Merci de m´aider.
Tu peux le faire avec un simple :
if(preg_match(´#.jpg#´, $fichier)){echo "$fichier";}
Sinon je crois qu´on peut directement avec les extensions et des arrays mais je sais plus comment on fait.
change le echo en echo $fichier;
sinon :
$autorise = array("bmp", "gif", "jpeg", "jpg");
if(in_array($type, $autorise)){echo $fichier;}
$type est l´extension du fichier (recherche une fonction permettant de la trouver)