Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách hiển thị dữ liệu từ cơ sở dữ liệu với dải hàng dài động

Trước hết, xin lỗi vì tiếng anh kém của tôi.

Trong truy vấn của bạn, thay vì thực hiện thứ tự theo id_location , thực hiện sắp xếp theo tên thành phần . Bằng cách này, bạn có thể thêm dải hàng động một cách dễ dàng. Tôi chưa thay đổi chương trình kết nối của bạn, nhưng tôi đã thay đổi phần thứ hai của bạn. Hãy kiểm tra. Tôi biết có 3 đến 4 vòng lặp. Nhưng nếu bất kỳ cơ thể nào tìm thấy thuật ngữ tốt hơn, xin vui lòng cho tôi biết.

    $sql1 = "SELECT * FROM Lokasi ORDER BY id_location";
    $stmt1 = $dbc->prepare($sql1);
    $stmt1->execute();

    while ($row1 = $stmt1->fetch(PDO::FETCH_ASSOC)) {
    $location++;
    echo "Location $location : ".$row1['location'];

?>



<?php
    $query = "SELECT * 
                FROM sub_component,
                     component 
               WHERE sub_component.id_component=component.id_component 
                 AND component.id_location='$data[id_location]' 
            ORDER BY component.component_name";
    $stmt = $dbc->prepare($query);
    $stmt->execute();

    # Declare two emty array
    $component     = array(); # Will store the components
    $sub_component = array(); # Will store the sub components

    $loop = 0;

    # Now if any data is fetched from previsous query, then fill
    # the above declared arrays.
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

        $component[$loop]     = $row['component'];
        $sub_component[$loop] = $row['sub_component'];

        $loop = $loop + 1;
    }

    # If no data fetched then I m telling 
    # No data fetched.
    if (!sizeof($component)) {
        echo 'Empty Data';
    } else {

        print "<table width='469px' border='1'>
                    <tr bgcolor='#00FFFF'>
                        <th width='109' class='rounded' scope='col'>Component</th>
                        <th width='109' class='rounded' scope='col'>Sub Component</th>
                    </tr>";

        # Now our main logic starts to print dynamic rowspan

        # Go for a loop.
        # Here the imporant is to use for loop

        $tmp_arr = array();

        $main_assoc_arr = array();

        for ($i = 0; $i < sizeof($sub_component); $i++) {

            array_push($tmp_arr, $sub_component[$i]);

            # If we have reached the last element
            # and in $main_assoc_arr the comonent is not exist
            # Then we will store them as following.
            if (   $i = (sizeof($sub_component)-1)
                && !array_key_exists($component[$i], $main_assoc_arr)) {

                $main_assoc_arr[ $component[$i] ] = array();
                $main_assoc_arr[ $component[$i] ] = $tmp_arr;

                # Restore the array.
                $tmp_arr = array();

                # Also get out of the loop
                break;
            }

            # If the present component is not equal to the 
            # Next component then 
            if ($component[$i] != $component[$i+1]) {

                $main_assoc_arr[ $component[$i] ] = array();
                $main_assoc_arr[ $component[$i] ] = $tmp_arr;

                # Restore the array.
                $tmp_arr = array();
            }
        }

        # Now we are going to print the table with rowspan.
        foreach ($main_assoc_arr as $comp=>$sub_comp) {

            $printed = 0;
            $rowspan = sizeof($sub_comp);

            foreach ($sub_comp as $elm) {

                print "<tr>";

                # Manke sure that the column will not print
                # in each loop as it conatins dynamic array.
                if (!$printed) {

                    print "<td rowspan='$rowspan'>$comp</td>";
                }

                print "<td>$elm</td>"
                print "</tr>";
            }
        }

        print "</table>";

    }
?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy xuất thời gian thiết lập kết nối với PHP mysqli_real_connect ()

  2. Chuyển đổi tem DateTime của MySql thành định dạng Ngày của JavaScript

  3. Zend_Db_Select thứ tự ngẫu nhiên, tương thích trong mssql / mysql

  4. PDO - Chèn mảng lớn vào cơ sở dữ liệu MySQL

  5. MySql không thể làm cho cột auto_increment