Xit met een probleem:
Ik wil een UNLINK commando toevoegen aan een 'DELETE' action. het bestaande script maakt gebruikt van PHP/MYSQL in combinatie met JAVASCRIPT. in het onderstaande script kun je bij ####HULP GEVRAAGD##### lezen wat het probleem is:

<?php
////////////////////////////////////////////////////////////// DATABASE CONNECTIE
include_once("../config.php");

////////////////////////////////////////////////////////////// FUNCTIES

function splitVals($str){
$chunks = split('\^', $str);
return $chunks;
}


////////////////////////////////////////////////////////////// PAGINA ACTIONS
$pagetitle = "Foto Administratie";
$pagewidth = 800;
$saveBtn = false;
$headerImage = "<img src='../images/folder.close.gif' width='18' height='18' align='absmiddle' alt='' />&nbsp;Foto Album";

// form vars
$action = $_REQUEST['action'];
$groupId = $_REQUEST['groupId'];
$groupId = ($groupId=="")?0:$groupId;
$picId = $_REQUEST['picId'];
$id = $_REQUEST['idAll'];
$title = $_REQUEST['titleAll'];
$width = $_REQUEST['widthAll'];
$height = $_REQUEST['heightAll'];
$comments = $_REQUEST['commentsAll'];
//$src = $_REQUEST['srcId']; //ik dacht hier een form var te maken voor het veld SRC


if ($action=='SAVE'){
$idCol = splitVals($id);
$titleCol = splitVals($title);
$widthCol = splitVals($width);
$heightCol = splitVals($height);
$commentsCol = splitVals($comments);

for ($x=0; $x<count($idCol); $x++){
//echo("X=".$titleCol[$x]);
$updateQry = "update ".$dbTable." set title='".$titleCol[$x]."', width='".$widthCol[$x]."', height='".$heightCol[$x]."', comments='".$commentsCol[$x]."' where id=".$idCol[$x];
$success = mysql_query($updateQry);
}
}else if ($action == 'DELETE'){

$deleteQry = "delete from ".$dbTable." where id=".$picId." or parent_id=".$picId;

######## HULP GEVRAAGD ############################################################################################################
##
// Hieronder wil ik het bestand niet alleen uit de dbase(dit werkt dus al), maar ook met UNLINK van de server verwijderen!!!!!!
// de velden in de MYSQL tabel heten ID, PARENT_ID, TITLE, SRC, WIDTH, HEIGHT en COMMENTS
// het lastige is dat het script een combi Form is van php en javascript, waarbij javascript de form variabelen afhandeld,
// en php de acties in mysql uitvoerd.
//
// Het ID wordt uitgesplitst in 2 soorten ID's: een picId en een groupId. groupId's worden gebruikt om foto's in een groep te kunnen
// plaatsen (zie het als een soort directory structuur waar je via deze pagina doorheen kunt navigeren).
// ik kan niet alleen een afzonderlijke foto(picId), maar ook een groupId verwijderen uit de dbase
// met zijn bijbehorende 'children'(dit werkt ook).
//
// ik kan niet ontdekken hoe ik in deze 'DELETE' action met het UNLINK commando de bijbehorende bestand(en),
// en in geval van het verwijderen van een groep ook alle children, van de server kan verwijderen.
//
// waarschijnlijk zal ik de javascript ook moeten aanpassen...maar hoe ?????
//
// de ge-uploade foto's komen in de directory 'CONTENT' terecht, en in de database wordt een pad naam ge-insert : 'CONTENT/FOTO.JPG'
// deze index.php file staat in de 'ADMIN' directory. Op het zelfde niveau staat de 'CONTENT' directory, vandaar dat ik
// met '../' eerst een stapje terug moet
##
######## in de volgende regel moet het UNLINK commando de bestand(en) verwijderen #################################################
######## waarbij $src verwijst naar 1 of meerdere bestanden kan zijn (zal wel iets van een WHILE actie worden denk ik)#############
##
// unlink("../".$src);
$success = mysql_query($deleteQry);
}
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>[<?=$pagetitle?>]</title>
<link rel="stylesheet" type="text/css" href="../global.css" />
<script language="JavaScript" type="text/javascript" src="../js/launchWindow.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
function getVals(col){
var values = new Array();
for (var x=0; x<col.length; x++){
values.push(col[x].value);
}return values;
}

function submitForm(action,groupId,picId){
if (action=='SAVE'){
document.adminForm.idAll.value = getVals(document.getElementsByName('id')).join("^");
document.adminForm.titleAll.value = getVals(document.getElementsByName('title')).join("^");
document.adminForm.widthAll.value = getVals(document.getElementsByName('width')).join("^");
document.adminForm.heightAll.value = getVals(document.getElementsByName('height')).join("^");
document.adminForm.commentsAll.value = getVals(document.getElementsByName('comments')).join("^");

}else if (action=='RELOAD'){
document.adminForm.groupId.value = groupId;
}else if (action=='DELETE'){
document.adminForm.picId.value = picId;
}
document.adminForm.action.value = action;
document.adminForm.submit();
}

function delPic(picId){
var confirmed = confirm("Deze foto wordt verwijderd.\n Weet u zeker dat u wilt doorgaan?\n");
if (confirmed){
submitForm('DELETE',null,picId);
}else{
return void(0);
}
}
function delDir(groupId){
var confirmed = confirm("Deze folder met zijn inhoud wordt verwijderd.\n Weet u zeker dat u wilt doorgaan?\n");
if (confirmed){
submitForm('DELETE',null,groupId);
}else{
return void(0);
}
}
//-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body {
background-image: url(../images/rkcbackground.gif);
}
a {
font-family: Verdana,Arial,Geneva, Helvetica, sans-serif;
color: #000000;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #000000;
}
a:hover {
text-decoration: underline;
color: #000000;
}
a:active {
text-decoration: none;
color: #000000;
}
-->
</style></head>
</head>
<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
<?php include("../header.php");?>

<form action="index.php" name="adminForm" method="post">
<input type="hidden" name="action" value="">
<input type="hidden" name="groupId" value="<?=$groupId?>">
<input type="hidden" name="idAll" value="">
<input type="hidden" name="titleAll" value="">
<input type="hidden" name="widthAll" value="">
<input type="hidden" name="heightAll" value="">
<input type="hidden" name="commentsAll" value="">
<input type="hidden" name="picId" value="">
<input type="hidden" name="srcId" value="">
<? // get parent to show the navigate up link
$parentQry = "SELECT * FROM ".$dbTable." WHERE ID='".$groupId."'";
$parentResult = mysql_query($parentQry);
if ($parentResult){
while($pRow = mysql_fetch_array($parentResult)){
$headerImage = "<a href=\"javascript:submitForm('RELOAD','".$pRow['PARENT_ID']."',null)\" class='tabletxt2'><img src='../images/folder.open.gif' width='18' height='18' border='0' align='absmiddle' hspace='5'/> TERUG - ".$pRow['TITLE']."</a>";
}
}
?>
<table cellpadding="0" cellspacing="0" border="0" align="center" width="95%">
<tr>
<td align="center">
<table cellpadding="0" cellspacing="0" class="tableHeader" border="0" width="100%">
<tr>
<td class="normal" width="1"><img src="images/sp.gif" width="1" height="38" alt="" /></td>
<td class="normal tabletxt2"><?=$headerImage?></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td width="30">&nbsp;</td>
<td>
<table cellpadding="3" cellspacing="1" class="tableBg" border="0" width="100%">
<?php
$imgQry = 'SELECT * FROM '.$dbTable.' WHERE PARENT_ID='.$groupId.' ORDER BY SRC';
$result = mysql_query($imgQry);
// display each child
while ($row = mysql_fetch_array($result)) {
$rowHTML = "<tr>";
if ($row['SRC']==""){
$rowHTML .= "<td colspan='9' class='accent1'><img src='../images/folder.close.gif' width='18' height='18' hspace='3' alt='' align='absmiddle' /><a href=\"javascript:submitForm('RELOAD','".$row['ID']."',null)\" class='tabletxt2'>".$row['TITLE']."</a>&nbsp;&nbsp;</td>";
$rowHTML .= "<td class='accent1' width='60' align='center'><a href=\"javascript:launchWindow('renamefolder.php?groupId=".$row['ID']."&parentId=".$groupId."','500','200','upload','N')\" class='small'>[Hernoem]</a></td>";
$rowHTML .= "<td class='accent1' width='60' align='center'><a href='javascript:delDir(\"".$row['ID']."\")' class='small'>[Verwijder]</a></td>";
}else{
$saveBtn = true;
$rowHTML .= "<td class='accent1 tabletxt1' width='60' align='right'><input type='hidden' name='id' value='".$row['ID']."' />Titel:</td>";
$rowHTML .= "<td class='accent0' width='170'><input type='text' class='input' name='title' value='".str_replace('\'', '&#39;',$row['TITLE'])."'/></td>";
$rowHTML .= "<td class='accent1 tabletxt1' width='10' align='right'>Breedte:</td>";
$rowHTML .= "<td class='accent0' width='170'><input type='text' class='input' size='5' name='width' value='".$row['WIDTH']."'/></td>";
$rowHTML .= "<td class='accent1 tabletxt1' width='10' align='right'>Hoogte:</td>";
$rowHTML .= "<td class='accent0' width='170'><input type='text' class='input' size='5' name='height' value='".$row['HEIGHT']."'/></td>";
$rowHTML .= "<td class='accent1 tabletxt1' width='60' align='right'>Opmerkingen:</td>";
$rowHTML .= "<td class='accent0' width='170'><input type='text' class='input' size='30' name='comments' value='".str_replace('\'', '&#39;',$row['COMMENTS'])."'/></td>";
$rowHTML .= "<td class='accent1' width='20'><a href='javascript:delPic(\"".$row['ID']."\")'><img src='../images/delete.icon.gif' width='18' height='18' border='0' alt='Verwijder foto' /></td>";
$rowHTML .= "<td class='accent0 tabletxt1' width='60'><img src='../".$row['SRC']."' class='input' width='50' height='50' /></td>";
}
$rowHTML .= "</tr>";
echo($rowHTML);
}

?>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellpadding="3" cellspacing="0" border="0" width="100%">
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td align="center">
<? if ($saveBtn){?><input type="button" class="button" onClick="submitForm('SAVE',null,null);" value="Opslaan"/>
<?}?>&nbsp;&nbsp;
<input type="button" class="button" onClick="launchWindow('createfolder.php?groupId=<?=$groupId?>','500','200','folder','N')" value="Maak Folder"/>
&nbsp;&nbsp;
<input type="button" class="button" onClick="launchWindow('uploadimage.php?groupId=<?=$groupId?>','500','200','upload','N')" value="Upload Foto"/>
&nbsp;&nbsp;
<input type="button" class="button" onClick="launchWindow('../','800','800','preview','Y')" value="Voorbeeld"/>
&nbsp;&nbsp;
</td>
</tr>
</table>
</form>

<br><br>
<table class="tableBg" align="center" cellpadding="1" cellspacing="1" border="0">
<tr>
<td>
<table class="accent1" cellpadding="3" cellspacing="3" border="0" align="center" width="125">
<tr >
<td align="left" valign="middle" height="35" width="20"><img src="../../images/folderclose.gif" width="18" height="18"></td>
<td align="left" class="subAdmin" valign="middle"><a href="../../onderhoud.php">Hoofdmenu</a></td>
</tr>
</table>
</td>
</tr>
</table>
<?php include("../footer.php");?>
</body>
</html>
unlink('filenaam');
ik snap de syntax wel, maar niet hoe ik aan die filenaam kan komen in dit script.....JAVASCRIPT regelt de form variabelen en PHP voert de actions uit volgens mij.....zie:

######## HULP GEVRAAGD ######################################################################
##
// Hieronder wil ik het bestand niet alleen uit de dbase(dit werkt dus al),
// maar ook met UNLINK van de server verwijderen!!!!!!
// de velden in de MYSQL tabel heten ID, PARENT_ID, TITLE, SRC, WIDTH, HEIGHT en COMMENTS
// het lastige is dat het script een combi Form is van php en javascript,
// waarbij javascript de form variabelen afhandeld, en php de acties in mysql uitvoerd.
//
// Het ID wordt uitgesplitst in 2 soorten ID's: een picId en een groupId.
// groupId's worden gebruikt om foto's in een groep te kunnen plaatsen
// (een soort directory structuur waar je via deze pagina doorheen kunt navigeren).
// ik kan niet alleen een afzonderlijke foto(picId), maar ook een groupId verwijderen
// uit de dbase met zijn bijbehorende 'children'(dit werkt ook al).
//
// Maar ik kan niet ontdekken hoe ik in deze 'DELETE' action met het UNLINK commando
// de bijbehorende bestand(en), en in geval van het verwijderen van een groep ook
// alle children, van de server kan verwijderen.
//
// waarschijnlijk zal ik de javascript ook moeten aanpassen...maar hoe ?????
//
// de ge-uploade foto's komen in de directory 'CONTENT' terecht, en in de database wordt
// een pad naam ge-insert : 'CONTENT/FOTO.JPG'
// Deze index.php file staat in de 'ADMIN' directory. Op het zelfde niveau staat
// de 'CONTENT' directory, vandaar dat ik met '../' eerst een stapje terug moet
##
Je kunt in een sql commando geen bestanden en mappen wissen.

wat je nodig hebt zijn twee functies:

eentje die een bestand wist waarvan je de naam en de locatie weet (via picID en groupID)

en eentje die een hele map plus inhoud wist (via groupID)

Je moet dus eerst checken of je query succesvol was, dus dat de verwijzingen naar de pics en/of de group zijn verwijderd uit je database.

Als dat goed gegaan is, ga je fysiek de bestanden van de server verwijderen.

Een plaatje kan gewoon met unlink ('dir/plaatje.jpg').
Voor een hele dir moet je even snuffelen. Als er nog subdirs zijn heb je een recursieve functie nodig, maar die heb ik zo niet voor de hand.
klopt dat snap ik....maar doordat er zowel met php als javascript gewerkt wordt is het lastig om uit te vinden hoe ik die variabele(filenaam) moet selecteren....

Reageren