我有一个用PHP填充的html表,现在已经填充了它,并且它有一个名为' update'的按钮,每行还有一个字段,其中包含' client_id&# 39;还有一些字段有文本框。
我现在要做的是,如果用户点击“更新”,它将仅发布该行的那些值...我怎么能这样做?当他们点击&#时39;更新'它会发布所有行的所有字段吗?我只想要点击更新按钮的行。
以下代码
print("<table id='results'><tr><th>ID</th><th>Image</th><th>Name</th><th>Price</th><th>Price Label</th><th>Description</th><th>Update</th></tr>");
while($row2 = mysql_fetch_array( $result2 )){
$client_id = $row2["client_id"];
$client_name = $row2["client_name"];
$client_disc = $row2["client_disc"];
$client_price = $row2["client_price"];
$client_image = $row2["client_image"];
$client_price_label = $row2["client_price_label"];
print("<tr>");
print("<td>");
print("<p style='font-size:14px; color:blue; padding:0;'>$client_id</p>");
print("</td>");
print("<td>");
print("<img class='custom_rate' alt='' src='$client_image' />");
print("</td>");
print("<td width='100px'>");
print("<input type='text' value='$client_name' name='clientname'/>");
print("</td>");
print("<td>");
print("<input type='text' value='$client_price' name='clientprice'/>");
print("</td>");
print("<td width='100px'>");
print("<input type='text' value='$client_price_label' name='clientpricelabel'/>");
print("</td>");
print("<td width='100px'>");
print("<textarea cols='15' rows='2' name='description'>$client_desc</textarea>");
print("</td>");
print("<td width='100px'>");
print("<input type='submit' value='Update' name='update'/>");
print("</td>");
print("</tr>");
}
print("</table>");
答案 0 :(得分:1)
您可以将每一行设为表格。但是,这将是无效的HTML。虽然,它仍然有用。
我创建了一些javascript,将行中输入的所有值都拉到一个json对象中,然后通过ajax将该对象发送到服务器。
除非你有更大的应用程序,否则jQuery将是我选择的库。
希望有帮助...
更新:提供示例代码以提交行的json ...
<script>
$(function(){
$( '.submit_button' ).click(function(){
var form_values = {};
$( this ).closest( 'tr' ).find( 'input, select' ).each(function(){
form_values[ $(this).attr('name') ] = $(this).val();
});
if( form_values.undefined ){
delete form_values.undefined;
}
$.post( "/test.php",
form_values,
function(data){
//success
alert( data );
},
"json"
);
});
});
</script>
更新
我对之前的回答不满意,所以我创建了一个独立的html文件来证明它有效。
https://gist.github.com/1367465
你不能像其他人建议的那样将标签包裹起来,因为它会打破表格的html。
答案 1 :(得分:0)
将所有单独的行换行到单独的<form>
标记中。当您提交时,只会发送一个<form>
。
另一种解决方案 - 您可以使用AJAX。
答案 2 :(得分:0)
您必须为每一行创建<form>
,并且操作指向:example.php?client_id=x
。在You PHP脚本中,您可以检查GET Param和更改的值(或者您只使用POST提交的client_id)。
没有别的办法了。
答案 3 :(得分:0)
为每一行创建具有唯一名称/ ID的单独表单。并通过按钮点击提交javascript(发送相应行的表单名称/ ID。)
function submitrow(id)
{
document.forms[id].submit();
}
答案 4 :(得分:0)
我想你想要点击更新按钮的行的id,以便你可以在服务器端操作id。在Javascript中使用函数可能是一个更好的主意
function update (id)
{
}
然后在提交按钮的onClick事件上调用此函数,并将id作为参数传递。
可能这就是你如何做到这一点,但你可以检查语法
print("<input type='submit' value='Update' name='update' onclick=JavaScript:update('$client_id')/>");
将调用更新函数,在请求中设置id的值并提交表单。
答案 5 :(得分:0)
您有几种方法:
答案 6 :(得分:0)
据我所知,您希望通过单击更新按钮来更新单独的记录,您还可以使用jquery .each()
事件来帮助您更新单独的结果。在.each()
的帮助下启动循环并使用更新按钮获取单独的行..但不确定它是否适用于<input type="submit" name="update" value="Update">
使用<input type="button" name="update" value="Update">
答案 7 :(得分:0)
print("<form name="" action="your method to be triggered or url">" method="POST");
print("<tr>");
print("<td>");
print("<p style='font-size:14px; color:blue; padding:0;'>$client_id</p>");
print("</td>");
print("<td>");
print("<img class='custom_rate' alt='' src='$client_image' />");
print("</td>");
print("<td width='100px'>");
print("<input type='text' value='$client_name' name='clientname'/>");
print("</td>");
print("<td>");
print("<input type='text' value='$client_price' name='clientprice'/>");
print("</td>");
print("<td width='100px'>");
print("<input type='text' value='$client_price_label' name='clientpricelabel'/>");
print("</td>");
print("<td width='100px'>");
print("<textarea cols='15' rows='2' name='description'>$client_desc</textarea>");
print("</td>");
print("<td width='100px'>");
print("<input type='submit' value='Update' name='update'/>");
print("</td>");
print("</tr>");
print("</form>");
如果你传递了一个网址,那么你可以连接客户端ID并发送它。