实时更新可搜索数据库MYSQL和PHP


Live Update Searchable Database MYSQL and PHP

Tony,更新后的代码如下所示,它不允许我对此发表评论,所以我编辑了上一篇文章,下面的代码没有返回任何结果或错误,它只是重新加载页面。我在代码中看到的唯一问题是,我需要能够根据所有表标题、评级、名称、面积等进行搜索。我有一个数据表脚本,可以实时更新表的结果,但这不适用于PHP表,我不确定我应该如何使其适用于数据表,因为我以前从未使用过它:

updated code:
<html>
<head>
<body>
<style>
table { 
color: #333; /* Lighten up font color */
font-family: Helvetica, Arial, sans-serif; /* Nicer font */
width: 100%; 
border-collapse: 
collapse; border-spacing: 0; 
}
td, th { border: 1px solid #00000; height: 30px; } /* Make cells a bit taller */
th {
background: #F3F3F3; /* Light grey background */
font-weight: bold; /* Make sure they're bold */
}
td {
background: #FAFAFA; /* Lighter grey background */
text-align: center; /* Center our text */
}
</style>
<script type="text/javascript" language="javascript" src="http://wcfcourier.com/app/special/data_tables/media/js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="http://wcfcourier.com/app/special/data_tables/media/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" charset="iso-8859-1">

$(document).ready( function(){
    $('#five_year').dataTable({
    "iDisplayLength": 300,
    "aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]]
    });
$(document).ready(function() {
    // Setup - add a text input to each footer cell
    $('#five-year tfoot th').each( function () {
        var title = $('#five_year thead th').eq( $(this).index() ).text();
        $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
    } );
    // DataTable
    var table = $('#five_year').DataTable();
    // Apply the search
    table.columns().eq( 0 ).each( function ( colIdx ) {
        $( 'input', table.column( colIdx ).footer() ).on( 'keyup change', function () {
            table
                .column( colIdx )
                .search( this.value )
                .draw();
        } );
    } );
});
} );

$().ready(function() {
    var regEx = /('w+([-+.']'w+)*@'w+([-.]'w+)*'.'w+([-.]'w+)*)/;
    $("table td").filter(function() {
        return $(this).html().match(regEx);
    }).each(function() {
        $(this).html($(this).html().replace(regEx, "<a href='"mailto:$1'">$1</a>"));
    });
});
</script>
<form action="index.php" method="post">
  <input type="text" name="search" placeholder="Search...." />
  <input type="submit" value=">>" />
</form>
<?php
$con=mysqli_connect("localhost","root","windows11","main");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM `users` ORDER BY ID asc, Name asc") or die(mysqli_error($con));
echo 
"<table border=1>
<tr>
<th>Rating</th>
<th>Name</th>
<th>Discipline</th>
<th>Rate</th>
<th>Area</th>
<th>Number</th>
<th>Email</th>
</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['Rating'] . "</td>";
echo "<td>" . $row['Name'] . "</td>";
echo "<td>" . $row['Discipline'] . "</td>";
echo "<td>" . $row['Rate'] . "</td>";
echo "<td>" . $row['Area'] . "</td>";
echo "<td>" . $row['Number'] . "</td>";
echo "<td>" . $row['Email'] . "</td>";
echo "</tr>";
echo "</form>";
}
// If there is a search variable try to search database
if( isset( $_POST['search'] ) ) {
                $searchq = $_POST['search'];
                $searchq = preg_replace( "#[^0-9a-z]#i", "", $searchq );
                $sql = "SELECT * FROM `users` WHERE `Rating` LIKE '%$searchq%';";
                if ( $result = mysqli_query( $conn, $sql ) ) {
                    if ( mysqli_num_rows( $result ) > 0 ) {
                         echo '
                         <table class="hoverTable">
                            <tr>
                                <th>Rating</th>
                                <th>Name</th>
                                <th>Discipline</th>
                                <th>Rate</th>
                                <th>Area</th>
                                <th>Number</th>
                                <th>Email</th>
                            </tr>';
                             while( $row = $result->fetch_assoc() ) {
                                 echo "
                                 <tr>
                                    <td>".$row["rating"]."</td>
                                    <td>".$row["name"]."</td>
                                    <td>".$row["discipline"]."</td>
                                    <td>".$row["rate"]."</td>
                                    <td>".$row["area"]."</td>
                                    <td>".$row["number"]."</td>
                                    <td>".$row["email"]."</td>
                                </tr>";
                             }
                         echo '
                         </table>';
                    } else {
                        $message = "0 results";
                    }
                }
                mysqli_free_result( $result );
            }
        $conn->close();
?>

</body>
</head>
</html>

这也是使用HTML表的Datatables脚本(使用HTML将所有数据拆分为表行,而不是由PHP脚本回显:

<script type="text/javascript" language="javascript" src="http://wcfcourier.com/app/special/data_tables/media/js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="http://wcfcourier.com/app/special/data_tables/media/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" charset="iso-8859-1">

$(document).ready( function(){
    $('#five_year').dataTable({
    "iDisplayLength": 300,
    "aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]]
    });
$(document).ready(function() {
    // Setup - add a text input to each footer cell
    $('#five-year tfoot th').each( function () {
        var title = $('#five_year thead th').eq( $(this).index() ).text();
        $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
    } );
    // DataTable
    var table = $('#five_year').DataTable();
    // Apply the search
    table.columns().eq( 0 ).each( function ( colIdx ) {
        $( 'input', table.column( colIdx ).footer() ).on( 'keyup change', function () {
            table
                .column( colIdx )
                .search( this.value )
                .draw();
        } );
    } );
});
} );

$().ready(function() {
    var regEx = /('w+([-+.']'w+)*@'w+([-.]'w+)*'.'w+([-.]'w+)*)/;
    $("table td").filter(function() {
        return $(this).html().match(regEx);
    }).each(function() {
        $(this).html($(this).html().replace(regEx, "<a href='"mailto:$1'">$1</a>"));
    });
});
</script>

我可以看到这个datatables代码需要一个表ID来引用,但我无法为PHP代码分配表ID,因为当我尝试时,它只会破坏脚本和页面。

谢谢你的帮助。

我对上一个类项目进行了简单搜索,该项目查询了数据库中的一个表并返回了结果。如果你认为这可能有帮助,你可以修改它并尝试一下:

将搜索放入表格中。

// If there is a search variable try to search database

if(isset($_POST['search'])){

                $searchq = $_POST['search'];
                $searchq = preg_replace( "#[^0-9a-z]#i", "", $searchq );
                $sql = "SELECT * FROM `Customers` WHERE `Client` LIKE '%$searchq%';";
                if ( $result = mysqli_query( $conn, $sql ) ) {
                    if ( mysqli_num_rows( $result ) > 0 ) {
                         echo '
                         <table class="hoverTable">
                            <tr>
                                <th>Rating</th>
                                <th>Name</th>
                                <th>Discipline</th>
                                <th>Rate</th>
                                <th>Area</th>
                                <th>Number</th>
                                <th>Email</th>
                            </tr>';
                             while( $row = $result->fetch_assoc() ) {
                                 echo "
                                 <tr>
                                    <td>".$row["rating"]."</td>
                                    <td>".$row["name"]."</td>
                                    <td>".$row["discipline"]."</td>
                                    <td>".$row["rate"]."</td>
                                    <td>".$row["area"]."</td>
                                    <td>".$row["zipcode"]."</td>
                                    <td>".$row["email"]."</td>
                                </tr>";
                             }
                         echo '
                         </table>';
                    } else {
                        $message = "0 results";
                    }
                }
                mysqli_free_result( $result );
            }
        $conn->close();

?>