您好,我有带datatables jquery插件的表。我在页脚的index.php中添加了脚本(使用switch加载了页面)以消除重音,因为我想搜索不带变音符号的内容。该脚本在数据库的字段中不起作用,但是当我添加以回显新行时-因此在此行中一切正常。

这是我的正文代码的一部分:

  $stmt = sqlsrv_query( $conn, $sql );
  if( $stmt === false) {
      die( print_r( sqlsrv_errors(), true) );
  }
  echo "<div class='container'>

        <h5>Heading</h5>


      <table id='tabulka_kariet' class='table table-bordered'>
        <thead>
          <tr>
            <th>Kód karty</th>
            <th>Názov karty</th>
            <th>Špec 1 </th>
            <th>Špec 2 </th>
            <th>Špec 3 </th>
            <th>Špec 4 </th>


          </tr>
        </thead>

        <tfoot>
          <tr>
            <th>Kód karty</th>
            <th>Názov karty</th>
            <th>Špec 1 </th>
            <th>Špec 2 </th>
            <th>Špec 3 </th>
            <th>Špec 4 </th>

          </tr>
        </tfoot>
      <tbody>
                  <tr>
              <td>mála</td>
              <td>očivá</td>
              <td>lólo</td>
              <td>šesť</td>
              <td>nedeľa</td>
              <td>ľščťžýáíé</td>
            </tr>";


   while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
  echo "<tr>";

  echo "<td>" . $row['Code'] . "</td>";
  echo "<td><a href=\"detail.php?id=" . $row['Id'] . " \">" . $row['Name'] . "</td>";
  echo "<td>" . $row['Specification'] . "</td>";
  echo "<td>" . $row['Specification2'] . "</td>";
  echo "<td>" . $row['Specification3'] . "</td>";
  echo "<td>" . $row['Specification4'] . "</td>";

  echo "</tr>";
  }
  echo "</tbody></table>";


   sqlsrv_free_stmt( $stmt);

  ?>


这是页脚中的脚本:

      <script>
      $(document).ready( function () {
      jQuery.fn.DataTable.ext.type.search.string = function ( data ) {
         return ! data ?
          '' :
          typeof data === 'string' ?
              data
                  .replace( /έ/g, 'ε' )
                  .replace( /[ύϋΰ]/g, 'υ' )
                  .replace( /ό/g, 'ο' )
                  .replace( /ώ/g, 'ω' )
                  .replace( /ά/g, 'α' )
                  .replace( /[ίϊΐ]/g, 'ι' )
                  .replace( /ή/g, 'η' )
                  .replace( /\n/g, ' ' )
                  .replace( /[áàäâ]/g, 'a' )
                  .replace( /[éÉěĚèêëÈÊË]/g, 'e')
                  .replace( /[íìïî]/g, 'i' )
                  .replace( /[óòöô]/g, 'o' )
                  .replace( /[ùüûúÚůŮ]/g, 'u' )
                  .replace( /[ľĽ]/g, 'l')
                  .replace( /[šŠ]/g, 's')
                  .replace( /[čČçÇ]/g, 'c')
                  .replace( /[řŘ]/g, 'r')
                  .replace( /[ťŤ]/g, 't')
                  .replace( /[žŽ]/g, 'z')
                  .replace( /[ýÝ]/g, 'y')
                  .replace( /[ďĎ]/g, 'd')
                  .replace( /[ňŇ]/g, 'n') :

              data;
  };
    var table = $('#tabulka_kariet').DataTable();

  } );
  </script>


2.问题是,该脚本在带空格的空字段中不起作用。因此,在该列中,此搜索无效。也许会有问题,所以问题是如何防止DB ...?在每个字段中使用if条件吗?有关此问题的更多信息here

几天前与我相似的question
感谢您的回答:)

最佳答案

我回答了另一个问题,但我也在这里写下了答案。

为了解决口音中和插件的问题,我将添加到jQuery.fn.DataTable.ext.type.search.string的相同方法添加到jQuery.fn.DataTable.ext.type.search.html

您可以在这里看到:https://jsfiddle.net/ghsmaniotto/24n05tas/

我按照https://github.com/DataTables/Plugins/blob/master/filtering/type-based/accent-neutralise.js

关于php - 数据表中的重音中和后如何在数据库中进行jQuery搜索-不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46665426/

10-15 13:02
查看更多