javascript - 如何在 Tabledit jquery 中发送多个标识符

标签 javascript jquery tabledit

我正在使用 Tabledit-jquery 来编辑表格。首先,我设置了一个标识符和多个可编辑列,按照以下方式完全可以正常工作。

https://www.webslesson.info/2017/05/live-table-data-edit-delete-using-tabledit-plugin-in-php.html

现在我想设置两个不起作用的标识符。 如何使用 tabledit 设置多个标识符?

我尝试创建一个用于可编辑的标识符的二维数组。

   identifier:[[1, "id"], [2, "id2"]],
   editable:[[3, 'Session'], [4, 'Grade']],


<script>
$(document).ready(function(){
     $('#editable_table').Tabledit({
      url:'action3.php',
      columns:{
       identifier:[[1, "id"], [2, "id2"]],
       editable:[[3, 'Session'], [4, 'Grade']],
      },
      restoreButton:false,
      deleteButton: false,
         });

});
 </script>

最佳答案

刚刚在网络类(class)中尝试了您的源代码,第一次尝试就成功了。 (老实说,第二次尝试,我只需要将文件 jquery.tabledit.min.js 添加到目录中即可。)

现在关于你的问题。 Tabledit 本身不能使用两个标识符。您可以做的是将两个标识符转储到一列中。我将代码从 webslessons 更改为此目的。因此,我使用了两种标识符的手工序列化,只需将它们放在一起并用分号分隔即可。

$id_ser = $row[0].";".$row[1];

我使用这个“序列化”id 作为显示表格第一列的值。 (php 函数 serialize() 的序列化不起作用,因为该函数生成了引号,而 tabledit 的 INPUT_POST 不能很好地传输这些引号。)在文件“action.php”中,必须“反序列化” $id_ser 返回。这是使用正则表达式实现的:

$id_array = preg_split("/;/",$id_ser);

我将在此处添加更改后的代码。还请确保采用文件“action.php”中的操作“编辑”和“删除”代码。希望有用。

index.php:

<?php
$connect = mysqli_connect("localhost", "root", "", "testing");
$query = "SELECT * FROM tbl_2_ids";
$result = mysqli_query($connect, $query);
?>
<html>
 <head>
          <title>Live Table Data Edit Delete using Tabledit Plugin in PHP</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
          <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />  
          <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src="jquery.tabledit.min.js"></script>
    </head>
    <body>
  <div class="container">
   <br />
   <br />
   <br />
            <div class="table-responsive">
    <h3 align="center">Live Table Data Edit Delete using Tabledit Plugin in PHP</h3><br />
    <table id="editable_table" class="table table-bordered table-striped">
     <thead>
      <tr>
       <th>ID1;ID2</th>
       <th>Last Name</th>
      </tr>
     </thead>
     <tbody>
     <?php
     while($row = mysqli_fetch_array($result))
     {
      $id_ser = $row[0].";".$row[1];  # extract first and second entry of the row.
      echo '
      <tr>
       <td>'.$id_ser.'</td>
       <td>'.$row["last_name"].'</td>
      </tr>
      ';
     }
     ?>
     </tbody>
    </table>
   </div>
  </div>
 </body>
</html>

action.php:

<?php
//action.php
$connect = mysqli_connect('localhost', 'root', '', 'testing');

$input = filter_input_array(INPUT_POST);

$id_ser = $input["id_ser"];
$id_array = preg_split("/;/",$id_ser);

if($input["action"] === 'edit')
{
 $last_name = mysqli_real_escape_string($connect, $input["last_name"]);
 $query = "
 UPDATE tbl_2_ids
 SET last_name = '".$last_name."'
 WHERE id0 = '".$id_array[0]."'
 AND id1 = '".$id_array[1]."'
 ";
 mysqli_query($connect, $query);

}
if($input["action"] === 'delete')
{
 $query = "
 DELETE FROM tbl_2_ids
 WHERE id0 = '".$id_array[0]."'
 AND id1 = '".$id_array[1]."'
 ";
 mysqli_query($connect, $query);
}

echo json_encode($input);

?>

为了使用表“tbl_2_ids”创建数据库“testing”,您可以使用以下批处理文件“database_mysql.batch”。 对于mysql,通过命令执行批处理文件:

mysql -u root -p < database_mysql.batch

database_mysql.batch:

--
-- Database: `testing`
--

-- --------------------------------------------------------

CREATE DATABASE IF NOT EXISTS testing;
USE testing;

--
-- Table structure for table `tbl_2ids`
--

CREATE TABLE IF NOT EXISTS `tbl_2_ids` (
  `id0` int(11) NOT NULL,
  `id1` int(11) NOT NULL,
  `last_name` varchar(250) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;
DELETE FROM tbl_2_ids;

--
-- Dumping data for table `tbl_user`
--

INSERT INTO `tbl_2_ids` (`id0`, `id1`, `last_name`) VALUES
(2, 20, 'Smith'),
(3, 21, 'Ferrari'),
(4, 22, 'Mitten'),
(5, 23, 'Noyes'),
(6, 24, 'William'),
(7, 25, 'Hise'),
(8, 26, 'Aguinaldo'),
(9, 27, 'Goad'),
(10, 28, 'Simons'),
(11, 29, 'Huber'),
(12, 30, 'Soliz'),
(13, 31, 'Dismuke'),
(14, 32, 'Thomas');

如果有密码,您必须在命令行上给出它。另外,如果您配置了 root 密码,则在文件“index.php”和“action.php”中,您必须提供 root 身份验证,而不是文件中的“”。

关于javascript - 如何在 Tabledit jquery 中发送多个标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273224/

相关文章:

javascript - 如何正确使用后退按钮?

javascript - 通过原型(prototype)对象或构造函数设置方法,有什么区别?

javascript - 从带有符号的字符串中获取数组中的下一个键

javascript - 在 javascript 中检索隐藏字段值的问题

javascript - 如何使用 jquery 填充选择列表?

javascript - jQuery 加载不适用于某些 .txt 文件

javascript - jquery-tabledit 不发送标识符

javascript - Fabric JS |如果包含的对象改变大小,如何调整 Fabric.Group 的大小