bestand wissen uit serverdirectory
Ik probeer een afbeelding te wissen uit een serverdirectory. In de database staat de directory opgeslagen. (bijv. "banners/afbeelding.jpg)
Als op de 'verwijder' button wordt geklikt moet de volgende code de afbeelding wissen, maar dit doet hij niet:
if (isset($_POST['verwijder'])) {
$id = $_POST['id'];
$query1 = "SELECT * FROM gastenboek where id = ($id)";
$resultt = mysql_query($query1) or die ('Kan geen gegevens ophalen'. mysql_error());
$file = $resultt['afbeelding'];
imagedestroy($file);
}
Wie o wie kan mij vertellen wat ik hier fout doe?
bedankt!
Bekijk nogmaals de filesystem functies!!
Ik snap unlink() niet helemaal. Verwijderd deze alleen de bestandsnaam oid?
Het is de bedoeling dat de hele file wordt verwijderd zodat er weer ruimte op de server vrij komt.
Je moet eerst hem opvragen. Vervolgens unlink() je hem.
En dan verwijder je de bestandsnaam uit de database. :)
Je moet natuurlijk wel het juiste pad aangeven. Anders werkt het niet.
Dit zijn eigenlijk de meeste dingen die we je zo kunnen meegeven.
Maar wat heb je geprobeerd? Relevante code graag. (met de unlink functie)
Bart V B op 16/07/2011 19:18:36:
unlink verwijdert de file.
Je moet eerst hem opvragen.
Je moet eerst hem opvragen.
Eerst opvragen? Niet nodig, wanneer je de bestandsnaam weet kan je meteen unlinken.
Aad B op 16/07/2011 20:42:28:
Eerst opvragen? Niet nodig, wanneer je de bestandsnaam weet kan je meteen unlinken.
Ik neem aan als je het brouwseltje van de TS gelezen hebt dat het een dynamisch dingetje moet worden?
Dus dan is het wel degelijk eerst opvragen, unlinken en dan delete FROM... :)
Dan weet je dus niet welke bestandsnaam het moet zijn he..
zodra op de verwijder-button wordt geklikt gaat hij eerst het pad en de bestandsnaam van de betreffende afbeelding uit de database ophalen. (dat is bv. banners/1310823033.jpg, 'banners' is een map in de root van de website) Vervolgens wordt de file dmv 'unlink' gewist. Daarna wordt de databaseregel gewist.
Alleen het wissen van de afbeelding lukt helaas niet met dit script. Wie kan me helpen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
if (isset($_POST['verwijder'])) {
$id = $_POST['id'];
$query1 = "SELECT * FROM gastenboek where id = ($id)";
$resultt = mysql_query($query1) or die ('Kan geen gegevens ophalen'. mysql_error());
$file = $resultt['afbeelding'];
unlink($file);
$query = "Delete from gastenboek where id = ($id)";
mysql_query($query)or die ('Kan gegevens niet verwijderen'. mysql_error());
echo '<meta http-equiv="refresh" content="1;url=removeberichten.php">';
}
$id = $_POST['id'];
$query1 = "SELECT * FROM gastenboek where id = ($id)";
$resultt = mysql_query($query1) or die ('Kan geen gegevens ophalen'. mysql_error());
$file = $resultt['afbeelding'];
unlink($file);
$query = "Delete from gastenboek where id = ($id)";
mysql_query($query)or die ('Kan gegevens niet verwijderen'. mysql_error());
echo '<meta http-equiv="refresh" content="1;url=removeberichten.php">';
}
Gewijzigd op 16/07/2011 22:24:21 door Luuk Schouten
Bart V B op 16/07/2011 22:17:41:
Ik neem aan als je het brouwseltje van de TS gelezen hebt dat het een dynamisch dingetje moet worden?
Dus dan is het wel degelijk eerst opvragen, unlinken en dan delete FROM... :)
Dan weet je dus niet welke bestandsnaam het moet zijn he..
Dus dan is het wel degelijk eerst opvragen, unlinken en dan delete FROM... :)
Dan weet je dus niet welke bestandsnaam het moet zijn he..
Unlink() werkt met bestanden op de systeemschijven. Hoe wil je dat dan doen met een dynamisch plaatje?
Toevoeging op 16/07/2011 22:29:06:
TS:
Zet dit bovenin je script:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
@TS
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = "SELECT * FROM gastenboek where id = '".mysql_real_escape_string($_POST['id'])."'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
// hier het volledige pad nog opgeven :)
unlink($row['afbeelding']);
$delq = "DELETE FROM gastenboek WHERE '".mysql_real_escape_string($_POST['id'])."'";
$rdel = mysql_query($delq);
// hier nog je script naam
header('Location: ...');
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = "SELECT * FROM gastenboek where id = '".mysql_real_escape_string($_POST['id'])."'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
// hier het volledige pad nog opgeven :)
unlink($row['afbeelding']);
$delq = "DELETE FROM gastenboek WHERE '".mysql_real_escape_string($_POST['id'])."'";
$rdel = mysql_query($delq);
// hier nog je script naam
header('Location: ...');
}
?>
bedankt voor je reactie.
Het is me gelukt dmv de volgende code:
Bedankt allen!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
if (isset($_POST['verwijder'])) {
$id = $_POST['id'];
$query1 = "SELECT * FROM gastenboek where id = ($id)";
$resultt = mysql_query($query1) or die ('Kan geen gegevens ophalen'. mysql_error());
$row = mysql_fetch_assoc($result);
unlink($row['afbeelding']);
$query = "Delete from gastenboek where id = ($id)";
mysql_query($query)or die ('Kan gegevens niet verwijderen'. mysql_error());
echo '<meta http-equiv="refresh" content="1;url=removeberichten.php">';
}
$id = $_POST['id'];
$query1 = "SELECT * FROM gastenboek where id = ($id)";
$resultt = mysql_query($query1) or die ('Kan geen gegevens ophalen'. mysql_error());
$row = mysql_fetch_assoc($result);
unlink($row['afbeelding']);
$query = "Delete from gastenboek where id = ($id)";
mysql_query($query)or die ('Kan gegevens niet verwijderen'. mysql_error());
echo '<meta http-equiv="refresh" content="1;url=removeberichten.php">';
}
Gewijzigd op 18/07/2011 09:50:09 door Luuk Schouten
Om $id moet je een mysql_real_escape_string() zetten.
Anders worden er misschien plaatjes verwijdert die je niet wilt.
Of nog erger je hele database om zeep geholpen.
Je hebt gelijk. dit heb ik inderdaad ook gedaan (Y)