Php 来自2个表(数据库)的1个表(html)视图

Php 来自2个表(数据库)的1个表(html)视图,php,html,mysql,Php,Html,Mysql,伙计们。。我真的不知道如何解决这个问题,希望有人能帮助我。我有2个表数据库,我希望它在1个HTML表中查看。。我正在使用PHP,mysql。。这里是示例数据 tbl_taskmain | task_id | task_name | task_status | task_date | taks_period ------------------------------------------------------------------ | 1 | test 1 |

伙计们。。我真的不知道如何解决这个问题,希望有人能帮助我。我有2个表数据库,我希望它在1个HTML表中查看。。我正在使用PHP,mysql。。这里是示例数据

tbl_taskmain

| task_id | task_name  | task_status | task_date    | taks_period
------------------------------------------------------------------
| 1       | test 1     | 1           | 2014-10-03   | 10
| 2       | test 2     | 1           | 2014-11-15   | 15
| 3       | test 3     | 1           | 2014-12-21   | 10
tbl_任务分包

| tasksub_id | task_id | tasksub_name       | tasksub_status | tasksub_date   
-------------------------------------------------------------------------------
| 1          | 1       | tasksub 1 main 1   | 1              | 2014-10-03
| 2          | 1       | tasksub 2 main 1   | 1              | 2014-10-07
| 3          | 1       | tasksub 3 main 1   | 1              | 2014-10-09
| 4          | 2       | tasksub 1 main 2   | 1              | 2014-11-15
| 5          | 2       | tasksub 2 main 2   | 1              | 2014-11-28
| 6          | 3       | tasksub 1 main 3   | 1              | 2014-12-21
| 7          | 3       | tasksub 2 main 3   | 1              | 2014-12-22
| 8          | 3       | tasksub 3 main 3   | 1              | 2014-12-25
| 9          | 3       | tasksub 4 main 3   | 1              | 2014-12-31
我希望上面的两个表数据库中的html表视图都是这样

| # | # | Task Name         | Task Period | Task Date  
-------------------------------------------------------------------------------
| 1 |   | test 1            | 10          | 2014-10-03
|   | 1 | tasksub 1 main 1  |             | 2014-10-03
|   | 2 | tasksub 2 main 1  |             | 2014-10-07
|   | 3 | tasksub 3 main 1  |             | 2014-10-09
| 2 |   | test 2            | 15          | 2014-11-15
|   | 4 | tasksub 1 main 2  |             | 2014-11-15
|   | 5 | tasksub 2 main 2  |             | 2014-11-28
| 3 |   | test 3            | 10          | 2014-12-21
|   | 6 | tasksub 1 main 3  |             | 2014-12-21
|   | 7 | tasksub 2 main 3  |             | 2014-12-22
|   | 8 | tasksub 3 main 3  |             | 2014-12-25
|   | 9 | tasksub 4 main 3  |             | 2014-12-31

有人吗?我需要使用什么查询?我需要一些循环吗?请帮助我。

您可以使用双循环解决此问题:

<table>
<th>
<td>#</td><td>#</td><td>Task Name</td><td>Task Period</td><td>Task Date</td>
</th>
<?php
$dbhost = 'host';
$dbuser = 'user';
$dbpass = 'passwd';
$dbname = 'thedatabase';
$mysqli = new mysqli("$dbhost", "$dbuser", "$dbpass", "$dbname");//logging in

//perhaps do some error handling if the query fails

$result = $mysqli->query('SELECT task_id, task_name, task_period, task_date FROM tbl_taskmain');//query for main tasks
$result->execute();
while($row = mysqli_fetch_array($result)) {//iterate over the main tasks
    echo "<tr><td>$row[0]</td><td></td><td>$row[1]</td><td>$row[2]</td><td>$row[3]</td></tr>"; //write a row to the output
    $subresult = $mysqli->query('SELECT tasksub_id, tasksub_name tasksub_date FROM tbl_tasksub WHERE task_id=?'); //a subquery: all subtasks for the given task id
    $stmt->bind_param("i",$row[0]); //bind the task id
    $subresult->execute();
    while($subrow = mysqli_fetch_array($subresult)) { //iterate over subtasks
        echo "<tr><td></td><td>$subrow[0]</td><td>$subrow[1]</td><td></td><td>$subrow[2]</td></tr>"; //print row
    }
}
mysql_free_result($result);
?>
</table>

我使用给定的数据创建了数据表,并可以使用以下代码生成预期的表

听起来您缺乏这方面所需的PHP和MySQL知识。以下资源可能会有所帮助

// Changes DB details according to your setup
$dbConnection = mysqli_connect('localhost', 'root', 'root', 'task_test');
// Selecting all would be optimal since except status other fields are used
$query = "SELECT * FROM tbl_taskmain LEFT JOIN tbl_tasksub ON tbl_taskmain.task_id = tbl_tasksub.task_id";
$result = mysqli_query($dbConnection, $query);

echo '<table border="1">';
echo "<tr><th>#</th><th>#</th><th>Task Name</th><th>Task Period</th><th>Task Date</th></tr>";

$taskIdCheck = 0;

while ($row = mysqli_fetch_assoc($result)) {
    if ($taskIdCheck != $row['task_id']) { // A new main task
        echo "<tr><td>{$row['task_id']}</td><td></td><td>{$row['task_name']}</td><td>{$row['task_period']}</td><td>{$row['task_date']}</td></tr>";
        echo "<tr><td></td><td>{$row['tasksub_id']}</td><td>{$row['tasksub_name']}</td><td></td><td>{$row['tasksub_date']}</td></tr>"; // First sub task
        $taskIdCheck = $row['task_id'];
    } else { // Sub tasks
        echo "<tr><td></td><td>{$row['tasksub_id']}</td><td>{$row['tasksub_name']}</td><td></td><td>{$row['tasksub_date']}</td></tr>";
    }
}

echo '</table>';