[英]Using MySql data row value as html table headers and divisions in PHP
我想根据 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 | |
+-------+--------------------------+--------------------------+--------------------------+
架构:表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 |
+-------------+------------+------------+------------+------------+
用户正在逐步分配。 user1
和user2
列允许为null
,稍后有人可以输入特定周的用户。
我需要检查 PHP 是否已经分配了一个或两个用户,然后有人可以使用用户 ID 或 null(删除用户)更新一行。 为此,我使用变量$set1
和$set2
以及data-attributes
(稍后与 jQuery 一起使用)告诉我哪一周有用户在user1
或user2
。
我可以用所有必要的数据回显表<th>
。 现在我的问题是如何回显表<td>
。 我需要找到一种方法来为每个用户生成<tr>
和为每个<th>
<td>
,同时匹配用户 ID 值。
因此,如果在<th>
插入的周分配了用户 2,我将在用户 2 行上的<th>
下方的<td>
中添加一个“X”(参见上面的预期结果)。
我在想 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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.