Beste mensen,

ik probeer een foto uit een map te verwijderen en daarna gelijk de record uit de database te halen.
dit lukt prima wanneer in de fotonaam het id nummer verwerkt is, want het id nummer staat in de adresbalk en die kan ik dan ophalen, maar wanneer ik de fotonaam eerst uit de database moet halen werkt het niet. in het stukje script wat ik meestuur heb ik eers een stukje staan waarbij met echo de naam geprint wordt op het scherm, en dat werkt. Toch lukt het niet om de foto ook te "unlinken" een idee wat ik fout doe? Ik ben nog niet echt een ingewijde in php dus graag niet te ingewikkelde antwoorden ;) het liefst een voorbeeld dmv een aanpassing in het script. Thanks!!!
<?php
	if (isset($_GET['id'])){
		$id = (int) $_GET['id'];
	}
	else{
		// redirect.
		// geen id meegegeven, terugsturen naar de admin-pagina
		header("location: index.html");
	}
$query = "SELECT * FROM portfolio_photos WHERE id='$id'";
	$result = safe_query($db, $query);


	// te verwijderen record op het scherm zetten
	while($record = mysqli_fetch_array($result)) {
	
	
	$pubname = "uploads/" . $record['photo_filename'];
	
	echo "../$pubname\"<br />";}

// Als de pagina zichzelf heeft aangeroepen (=de administrator heeft 
// het verwijderen bevestigd), is de flag 'bevestiging' gezet.
// In dat geval kan de DELETE-query worden uitgevoerd.
if (isset($_POST['bevestiging'])){

	// $id casten naar (int) om SQL-injection te voorkomen
	$photo_filename = (int) $_POST['photo_filename'];
	$id = (int) $_POST['id'];
	unlink("../uploads/" . $photo_filename);
	$query = "DELETE FROM portfolio_photos WHERE id='" . $_POST['id'] . "'";
	$result = safe_query($db, $query);
	if ($result){
	
	
		header("Location: reisdeleted.html");
		exit;
	}
}?> 
kan je misschien even de <?php en ?> tags toevoegens dan zie je wat makkelijker waar de fout zit
Aangezien hij toch niet reageert, doe ik het zelf maar even -,-

<?
if (isset($_GET['id'])){
$id = (int) $_GET['id'];
}
else{
// redirect.
// geen id meegegeven, terugsturen naar de admin-pagina
header("location: index.html");
}
$query = "SELECT * FROM portfolio_photos WHERE id='$id'";
$result = safe_query($db, $query);


// te verwijderen record op het scherm zetten
while($record = mysqli_fetch_array($result)) {


$pubname = "uploads/" . $record['photo_filename'];

echo "../$pubname\"<br />";}

// Als de pagina zichzelf heeft aangeroepen (=de administrator heeft
// het verwijderen bevestigd), is de flag 'bevestiging' gezet.
// In dat geval kan de DELETE-query worden uitgevoerd.
if (isset($_POST['bevestiging'])){

// $id casten naar (int) om SQL-injection te voorkomen
$photo_filename = (int) $_POST['photo_filename'];
$id = (int) $_POST['id'];
unlink("../uploads/" . $photo_filename);
$query = "DELETE FROM portfolio_photos WHERE id='" . $_POST['id'] . "'";
$result = safe_query($db, $query);
if ($result){


header("Location: reisdeleted.html");
exit;
}
}
?>
sorry was even aan het verbouwen ;)
nee krijg geen error, de delete werkt ook gewoon daarna. ik denk dat $photo_filename op dat moment geen waarde heeft.
als ik unlink verander in print krijg ik ook niks te zien en gaat het script gewoon verder. En als ik de delete query gewoon uitschakel springt het script volgens mij naar

<?php else{
        // redirect.
        // geen id meegegeven, terugsturen naar de admin-pagina
        header("location: index.html"); ?> 


want dan sta ik ineens na het klikken op de bevestigingsknop op de index pagina
Moet je niet
<?php
session_start();
?>
helemaal bovenaan je website zetten voordat zoiets goed werkt?
Zim, ik neem aan dat hij include. En die code zie je niet...
Je maakt een int van de filename die je unlinked, dus misschien dat je dat niet moet doen?

Dit bedoel ik
<?php
$photo_filename = (int) $_POST['photo_filename'];
unlink("../uploads/" . $photo_filename);
?>
hmm...klinkt logisch ja, moet ik dan gewoon dat (int) weglaten?

Reageren