简体   繁体   中英

Display data from database vertically in table

<?php

echo "<table class=\"table table-hover table-bordered\">";
echo "<thead>";
echo "<tr>";
$result=mysqli_query($con,"SELECT day FROM time_slot ORDER BY day;");

while($row=mysqli_fetch_array($result))
{
    $days = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
    $day = $row['day']-1;
    $day = $days[$day];
    echo '<th>';
    echo $day;
    echo '</th>';
}
echo "</tr>";
echo "</thead>";

require('../includes/connection.php');

$result=mysqli_query($con,"SELECT * FROM time_slot ORDER BY day DESC;");

while($row=mysqli_fetch_array($result))
{
    echo "<tbody>";  
    echo "<tr>";

This portion of data should be display vertically in table with respect to Day

    //This code to split time into intervals

    $starttime = $row['start_time'];  // your start time
    $endtime = $row['end_time'];  // End time
    $duration = $row['slot_time'];  

    $array_of_time = array ();
    $start_time    = strtotime ($starttime); //change to strtotime
    $end_time      = strtotime ($endtime); //change to strtotime

    $add_mins  = $duration * 60;

    while ($start_time <= $end_time) // loop between time
    {
        echo '<td>';
        echo "<div align=\"center\">";
        print_r(date ("h:i", $start_time) ."-". date("h:i", $start_time += $add_mins));
        //
        echo "</br><input type=\"radio\" name=\"texi\" value=\"1\" ></input>";
        echo '</td>' ;
        echo '</div>';
    }
    echo "</tr>";
    echo "</tbody>";
}            

mysqli_close($con);

echo  "</table>
       </div>
       <input type=\"submit\" value=\"Book Slot\"  class=\"button_drop\">
       </form>";
?>

I want to show time slots vertically with respect to day in table. This is the output of this code:

产量

But I want to display time which is showing horizontally that should be shown vertically. Eg. 1-3, 3-5, 5-7 of first row should be shown below Monday, then next row should be shown below Tuesday and so on.

Try using a query like this:

SELECT day FROM time_slot ORDER BY time_slot, day;

That should get the data in an easier order to process. I can't see your exact data structure but it looks like you should get 7x 01:00-03:00 , then 7x 03:00-05:00 etc. Each set should be in order by day. Then you can just write out your <td> s in the order the data comes from the DB. Keep track of when the day value changes (or just count up to 7) and start a new <tr> at that time.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM