问题描述
|
这是一个页面,用户可以在其中编辑上传的图像。每个图像附近都有一个复选框。我想在用户单击“删除选定的图像”按钮后删除选定的图像(每个复选框均包含图像名称作为值)。我怎样才能做到这一点?
<?PHP
session_start();
//////////////if user already logged in go to login.PHP/////////
if (isset($_SESSION[\'email\'] )&& isset($_SESSION[\'password\'] ))
{
} else{header( \"Location: login.PHP\" ); }
include(\'includes/config.PHP\');
if (isset($_POST[\'esubmit\']) ){
$checkBox=$_POST[\'delete\'];
echo $checkBox;
}//main one
if (isset($_POST[\'esubmit\']) ){
} else { $clickeditid=$_GET[\"id\"];
$_SESSION[\'eid\']= $clickeditid ;
}
?>
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<Meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title>Untitled Document</title>
<link href=\"css/css.css\" rel=\"stylesheet\" type=\"text/css\" />
<style rel=\"stylesheet\" type=\"text/css\">
input {
border-style: solid;
border-color: #000000;
border-width: 1px;
background-color: #ffffff;
}
</style>
<script src=\"js/css_browser_selector.js\" type=\"text/javascript\"></script>
</head>
<body>
<?PHP
include(\'includes/topmenu.PHP\');//top menu
echo \'<br />\';
include(\'includes/usermenu.PHP\');///bcoz of this menu error occurs
////////////////////
include(\'includes/edit_img_menu.PHP\');
?>
<form id=\"form1\" name=\"form1\" method=\"post\" action=\"editimg.PHP?id=<?PHP echo $_SESSION[\'eid\'];?>\">
<table align=\"center\" width=\"70%\" cellspacing=\"0\">
<tr>
<td colspan=\"3\" align=\"center\" bgcolor=\"#FFFFFF\"></td>
</tr>
<tr>
<td colspan=\"3\" align=\"center\" bgcolor=\"#FFFFFF\"><?PHP
$imgcheck=MysqL_query(\"
SELECT *
FROM `images`
WHERE `deal_id` =$_SESSION[eid]
LIMIT 0,30
\");
$numimgcheck=MysqL_num_rows($imgcheck);
if($numimgcheck==0){echo \'<span style=color:#ff0000; >No pictures uploaded</span>\';}
while ($rowimg2= MysqL_fetch_array($imgcheck)){
$imgname=$rowimg2[\'name\'];
{
echo \' <a href=\"users/\'.$_SESSION[\'userid\'].\'/images/\'.$imgname.\'\" rel=\"lightBox[slide]\" caption=\".\">\';
}
{ echo \'<img src=\"users/\'.$_SESSION[\'userid\'].\'/images/thumbs/\'.$imgname.\'\" border=\"0\" />\';}
{ echo \'</a><input type=\"checkBox\" name=\"delete\" id=\"delete\" value=\"\'.$imgname.\'\">
\';}
}
?></td>
</tr>
<tr>
<td colspan=\"3\" align=\"center\" bgcolor=\"#FFFFFF\"> </td>
</tr>
<tr>
<td colspan=\"3\" align=\"center\" bgcolor=\"#95F8FD\"><input name=\"esubmit\" type=\"submit\" class=\"red\" id=\"esubmit\" value=\"Delete selected images\" /></td>
</tr>
<tr>
<td width=\"89\"> </td>
<td colspan=\"2\"> </td>
</tr>
</table>
</form>
</body>
</html>
解决方法
您必须创建一个表单以提交选中的复选框的数据,并使用php代码处理提交的结果:如果要将php代码放在同一页上,则可以检查POST变量中是否有任何数据,并且创建一个SQL查询以删除相应的图片。
您可以在此处找到文档齐全的教程:http://sharemyphp.wordpress.com/2009/12/21/ajax-jquery-php-multiple-delete-item-with-check-box/
问候,
最高
, 我使用以下代码在管理面板中删除图像。我将文件另存为
deletephoto.php
。请注意,此脚本无需登录即可工作。您需要进行一些更改以适合您的用例
<form method=\"post\" action=\"deletepho.php\">
<center>
<input type=\"submit\" value=\"Delete\" name=\"Delete\">
</center>
<?php
\\\\lets assign the folder name in $title
\\\\You can assign any name
$title= \"test\";
\\*$directory corresponds to whole path. Edit to your preference. (i assume u store your
images in directory named \"images\") */
$directory = \"$title/images\";
\\\\The array specifies the format of the files
$allowed_types=array(\'jpg\',\'jpeg\',\'gif\',\'png\');
$file_parts=array();
$ext=\'\';
$title=\'\';
$i=0;
$dir_handle = @opendir($directory) or die(\"There is an error with your image directory!\");
while ($file = readdir($dir_handle))
{
if($file==\'.\' || $file == \'..\') continue;
$file_parts = explode(\'.\',$file);
$ext = strtolower(array_pop($file_parts));
$title = implode(\'.\',$file_parts);
$title = htmlspecialchars($title);
$nomargin=\'\';
if(in_array($ext,$allowed_types))
{
if(($i+1)%4==0)
$nomargin=\'nomargin\';
echo\'
<div id=\"picture\">
<img src=\"\'.$directory.\'/\'.$file.\'\" width=\"150\" height=\"150\"><br>
Select <input type=\"checkbox\" value=\"\'.$directory.\'/\'.$file.\'\" name=\"imgfile[]\">
\\* I specified input name as an array . So that we can store in an array and delete it.*/
</div>\';
}
$i++;
}
closedir($dir_handle);
\\\\Now we have the list of images within form elements
?>
</form>
现在,这里是删除照片的实际代码。我将其另存为deletepho.php
。
$file = $_REQUEST[\'imgfile\'];
$num_files=count($file);
for($i=0;$i<$num_files;$i++)
{
unlink (\"$file[$i]\");
}
echo \"Images successfully deleted.Go <a href=\'deletephoto.php\'>back</a>\";