ik heb een archiefje met bestanden. maar om die bestanden ook weer een keer te kunnen verwijderen indien nodig is daar een scriptje voor nodig. nu lukt het mij nog niet echt.

ik heb het volgende stukje code:

<?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');

}
?>

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.
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...
het werkt nu!

ik heb het volgende:

<?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');

}
?>

maar nog wel staat er steeds dat bericht dat het verwijderd is in beeld als ik de pagina alleen nog maar laadt.
Hoe kom je aan de waarde van deze var?
$bestand_id
Zit er wel wat in?
in die $bestand_id zit zeker wel wat, daar zit de md5 hash 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.

<?php
session_start(); // start een sessie of zet een sessie voort
ob_start();
?>

<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>

<?php
$rank = $_SESSION['rank'];
if($rank == 40)
{
?>
<?php
include('include/database.php');
include('include/top.php');
?>

<?php
$query = "SELECT * FROM bestanden";
$result = (mysql_query($query));
?>

<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>
<?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'];
}




?>



<tr><td width="30"><?php echo('<input type="checkbox" name="bestand" value="'.$id.'">'); ?></td></td><td width="300"><?php echo('<a href="Bestanden/'.$bestand_id.'.'.$ext.'">'.$bestand_naam.'</a>'); ?></td><td width="50"><?php echo($grootte); ?></td><td width="50"><?php echo($user); ?></td><td width="60"><?php echo ($datum); ?></td><td width="50"><?php echo ($tijd); ?></td><td width="80"><?php echo($verborgen); ?></td></tr>

<?php
}
}
echo('</table>');?><br><?php
echo('<input type="submit" name="submit" value="Verwijderen">');
echo('</form>');
?>

<?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');

}
?>


<?php
} // end if rank
?>


</body>
</html>

EDIT: layout is een beetje verpest.
ik heb de fout zojuist gevonden, ik had een ';' achter de if statement gezet zoals hierboven ook te zien is, nu klopt het dus.

bedankt iedereen voor de hulp!
EDIT: het script werkt toch nog niet helemaal lekker, als ik namelijk een record selecteer dat niet onderaan de lijst staat (dus niet als laatste toegevoegd) dan verwijdert hij wel het goede record uit de database, maar hij verwijdert het laatst toegevoegde bestand waardoor er dus foutmeldingen ontstaan.

ziet een van jullie waar dit aan kan liggen?
Waarschijnlijk omdat je $bestand_id en $ext uit de while loop haalt. Dus dat is de laatste!!

En het $id om het uit de database te halen uit $_POST['bestand'] haalt.
dus zou ik dan een paar hidden vakjes moeten maken waar ik dan die bestand_id en extensie inzet in dat form?
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.

Reageren