我列出了一个表格,其中包含来自MySQL的数据以及要编辑或删除该行的操作。
以下是上图的代码:
<table border="1" class="gridtable">
<th>Client Name</th>
<th>Category</th>
<th>Address</th>
<th>City</th>
<th>Contact Person</th>
<th>Contact Details</th>
<th>Sales Person</th>
<th colspan="2"></th>
<?php
$a=mysql_query("SELECT `clients`.`client-no`, `clients`.`client-name`, `clients`.`client-category`, `clients`.`client-address`, `clients`.`client-city`, `clients`.`client-contact-person`, `clients`.`client-contact-details`, `sales`.`firstname`, `sales`.`lastname`
FROM `clients`
INNER JOIN `sales`
ON `clients`.`sales-id`=`sales`.`sales-id`") or die(mysql_error());
if(mysql_num_rows($a)>0)
{
while($b=mysql_fetch_array($a))
{
echo"<tr><td>".$b['client-name']."</td><td>".$b['client-category']."</td><td>".$b['client-address']."</td><td>".$b['client-city']."</td><td>".$b['client-contact-person']."</td><td>".$b['client-contact-details']."</td><td>".$b['firstname'].' '.$b['lastname']."</td>"; ?>
<td>
<form action="#" method="post">
<input type="hidden" name="edit_client" value="<?php echo $b['client-no']; ?>" />
<input type="image" name="edit_client" value="<?php echo $b['client-no']; ?>" src="images/edit.png" onclick="javascript:editPopup()" title="Edit"/>
</form>
</td>
<td>
<form action="../deletefunction.php" method="post">
<input type="hidden" name="delete_client" value="<?php echo $b['client-no']; ?>" />
<input type="image" name="delete_client" value="<?php echo $b['client-no']; ?>" src="images/delete.png" onclick="return confirm('Are you sure you want to delete this item?')" title="Delete"/>
</form>
</td>
</tr>
<?php
}
}
else
{
?>
<tr><td colspan="6" style="text-align:center; color:#FF0000; font-size:16px;">*No Data Available!*</td></tr>
<?php
}
?>
</table>
<a href="javascript:addClient()" id="addclient"><img src="images/add.png" class="addicon" style=" display:inline;" /></a>
DELETE函数工作正常但编辑不正常。这是<input type=image name=edit_client />
在其onclick
上调用的javascipt函数的代码:
function editPopup()
{
var url = "../editfunction.php";
var width = 700;
var height = 600;
var left = parseInt((screen.availWidth/2) - (width/2));
var top = parseInt((screen.availHeight/2) - (height/2));
var windowFeatures = "width=" + width + ",height=" + height +
",status,resizable,left=" + left + ",top=" + top +
"screenX=" + left + ",screenY=" + top + ",scrollbars=yes";
window.open(url, "subWind", windowFeatures, "POS");
}
基本上,它的作用是在监视器中心的新窗口中弹出editfunction.php
。该页面应显示UPDATE页面,其中包含来自$_POST[edit_client]
的数据。但似乎editfunction.php
无法从第一页读取数据,因为它出错Notice: Undefined index: edit_client in C:\xampp\htdocs\isys\editfunction.php on line 12
-yeah
。这是它的代码:
<?php
require("dbconnect.php");
echo $_POST['edit_client']."-yeah";
//edit client
if(isset($_POST['edit_client']) && !empty($_POST['edit_client']))
{
echo $_POST['edit_client']."-yeah";
//do the update here
}
?>
我做错了什么?我怎样才能做到这一点?感谢。
PS:请不要介意使用mysql_
并继续关注问题本身。
答案 0 :(得分:0)
表单未提交。您正在启动活动,但您没有提交表单。你应该做删除按钮,并让图像按钮将表单提交到editfunction.php页面。
答案 1 :(得分:0)
我想我更了解你现在要做的事情,也许GET
请求在这里并不是那么糟糕。从编辑客户端提交时,请确保POST
。
您需要构建传递给window.open
的网址,如下所示:
editfunction.php?edit_client=1
其中1是客户的数字ID。这可以通过JavaScript以与提供URL相同的方式轻松提供。
var url = "../editfunction.php?edit_client="+client_id;
如果您需要提供多个变量,请用&符号分隔它们:
editfunction.php?edit_client=1&second_var=2
以后所有这些都可以在$_GET
超全球下访问。只需将PHP中的$_POST['edit_client']
更改为$_GET['edit_client']
即可抓住更改。
原始答案完好无损
您的PHP脚本配置为接受POST
请求。
$_POST['edit_client']
在测试它的存在之前调用此变量,因此得到未定义的索引('edit_client'),因为它不在$ _POST数组中。
它不在POST数组中,因为您的代码中没有任何数据将POST任何数据发送到服务器。您使用window.open
但会发送GET请求,除非您在网址(editfunction.php?arg1=val1&arg2=val2
)中对其进行编码,否则您不会发送任何数据。如果要POST数据,则需要使用AJAX。如果你想使用它,JQuery有一个非常简单的AJAX library。
请注意,使用AJAX并不排除使用弹出窗口。例如,您可以从PHP脚本中获取数据作为HTML,并使用JavaScript在弹出窗口中呈现它。
答案 2 :(得分:0)
我以某种方式找到了如何使用onsubmit
的{{1}}函数实现我想要的工作方式:
<form>
我将此代码放在弹出窗口<form action="../editfunction.php" method="post" target="DoSubmit" onsubmit="DoSubmit = window.open('about:blank', 'DoSubmit', windowFeatures, 'POS');">
的头部:
index
谢谢大家的帮助。我非常感谢! :)