使用php和jquery编辑表

时间:2016-03-17 16:32:45

标签: php ajax

我正在尝试使用php和ajax修改表格中单元格的内容。 内容已在页面中更改但未在数据库中注册的问题。 这是页面index.php:

 <?php
 include 'connexion.php';
 $sql = 'SELECT * FROM liste_user_tbl';
 $result = mysql_query($sql) or die(__LINE__.mysql_error().$sql);

  ?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 <html>
 <head>


<title>Modification "inline" de données</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

<script>

$(function(){


 var message_status = $("#status");

 $("td[contenteditable=true]").blur(function(){

    var field_userid = $(this).attr("id") ;

    var value = $(this).text() ;

    $.post('test1.php' , field_userid + "=" + value, function(data){

        if(data != '')

        {

            message_status.show();

            message_status.text(data);



            setTimeout(function(){message_status.hide()},3000);

        }

       });

       });


   </script>
   </head>

 <body>
 <h1>Utilisateurs</h1>


 <table id="table-utilisateurs">
    <tr>
        <th>Nom</th>
        <th>Prénom</th>

    </tr>

    <?php
    while($user = mysql_fetch_assoc($result))
    {
    ?>
        <tr>
            <td  id="<?php echo $user['id']; ?>" contenteditable="true">
                <?php echo $user['nom']; ?>
            </td>

            <td  id="<?php echo $user['id']; ?>"  contenteditable="true">
                <?php echo $user['prenom']; ?>
            </td>



        </tr>
    <?php
    }
    ?>
  </table>

  </body>
  </html>

 <?php

 mysql_close();

 ?>

这是test1.php:

  <?php
  if(!empty($_POST))

  {



    include "connexion.php";

    foreach($_POST as $field_name => $val)

    {

    //clean post values

    $field_userid = strip_tags(trim($field_name));

    $val = strip_tags(trim(mysql_real_escape_string($val)));



    //from the fieldname:user_id we need to get user_id

    $split_data = explode(':', $field_userid);

    $user_id = $split_data[1];

    $field_name = $split_data[0];

    if(!empty($user_id) && !empty($field_name) && !empty($val))

    {

        //update the values

        mysql_query("UPDATE liste_user_tbl SET $field_name = '$val' WHERE id   = $user_id") or mysql_error();

        echo "Updated";

    } else {

        echo "Invalid Requests";

    }

    }

    } else {

    echo "Invalid Requests";

     }
     ?>

这是我的表:enter image description here

2 个答案:

答案 0 :(得分:0)

首先,代码中没有定义$field_name,这就是为什么在启用调试时查询会产生错误的原因 其次,您的代码非常容易受到SQL注入的攻击。您正在使用用户发布的数据,没有任何过滤,这可能导致丢失整个数据库数据。 第三,你还在使用程序化的php和“old schoool”数据库连接。相反,您可以使用PDOPOO

答案 1 :(得分:0)

使用 的print_r($ _ POST);

接收帖子数据和显示 检查帖子数据是否有问题