bestand verwijderen
ik heb het volgende stukje code:
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
<?php
if(isset($_POST['submit']));
{
$bestand = 'Bestanden/'.$bestand_id.'.'.$ext;
unlink($bestand);
$id = ($_POST['bestand']);
$query2 = "DELETE FROM bestanden WHERE id='".$id."'";
(mysql_query($query2));
echo('Het bestand is verwijderd');
}
?>
if(isset($_POST['submit']));
{
$bestand = 'Bestanden/'.$bestand_id.'.'.$ext;
unlink($bestand);
$id = ($_POST['bestand']);
$query2 = "DELETE FROM bestanden WHERE id='".$id."'";
(mysql_query($query2));
echo('Het bestand is verwijderd');
}
?>
uit de database wordt hij wel verwijderd, maar niet uit de map "Bestanden"
ik heb de functie unlink nog nooit gebruikt hiervoor, en heb ik hier uit de tutorials, dus weet ook nog niet zo goed hoe ik hem moet gebruiken.
ipv:
(dus gebruiker van bovenstaande account, verander je wachtwoord)
Gewijzigd op 19/10/2005 01:37:00 door Stefan van Iwaarden
rofl? wtf
thijs:
maakt geen verschil, effect blijft hetzelfde, alleen record in database wordt verwijderd, bestand blijft staan.
map heeft 777 als rechten. dus dat zit wel goed.
Gewijzigd op 19/10/2005 01:50:00 door Stefan van Iwaarden
hoe kom je aan die bestand_id en die extensie?
het bestand id is een md5 hash, en de extensie wordt met een explode van de bestandsnaam in de database opgeslagen.
dus die worden bij dit script weer terug opgehaald uit de database
wel staat er het volgende regeltje onderaan op de pagina:
Warning: unlink(Bestanden/6512bd43d9caa6e02c990b0a82652dca.png) [function.unlink]: No such file or directory in /home/uploadar/domains/uploadarchief.com/public_html/admin/verwijder.php on line 81
regel 81 is:
unlink($bestand);
Gewijzigd op 19/10/2005 01:56:00 door Stefan van Iwaarden
Probeer eens dit:
hierbij controleert deze of het bestand bestaat.
btw, staan de bestanden in de admin directory? Anders moet je voor directory ../ zetten.
het is als volgt opgebouwd.
home/Bestanden/.......
home/admin/verwijder.php
ik hoop dat je een beetje snapt hoe die mappen in elkaar zitten met bovenstaand voorbeeld.
wel verdween die foutmelding toen ik het volledige adres naar het bestand had getypt. ik heb nu de volgende code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if(isset($_POST['submit']));
{
$bestand = "http://www.uploadarchief.com/Bestanden/".$bestand_id.".".$ext;
if(file_exists($bestand))
{
unlink($bestand);
}
$id = ($_POST['bestand']);
$query2 = "DELETE FROM bestanden WHERE id='".$id."'";
(mysql_query($query2));
echo('Het bestand is verwijderd');
}
?>
if(isset($_POST['submit']));
{
$bestand = "http://www.uploadarchief.com/Bestanden/".$bestand_id.".".$ext;
if(file_exists($bestand))
{
unlink($bestand);
}
$id = ($_POST['bestand']);
$query2 = "DELETE FROM bestanden WHERE id='".$id."'";
(mysql_query($query2));
echo('Het bestand is verwijderd');
}
?>
ook staat die "Het bestand is verwijderd" alreeds in beeld als ik de pagina gewoon laadt, als ik dan in de database kijk heeft hij nog niks verwijderd. dat niet.
dit gaat nooit werken aangezien je een url probeert te verwijderen. Je moet of het relatieve path geven vanaf de directory waaruit het script wordt uitgevoerd of het absolute path.
../Bestanden/$bestandid.$extentie zou beter moeten werken...
ik heb het volgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if(isset($_POST['submit']));
{
$bestand = "../Bestanden/".$bestand_id.".".$ext;
if(file_exists($bestand))
{
unlink($bestand);
}
$id = ($_POST['bestand']);
$query2 = "DELETE FROM bestanden WHERE id='".$id."'";
(mysql_query($query2));
echo('Het bestand is verwijderd');
}
?>
if(isset($_POST['submit']));
{
$bestand = "../Bestanden/".$bestand_id.".".$ext;
if(file_exists($bestand))
{
unlink($bestand);
}
$id = ($_POST['bestand']);
$query2 = "DELETE FROM bestanden WHERE id='".$id."'";
(mysql_query($query2));
echo('Het bestand is verwijderd');
}
?>
maar nog wel staat er steeds dat bericht dat het verwijderd is in beeld als ik de pagina alleen nog maar laadt.
$bestand_id
Zit er wel wat in?
hieronder het volledige script, want ik heb zojuist gemerkt dat hij bij het laden van de pagina alreeds een van de bestanden verwijdert, vandaar ook die melding vanonder. ik zie alles in zo'n if statement staan, en dacht dat dat dan niet kon.
<html>
<head>
<title>Upload Archief</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK REL="stylesheet" HREF="stylesheet.css" TYPE="text/css">
</head>
<body>
<table width=90% border="0" cellspacing"0">
<tr><td width="30"></td><td width="300"><b>Naam</b></td><td width="50"><b>Grootte (kb)</b></td><td width="50"><b>Geplaatst Door</b></td><td width="60"><b>Datum Geplaatst</b></td><td width="60"><b>Tijd Geplaatst</b></td><td width="80"><b>Verborgen?</b></td></tr>
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
28
29
30
31
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
31
<?php
if(mysql_num_rows($result))
{
echo('<form action="verwijder.php" method="post">');
while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$bestand_id = $row['bestand_id'];
$user_id = $row['user_id'];
$bestand_naam = $row['bestand_naam'];
$ext = $row['extensie'];
$verborgen = $row['verborgen'];
$datum = $row['datum'];
$tijd = $row['tijd'];
$bytes = fileSize("../Bestanden/".$bestand_id.".".$ext."");
$grootte = round(($bytes / 1024),0); //bytes omrekenen naar kilobytes
$query2 = "SELECT gebruikersnaam FROM users WHERE id=".$user_id;
$result2 = (mysql_query($query2));
while($row2 = mysql_fetch_array($result2))
{
$user = $row2['gebruikersnaam'];
}
?>
if(mysql_num_rows($result))
{
echo('<form action="verwijder.php" method="post">');
while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$bestand_id = $row['bestand_id'];
$user_id = $row['user_id'];
$bestand_naam = $row['bestand_naam'];
$ext = $row['extensie'];
$verborgen = $row['verborgen'];
$datum = $row['datum'];
$tijd = $row['tijd'];
$bytes = fileSize("../Bestanden/".$bestand_id.".".$ext."");
$grootte = round(($bytes / 1024),0); //bytes omrekenen naar kilobytes
$query2 = "SELECT gebruikersnaam FROM users WHERE id=".$user_id;
$result2 = (mysql_query($query2));
while($row2 = mysql_fetch_array($result2))
{
$user = $row2['gebruikersnaam'];
}
?>
<tr><td width="30"></td></td><td width="300"></td><td width="50"></td><td width="50"></td><td width="60"></td><td width="50"></td><td width="80"></td></tr>
<br>
Code (php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if(isset($_POST['submit']));
{
$bestand = "../Bestanden/".$bestand_id.".".$ext;
if(file_exists($bestand))
{
unlink($bestand);
}
$id = ($_POST['bestand']);
$query2 = "DELETE FROM bestanden WHERE id='".$id."'";
(mysql_query($query2));
echo('Het bestand is verwijderd');
}
?>
if(isset($_POST['submit']));
{
$bestand = "../Bestanden/".$bestand_id.".".$ext;
if(file_exists($bestand))
{
unlink($bestand);
}
$id = ($_POST['bestand']);
$query2 = "DELETE FROM bestanden WHERE id='".$id."'";
(mysql_query($query2));
echo('Het bestand is verwijderd');
}
?>
</body>
</html>
EDIT: layout is een beetje verpest.
Gewijzigd op 19/10/2005 14:04:00 door Stefan van Iwaarden
ziet een van jullie waar dit aan kan liggen?
En het $id om het uit de database te halen uit $_POST['bestand'] haalt.
Gewijzigd op 19/10/2005 15:15:00 door Stefan van Iwaarden
Dat kan. Maar je kan het ook uit de database halen voordat je het bestand uit de database verwijdert. Dus eerst een select en dan de delete.