Foto uit DB en directory verwijderen
Code (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if (isset($_POST['bevestiging'])) {
$id = (int) $_POST['id'];
/* STAP 1 = foto-bestand uit directory verwijderen */
$aQuery = "SELECT photo_filename FROM foto WHERE id='" . $id . "'";
$results = safe_query($aQuery, $db_connect);
// de volledige bestandsnaam van de foto samenstellen
// en vervolgens verwijderen
$foto_src = "afbeeldingen/uploads/" . $results['photo_filename'];
if (file_exists($foto_src)) {
unlink ($foto_src);
}
/* STAP 2 = foto-gegevens uit database verwijderen */
$bQuery = "DELETE FROM foto WHERE id='" . $id . "'";
$resultaat = safe_query($bQuery, $db_connect);
if ($resultaat) {
echo "Bijdrage nummer <b>" . $id . "</b> is verwijderd.</br />";
}
}
?>
if (isset($_POST['bevestiging'])) {
$id = (int) $_POST['id'];
/* STAP 1 = foto-bestand uit directory verwijderen */
$aQuery = "SELECT photo_filename FROM foto WHERE id='" . $id . "'";
$results = safe_query($aQuery, $db_connect);
// de volledige bestandsnaam van de foto samenstellen
// en vervolgens verwijderen
$foto_src = "afbeeldingen/uploads/" . $results['photo_filename'];
if (file_exists($foto_src)) {
unlink ($foto_src);
}
/* STAP 2 = foto-gegevens uit database verwijderen */
$bQuery = "DELETE FROM foto WHERE id='" . $id . "'";
$resultaat = safe_query($bQuery, $db_connect);
if ($resultaat) {
echo "Bijdrage nummer <b>" . $id . "</b> is verwijderd.</br />";
}
}
?>
Uit de database wordt de foto verwijderd, maar niet uit de map.
Ik krijg,
Warning: unlink(afbeeldingen/uploads/) [function.unlink]: Permission denied in C:\wamp\www\lampen\foto_index.php on line 63
De foutmelding krijg ik op een localhost via WAMP, op een WinXP-pc
Zit er één of meerdere fouten in de code?
Hoe kan deze verbeteren?
Tip: Voer de DELETE-query alleen uit wanneer unlink() is gelukt. Doe je dat niet, dan zit je straks met een enorme berg bestanden en geen records in de database om het verband te leggen.
Ik denk dat je je map moet gaan CMOD 777-en.
Bart schreef op 21.12.2007 17:03:
CHMOD op een Windowsbak? Dat is nieuw.Ik denk dat je je map moet gaan CMOD 777-en.
Als je upload in filezilla; rechtermuisknop op je bestandje, dan eigenschappen.
Staat daar CHOMD [input txt] en daaronder een aatal radios. vul je gewoon 777 in en je hebt het gknipt. Lokaal moet je gewoon het vinkje bij alleen-lezen wegdoen.
Bart schreef op 21.12.2007 18:54:
In Windows bestaat geen CHMOD, ook niet als jij via Filezilla op een Linux-server (of andere *nix-variant) de CHMOD zit aan te passen. Dat zijn toch echt de instellingen van de Linux-server en niet van jouw Windows-bak.Mhm
Als je upload in filezilla; rechtermuisknop op je bestandje, dan eigenschappen.
Staat daar CHOMD [input txt] en daaronder een aatal radios. vul je gewoon 777 in en je hebt het gknipt. Lokaal moet je gewoon het vinkje bij alleen-lezen wegdoen.
Als je upload in filezilla; rechtermuisknop op je bestandje, dan eigenschappen.
Staat daar CHOMD [input txt] en daaronder een aatal radios. vul je gewoon 777 in en je hebt het gknipt. Lokaal moet je gewoon het vinkje bij alleen-lezen wegdoen.
In Windows kun je overigens vast wel ergens iets van rechten instellen, maar die details zijn mij ontschoten.
Code (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
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
<?php
if (isset($_POST['bevestiging'])) {
$id = (int) $_POST['id'];
/* STAP 1 = foto-bestand uit directory verwijderen */
$aQuery = "SELECT photo_filename FROM foto WHERE id='" . $id . "'";
$results = safe_query($aQuery, $db_connect);
// de volledige bestandsnaam van de foto samenstellen
// en vervolgens verwijderen
$foto_src = "afbeeldingen/uploads/" . $results['photo_filename'];
if (file_exists($foto_src)) {
$foto_verwijderen = unlink($foto_src);
echo $foto_verwijderen;
if ($foto_verwijderen) {
/* STAP 2 = foto-gegevens uit database verwijderen */
$bQuery = "DELETE FROM foto WHERE id='" . $id . "'";
$resultaat = safe_query($bQuery, $db_connect);
if ($resultaat) {
echo "Bijdrage nummer <b>" . $id . "</b> is verwijderd.</br />";
}
}
}
}
?>
if (isset($_POST['bevestiging'])) {
$id = (int) $_POST['id'];
/* STAP 1 = foto-bestand uit directory verwijderen */
$aQuery = "SELECT photo_filename FROM foto WHERE id='" . $id . "'";
$results = safe_query($aQuery, $db_connect);
// de volledige bestandsnaam van de foto samenstellen
// en vervolgens verwijderen
$foto_src = "afbeeldingen/uploads/" . $results['photo_filename'];
if (file_exists($foto_src)) {
$foto_verwijderen = unlink($foto_src);
echo $foto_verwijderen;
if ($foto_verwijderen) {
/* STAP 2 = foto-gegevens uit database verwijderen */
$bQuery = "DELETE FROM foto WHERE id='" . $id . "'";
$resultaat = safe_query($bQuery, $db_connect);
if ($resultaat) {
echo "Bijdrage nummer <b>" . $id . "</b> is verwijderd.</br />";
}
}
}
}
?>
Het volgende,
geeft "Permission denied" foutmelding
geeft geen foutmelding, maar een blanco pagina. Foto bestaat nog in directory
Ik heb het volgende bovenaan staan,
Bij deze echo,
krijg ik niets te zien. geen fout en geen naam.
In de database staat "Afbeelding1.jpg" bij "photo_filename".
(echo $id; geeft een 2, wat juist is)
vinkje bij "alleen lezen" uitzetten van directory "afbeeldingen" + alle onderliggende mappen + foto, geeft dezelfde foutmelding,
Code (php)
1
Warning: unlink(afbeeldingen/uploads/) [function.unlink]: Permission denied in C:\wamp\www\lampen\foto_index.php on line 55
Doe ik dit,
Code (php)
dan krijg ik 0777 te zien
Ik heb nu alles geupload naar pcextreme en rechten naar 0777 van alle directory's
en krijg nu de melding bij verwijderen,
Code (php)
1
Warning: unlink(afbeeldingen/uploads/) [function.unlink]: Is a directory in /home/site.nl/lampen/foto_index.php on line 55
EDIT
Als ik het zo doe,
werkt het wel
fout moet dus hier zitten,
Code (php)
1
2
3
4
2
3
4
<?php
$aQuery = "SELECT id, photo_filename FROM foto WHERE id='" . $id . "'";
$results = safe_query($aQuery, $db_connect);
?>
$aQuery = "SELECT id, photo_filename FROM foto WHERE id='" . $id . "'";
$results = safe_query($aQuery, $db_connect);
?>
Gewijzigd op 01/01/1970 01:00:00 door Patrick