【发布时间】:2012-05-15 23:37:51
【问题描述】:
我的 php 代码有问题。我目前正在做的是使用 iframe 将 javascript 消息与 phe 脚本链接。在 javascript 函数 stopImageUpload 中,我已经声明如果成功 = 2,则显示文件上传的取消消息。
所以我在 php 脚本中尝试但未能做的是尝试并声明如果 $result = 2(换句话说,如果成功 = 2 消息出现在 javascript 中),则删除数据库行。如何做到这一点?
下面是表格代码:
var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" +
"Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" +
"<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +
"</p><p class='imagef1_cancel' align='center'><label>" +
"<input type='button' name='imageCancel' class='imageCancel' value='Cancel' /></label>" +
"<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");
下面是 startImageUpload() 函数,它启动文件上传和存储取消按钮函数:
function startImageUpload(imageuploadform, imagefilename){
$('.imagef1_cancel').eq(window.lastUploadImageIndex).find(".imageCancel").on("click", function(event) {
return stopImageUpload(2);
});
return true;
}
下面是 stopImageUpload() 函数,它使用成功和结果显示取消消息:
function stopImageUpload(success, imagefilename){
var result = '';
if (success == 2){
result = '<span class="imagecemsg"> The file upload was canceled!</span><br/><br/>';
} else {
result = '<span class="imageemsg">There was an error during file upload!</span><br/><br/>';
}
return true;
}
最后是 imageupload.php 脚本,它使用 iframe 链接到 QandATable.php(包含上述代码的脚本),这是假设要插入和删除数据库行的位置:
<?php
session_start();
...//connected to DB
$result = 0;
if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
$result = 1;
$imagesql = "INSERT INTO Image (ImageFile)
VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";
mysql_query($imagesql);
}
else
{
$result = 1;
$imagesql = "INSERT INTO Image (ImageFile)
VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";
mysql_query($imagesql);
}
if ($result == 2) {
$imagecancelsql = "DELETE FROM Image
WHERE ImageFile = 'ImageFiles/".
mysql_real_escape_string($_FILES['fileImage']['name'])."'";
mysql_query($imagecancelsql);
}
mysql_close();
?>
<script language="javascript" type="text/javascript">window.top.stopImageUpload(<?php echo $result ? 'true' : 'false'; ?>, '<?php echo $_FILES['fileImage']['name'] ?>');</script>
【问题讨论】:
-
尝试添加一个星号?这应该很明显,但是当将 $result 设置为零时,您希望它在下一行中究竟是 2 吗?
-
这就是问题所在。我怎样才能确定当 javascript 中的 success = 2 时,我可以以某种方式在 php 中使用 $result 来匹配这个数字,然后才能执行它的 delete db row 命令
-
伙计们,如果您查看上面的代码,这就是我想要做的。此刻,如果用户单击“上传”按钮,它会插入一个由运行良好的文件名组成的数据库行。但是,如果用户在文件上传时单击“取消”按钮,那么我希望它删除包含文件名的数据库行,但这不起作用
-
抱歉,上传功能不是这样。您不会在上传过程中取消并让服务器上的脚本突然停止并执行其他操作。在上传完成之前,服务器端脚本不会运行。
标签: php javascript jquery