How to sort MySql rows of HTML table headers

2.2k Views Asked by At

I have an html table that contains data retrieved from this sql statement:

$sql = "SELECT log_date, log_id, log_time, network_protocal, client_name, client_ip FROM log_table";

The HTML is:

<div class="container">

<table class="table table-striped">
    <tr>
        <td>Date</td>
        <td>Time</a></td>
        <td>Network Protocol</td>
        <td>Client Name</td>
        <td>Client IP</td>
    </tr>
    <?php foreach ($logs as $log) { ?>
        <tr>
            <td><?php if (isset($log->log_date)) echo (string)$log->log_date; ?></td>
            <td><?php if (isset($log->log_time)) echo (string)$log->log_time; ?></td>
            <td><?php if (isset($log->network_protocal)) echo (string)$log->network_protocal; ?></td>
            <td><?php if (isset($log->client_name)) echo (string)$log->client_name; ?></td>
            <td><?php if (isset($log->client_ip)) echo (string)$log->client_ip; ?></td>
        </tr>
    <?php } ?>
</table>

I would like to setup ascending and descending sort functionality by clicking on the table headers but I can't seem to find a simple solution for this. Can someone point me in the right direction?

1

There are 1 best solutions below

0
On BEST ANSWER
here the solution hope this will help you

<?php


$sql = "SELECT log_date, log_id, log_time, network_protocal, client_name, client_ip
 FROM log_table $sort";




$sort = "";
    if(isset($_GET['sort'])) {
        switch ($_GET['sort'] ) {
        case 0: 
                    $sort = " ORDER BY log_date ASC"; 
                    break;
                     case 1: 
                    $sort = " ORDER BY log_date DESC"; 
                    break;
                     case 2: 
                    $sort = " ORDER BY log_time ASC"; 
                    break;
                     case 3: 
                    $sort = " ORDER BY log_time DESC"; 
                    break;
                     case 4: 
                    $sort = " ORDER BY network_protocal ASC"; 
                    break;
                    case 5: 
                    $sort = " ORDER BY network_protocal DESC"; 
                    break;
                    case 6: 
                    $sort = " ORDER BY client_name ASC"; 
                    break;
                    case 7: 
                    $sort = " ORDER BY client_name DESC"; 
                    break;
                    case 8: 
                    $sort = " ORDER BY client_ip ASC"; 
                    break;
                    case 9: 
                    $sort = " ORDER BY client_ip DESC"; 
                    break;


        }
    }



    ?>



    <div class="container">

    <table class="table table-striped">
    <tr>
    <td>Date</td>
    <td>Time</a></td>
    <td>Network Protocol</td>
    <td>Client Name</td>
    <td>Client IP</td>
    </tr>
    <?php foreach ($logs as $log) { ?>
    <tr>
        <td>
    <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=0";?>" >&#9650;</a>
    <?php if (isset($log->log_date)) echo (string)$log->log_date; ?>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=1";?>" >&#9660;</a>
        </td>
        <td>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=2";?>" >&#9650;</a>
    <?php if (isset($log->log_time)) echo (string)$log->log_time; ?>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=3";?>" >&#9660</a>
        </td>
        <td>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=4";?>" >&#9650;</a>
    <?php if (isset($log->network_protocal)) echo (string)$log->network_protocal; ?>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=5";?>" >&#9660</a>
        </td>
        <td>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=6";?>" >&#9650;</a>
    <?php if (isset($log->client_name)) echo (string)$log->client_name; ?>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=7";?>" >&#9660;</a>
        </td>
        <td>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=8";?>" >&#9650;</a>
        <?php if (isset($log->client_ip)) echo (string)$log->client_ip; ?>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=9";?>" >&#9660</a>
        </td>
        </tr>
        <?php } ?>
        </table>