如何只保存正在发布的行的id

时间:2011-11-14 07:51:18

标签: php mysql html post

我有一个用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>");

8 个答案:

答案 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)

您有几种方法:

  1. 将每一行设为表格,以便只提交该行
  2. 有一个完全由隐藏字段组成的表单。向每个提交按钮添加一个javascript事件处理程序,该按钮将表中的字段复制到该表单中,并提交
  3. #2的变体,而不是将字段复制到隐藏的表单,构建一个AJAX请求以仅为单行提交数据

答案 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并发送它。