gpt4 book ai didi

php - 在 PHP 中使用 MySql 数据行值作为 html 表头和分区

转载 作者:行者123 更新时间:2023-11-29 07:22:49 24 4
gpt4 key购买 nike

我想根据 MySql 数据动态生成一个 HTML 表格,用户可以直接在页面上更新表格(通过 JQuery 和 Ajax)。将在表 schedule 中一次性插入全年的周行.每周分配给的用户不超过 2 个。可以随时删除用户并替换为另一个用户。每行的第一个表列包含所有用户,然后每列代表全年从星期二到星期二的一周。预期的 HTML 结果:

+-------+--------------------------+--------------------------+--------------------------+
| Users | 2019-03-19 to 2019-03-26 | 2019-03-26 to 2019-04-02 | 2019-04-02 to 2019-04-09 |
+-------+--------------------------+--------------------------+--------------------------+
| 1 | | | |
+-------+--------------------------+--------------------------+--------------------------+
| 2 | X | X | |
+-------+--------------------------+--------------------------+--------------------------+
| 3 | X | | |
+-------+--------------------------+--------------------------+--------------------------+
| 4 | | | |
+-------+--------------------------+--------------------------+--------------------------+
| 5 | | X | |
+-------+--------------------------+--------------------------+--------------------------+

架构: table schedule

+-------------+------------+------------+------------+------------+
| schedule_id | user1 | user2 | dateStart | dateEnd |
| PK AUTO_INC | FK int(11) | FK int(11) | date | date |
+-------------+------------+------------+------------+------------+
| 1 | 3 | 2 | 2019-03-19 | 2019-03-26 |
+-------------+------------+------------+------------+------------+
| 2 | 5 | 2 | 2019-03-26 | 2019-04-02 |
+-------------+------------+------------+------------+------------+
| 3 | null | null | 2019-04-02 | 2019-04-09 |
+-------------+------------+------------+------------+------------+

用户正在逐步分配。 user1user2列允许 null稍后有人可以输入特定一周的用户。

我需要检查 PHP 是否已经分配了一个或两个用户,然后有人可以使用用户 ID 或 null(删除用户)更新行。为此,我使用变量 $set1$set2data-attributes (供以后与 jQuery 一起使用)告诉我哪一周有用户在 user1user2 .

我可以回显表格 <th>与所有必要的数据。现在我的问题是如何回显表格 <td> . 我需要找到一种方法来生成 <tr>对于每个用户和 <td>对于每个 <th>同时匹配用户id值。

因此,如果星期插入<th>已分配用户 2,我将在 <td> 中添加一个“X”低于<th>在用户 2 行(见上面的预期结果)。

我在想 myabe 我可以运行另一个 MySql 查询和 while 循环来回显用户并按日期排序吗?

到目前为止我的代码:

// Connect to database decyb
include 'dbconnect.php';

// MySQL query
$getUpdateDispoEnq = "
SELECT dispo_enq.*,
u1.firstName as enq1First,
u1.lastName as enq1Last,
u2.firstName as enq2First,
u2.lastName as enq2Last
FROM dispo_enq
JOIN users u1 ON dispo_enq.userEnq1 = u1.user_id
JOIN users u2 ON dispo_enq.userEnq2 = u2.user_id;";

// Prepared statements
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $getUpdateDispoEnq)){
echo '<div class="red-text" style="margin-top: 1em">SQL error!</div>';
exit;
} else {

mysqli_stmt_execute($stmt);

$results = mysqli_stmt_get_result($stmt);
$resultCheck = mysqli_num_rows($results);

$week = 0;

echo '<table class="dispo-enq">';
echo '<tr>';
echo '<th class="regular"><div><span>Enquêteurs</span></div></th>';
echo '<th class="regular"><div><span>Cellulaire</span></div></th>';

if ($resultCheck > 0) {

while ($row = mysqli_fetch_assoc($results)) {
$enq1 = $row['userEnq1'];
$enq2 = $row['userEnq2'];
$dateStart = $row['dateStart'];
$dateEnd = $row['dateEnd'];
$week++;

// Check if users are set
if ($enq1 > 0){
$set1 = 1;
} else {
$set1 = 0;
}

if ($enq2 > 0){
$set2 = 1;
} else {
$set2 = 0;
}

// Display table headers
echo '<th class="rotate" data-week="'.$week.'" data-enq1="'.$set1.'" data-enq2="'.$set2.'"><div><span>'.$dateStart.' to '.$dateEnd.'</span></div></th>';
}

}

echo '</tr>';
echo '</table>';
exit;
}

最佳答案

您的任务在某种程度上与我的类似,但由于我可以获得我在那里使用的代码,所以我决定在这么短的时间内简单地发布我能从我的大脑中得到的东西。

// MySQL query
$getUpdateDispoEnq = "
SELECT dispo_enq.*, u1.firstName as enq1First, u1.lastName as enq1Last, u2.firstName as enq2First, u2.lastName as enq2Last
FROM dispo_enq
JOIN users u1 ON dispo_enq.userEnq1 = u1.user_id
JOIN users u2 ON dispo_enq.userEnq2 = u2.user_id;";

$html = '';
// Prepared statements
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $getUpdateDispoEnq)){
$html .= '<div class="red-text" style="margin-top: 1em">SQL error!</div>';
exit;
} else {
mysqli_stmt_execute($stmt);

$results = mysqli_stmt_get_result($stmt);
$resultCheck = mysqli_num_rows($results);

$week = $set1 = $set2 = 0;
$dateStart = $dateEnd = '';
$html .= '<table class="dispo-enq"><tr>';
$html .= '<th class="regular"><div><span>Enquêteurs</span></div></th>';
$html .= '<th class="regular"><div><span>Cellulaire</span></div></th>';

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($results)) {
$enq1 = $row['userEnq1'];
$enq2 = $row['userEnq2'];
$dateStart = $row['dateStart'];
$dateEnd = $row['dateEnd'];
$week++;

// Check if users are set
if ($enq1 > 0) $set1 = 1;
if ($enq2 > 0) $set2 = 1;

// Display table headers
$html .= '<th class="rotate" data-week="'.$week.'" data-enq1="'.$set1.'" data-enq2="'.$set2.'">';
$html .= '<div><span>'.$dateStart.' to '.$dateEnd.'</span></div></th>';
}

}
$html .= '</tr>';

$result = mysql_query("SELECT firstName, lastName FROM users");
while ($rows = mysql_fetch_assoc($result)) {
$html .= '<tr>';
$html = '<td>'.$week.'</td>';
foreach ($rows as $row) $html .= '<td>'.$row.'</td>';
$html = '<td>'.$dateStart.'</td>';
$html = '<td>'.$dateEnd.'</td>';
$html .= '</tr>';
}

$html .= '</table>';
exit;
}

return $html;

关于php - 在 PHP 中使用 MySql 数据行值作为 html 表头和分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55310254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com