doulangpeng3933 2011-12-22 15:01
浏览 43
已采纳

形式困难的多个提交按钮

I wonder whether someone may be able to help me please.

I've put together this form which, if you scroll to the bottom of the page, has multiple submission buttons. i.e 'Submit', 'Deleted selected image' and 'View Selected Image'.

I posted a query on this site yesterday here, about about how to go about dealing with multiple 'submission' buttons and received some great advice.

I've tried to implement the advice I was given, but I just can't seem to get this to work. As the guidance suggested, I've added a name to each button and tried to call that through the PHP script, but all that happens is the page refreshes as if submitting the whole page, rather, than for example, being able to view the selected file.

I just wondered whether someone could perhaps take a look at this please and let me know where I'm going wrong.

Please find my PHP code & Form script below

 <?php
    $db_host = 'host'; 
    $db_user = 'username';
    $db_pwd = 'password';

    $database = 'databasename';
    $table = 'images';
    // use the same name as SQL table

    if (!mysql_connect($db_host, $db_user, $db_pwd)) 
die("Can't connect to database"); 

if (!mysql_select_db($database)) 
die("Can't select database"); 

// This function makes usage of 
// $_GET, $_POST, etc... variables 
// completly safe in SQL queries 
function sql_safe($s) 
{ 
if (get_magic_quotes_gpc()) 
$s = stripslashes($s); 

return mysql_real_escape_string($s); 
} 

// If user pressed submit in one of the forms 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
if (!isset($_POST["action"])) 
{ 
// cleaning title field 
$title = trim(sql_safe($_POST['title'])); 

if ($title == '') // if title is not set 
$title = '(No Title Provided)';// use (empty title) string 

//print_r($_FILES);exit; 

if($_FILES["photo"]["error"] >= 4)  {          
$msg = '<b>Error!</b> - You <b> must </b> select a file before clicking the <b> "Upload This Image" </b> button. Please try again.';         
} 
else

if (isset($_FILES['photo'])) 
{ 
list($width, $height, $imtype, $attr) = getimagesize($_FILES['photo']['tmp_name']);

if ($imtype == 3) // cheking image type 
$ext="png"; // to use it later in HTTP headers 
elseif ($imtype == 2) 
$ext="jpeg"; 
elseif ($imtype == 1) 
$ext="gif"; 
else 
$msg = '<b> Error! </b> - The image that you attempted to upload is not in the correct format. The file format <b> must </b> be one of the following: <b> "gif", "jpeg" </b> or <b> "png" </b>. Please try again.'; 

if($_FILES["photo"]["size"]/1150000 >= 1)  {          
$msg = '<b> Error! </b> - The file that you are attempting to upload is greater than the prescribed <b> 1MB </b> limit. Please try again.';         
} 

if (!isset($msg)) // If there was no error 
{ 
$data = file_get_contents($_FILES['photo']['tmp_name']); 
$data = mysql_real_escape_string($data); 
// Preparing data to be used in MySQL query 

mysql_query("INSERT INTO {$table} 
SET ext='$ext', title='$title', 
data='$data'"); 

$msg = '<b> Success! </b> - Your image has been uploaded'; 
} 
} 
elseif (isset($_GET['title'])) // isset(..title) needed 
$msg = 'Error: file not loaded';// to make sure we've using 
// upload form, not form 
// for deletion 

if (isset($_POST['deleteimage'])) // If used selected some photo to delete 
{ // in 'uploaded images form'; 
$imageid = intval($_POST['del']); 
mysql_query("DELETE FROM {$table} WHERE imageid=$imageid"); 
$msg = 'The image which you selected has now been deleted!'; 
} 

if (isset($_POST['viewimage'])) // If used selected some photo to delete 
{ // in 'uploaded images form'; 
$imageid = intval($_POST['view']); 
mysql_query("SELECT ext, data FROM {$table} WHERE imageid=$imageid"); 

if(mysql_num_rows($result) == 1) 
{ 
$image = $row['myimage']; 
header("Content-type: image/gif"); // or whatever 
print $image; 
exit; 
} 
} 
} 
else 
{ 
$imageid = intval($_POST['del']); 

if ($_POST["action"] == "view") 
{ 
$result = mysql_query("SELECT ext, UNIX_TIMESTAMP(imagetime), data 
FROM {$table} 
WHERE imageid=$imageid LIMIT 1"); 

if (mysql_num_rows($result) == 0) 
die('no image'); 

list($ext, $imagetime, $data) = mysql_fetch_row($result); 

$send_304 = false; 
if (php_sapi_name() == 'apache') { 
// if our web server is apache 
// we get check HTTP 
// If-Modified-Since header 
// and do not send image 
// if there is a cached version 

$ar = apache_request_headers(); 
if (isset($ar['If-Modified-Since']) && // If-Modified-Since should exists 
($ar['If-Modified-Since'] != '') && // not empty 
(strtotime($ar['If-Modified-Since']) >= $imagetime)) // and grater than 
$send_304 = true; // imagetime 
} 

if ($send_304) 
{ 
// Sending 304 response to browser 
// "Browser, your cached version of image is OK 
// we're not sending anything new to you" 
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ts).' GMT', true, 304); 

exit(); // bye-bye 
} 

// outputing HTTP headers 
header('Content-Length: '.strlen($data)); 
header("Content-type: image/{$ext}"); 

// outputing image 
echo $data; 
exit(); 
} 
else if ($_POST["action"] == "delete") 
{ 
$imageid = intval($_POST['del']); 
mysql_query("DELETE FROM {$table} WHERE imageid=$imageid"); 
$msg = 'The image which you selected has now been deleted!'; 
} 
} 
} 
?> 
    <form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
      <div align="left">
        <!-- This form is used for image deletion -->
        <?php 
$result = mysql_query("SELECT imageid, imagetime, title FROM {$table} ORDER BY imageid DESC"); 
if (mysql_num_rows($result) == 0) // table is empty 
echo '<ul><li>You have no images loaded</li></ul>'; 
else 
{ 
echo '<ul>'; 
while(list($imageid, $imagetime, $title) = mysql_fetch_row($result)) 
{ 
// outputing list 
echo "<li><input type='radio' name='del' title, value='{$imageid}' />"; 
echo "&nbsp;<small>{$title}</small>&nbsp;&nbsp"; 
echo "<small>{$imagetime}</small></li>"; 
} 

echo '</ul>'; 

echo '<input type="submit" value="Delete Selected Image" onclick="document.getElementById(\'action\').value=\'delete\'" />'; 

echo '<input type="submit" value="View Selected Image" onclick="document.getElementById(\'action\').value=\'view\'" />'; 
} 
?>
        <input type="hidden" name="action" id="action" />
        </div>
    </form>

Many thanks and kind regards

  • 写回答

1条回答 默认 最新

  • douchang8219 2011-12-22 15:30
    关注

    Where you're checking the $_POST action, you need to do this:

    if ($_POST["viewimage"] == "View Selected Image") { // Do stuff }
    if ($_POST["deleteimage"] == "Delete Selected Image") { // Do stuff }
    

    Basically, you need to check $_POST['name'] == 'value'

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图