how to implement my searchbar on php generated table

how to implement my searchbar on php generated table

220061220061 Posts: 1Questions: 1Answers: 0

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

  • kthorngrenkthorngren Posts: 21,343Questions: 26Answers: 4,954

    It looks like you are creating a tbody for each row in your while loop. As the HTML docs state Datatables supports only one tbody. In your case I believe Datatables will find only one row. The info element probably has something like Showing 1 to 1 of 1 entries. Move the tbody creation outside the loop so only one is created.

    Kevin

Sign In or Register to comment.