how to implement my searchbar on php generated table
how to implement my searchbar on php generated table
Link to test case:
Debugger code (debug.datatables.net):
Error messages shown:
Description of problem:
hey i have this table that i want a searchbar on. but the searchbar is not searching yet what am i doing wrong here?
note im not good with javascript or jquery
<code>
<div class="input-group">
<input type="search" id="UserInput" name="search" class="form-control rounded" placeholder="Bedrijf" aria-label="Search" onkeyup="search()" aria-describedby="search-addon" />
</div>
<div class="bedrijven">
<?php
echo "<br>";
// als er op submit word geklikt gaan we naar searchbar.php backend code
//regel 202 en 216 hebben een datum als nummer
//misschien een search bar of iets om ervoor te zorgen dat gebruikers makkelijker kunnen zoeken
$sql = "SELECT * FROM bedrijven";
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->get_result();
if (mysqli_num_rows($result) == 0){
echo "Er zijn geen bedrijven beschrikbaar";
}else{
echo '<table id="BedrijvenTabel" class="table table-striped">
<thead class="bg-primary">
<tr>
<th>Bedrijfs logo</th>
<th>Bedrijf</th>
<th>Naam eigenaar</th>
<th>Straat</th>
<th>Nummer</th>
<th>Postcode</th>
<th>Plaats</th>
<th>Telefoon</th>
<th>Email</th>
<th>Kiezen</th>
</tr>
<thead>';
while ($row = $result->fetch_assoc()) {
//alleen de tables laten zien met de postcode user heeft ingevoerd
if($_GET['postcode']==$row['postcode']){
echo '<tbody>
<tr>';
//check of er een bedrijfslogo is
if (empty($row['bedrijfs_logo'])){
echo '<td hidden class="bedrijf">'. $row['bedrijf_ID'] . '</td>';
echo '<td></td>';
}else{
echo '<td hidden class="bedrijf">'. $row['bedrijf_ID']. '</td>';
echo '<td><img src="'.$row['bedrijfs_logo'].'" alt="Bedrijfs logo" height="50" width="200"></td>';
}
echo '<td class="bedrijf">'.$row['bedrijf'].'</td>';
echo '<td class="bedrijf"> '.$row['naam_eigenaar'].'</td>';
echo '<td class="bedrijf"> '.$row['straat'].'</td>';
echo '<td class="bedrijf"> '.$row['nummer'].'</td>';
echo '<td class="bedrijf"> '.$row['postcode'].'</td>';
echo '<td class="bedrijf"> '.$row['plaats'].'</td>';
echo '<td class="bedrijf"> '.$row['email'].'</td>';
echo '<td class="bedrijf"> '.$row['telefoon'].'</td>';
echo "<td class='bedrijf'>
<a class='btn btn-primary' href='submitform.php?bedrijf_ID=".$row['bedrijf_ID']."'role='button'> Selecteren </a>
</td>
</tr>
</tbody>";
}
}
echo '</table>';
}
?>
</div>
<br>
<script>
$(document).ready( search () {
$('#BedrijvenTabel').DataTable();
} );
</script>
</code>
Answers
It looks like you are creating a
tbody
for each row in your while loop. As the HTML docs state Datatables supports only onetbody
. In your case I believe Datatables will find only one row. The info element probably has something likeShowing 1 to 1 of 1 entries
. Move thetbody
creation outside the loop so only one is created.Kevin