在PHP中使用MySql数据行值作为html表头和分区
我想基于MySql数据动态生成一个HTML表,用户可以直接在页面上更新该表(通过JQuery和Ajax)。 将在表在PHP中使用MySql数据行值作为html表头和分区,php,mysql,Php,Mysql,我想基于MySql数据动态生成一个HTML表,用户可以直接在页面上更新该表(通过JQuery和Ajax)。 将在表计划中一次性插入全年的周行。 每周分配给的用户不超过2个。 用户可以随时删除并替换为其他用户。 每行的第一列表格包含所有用户,然后每列代表一年中从星期二到星期二的一周。预期的HTML结果: +-------+--------------------------+--------------------------+--------------------------+ | Users
计划中一次性插入全年的周行。
每周分配给的用户不超过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_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
以及数据属性
(稍后与jQuery一起使用)告诉我哪个星期有用户在user1
或user2
中
我可以用所有必要的数据回显表
。
现在我的问题是如何回显表
我需要找到一种方法,在匹配用户id值时,为每个用户和每个
查找generete
。
因此,如果在
中插入的一周分配了用户2,我将在用户2行
下方的
中添加一个“X”(请参见上面的预期结果)
我在想myabe我可以运行另一个MySql查询,然后按用户和按日期排序循环回显
到目前为止,我的代码是:
// 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;
}
//连接到数据库decyb
包括“dbconnect.php”;
//MySQL查询
$getUpdateDispoEnq=”
选择dispo_enq.*,
u1.firstName作为enq1First,
u1.lastName作为enq1Last,
u2.firstName作为enq2First,
u2.lastName作为enq2Last
来自dispo_enq
在dispo_enq.userEnq1=u1.user_id上加入用户u1
在dispo_enq.userEnq2=u2.user_id;”上加入用户u2;
//准备好的发言
$stmt=mysqli\u stmt\u init($conn);
如果(!mysqli_stmt_prepare($stmt,$getUpdateDispoEnq)){
回显“SQL错误!”;
出口
}否则{
mysqli_stmt_execute($stmt);
$results=mysqli\u stmt\u get\u result($stmt);
$resultCheck=mysqli_num_行($results);
$week=0;
回声';
回声';
回音“Enquêteurs”;
回声“赛璐珞”;
如果($resultCheck>0){
while($row=mysqli\u fetch\u assoc($results)){
$enq1=$row['userEnq1'];
$enq2=$row['userEnq2'];
$dateStart=$row['dateStart'];
$DATEND=$row['DATEND'];
$week++;
//检查是否设置了用户
如果($enq1>0){
$set1=1;
}否则{
$set1=0;
}
如果($enq2>0){
$set2=1;
}否则{
$set2=0;
}
//显示表格标题
回显“.$dateStart.”到“.$DATEND.”;
}
}
回声';
回声';
出口
}
你的任务在某种程度上与我的任务类似,但由于我可以得到我在那里使用的代码,我决定在这么短的时间内发布我能从大脑中得到的东西
//MySQL查询
$getUpdateDispoEnq=”
选择dispo_enq.*,u1.firstName作为enq1First,u1.lastName作为enq1Last,u2.firstName作为enq2First,u2.lastName作为enq2Last
来自dispo_enq
在dispo_enq.userEnq1=u1.user_id上加入用户u1
在dispo_enq.userEnq2=u2.user_id;”上加入用户u2;
$html='';
//准备好的发言
$stmt=mysqli\u stmt\u init($conn);
如果(!mysqli_stmt_prepare($stmt,$getUpdateDispoEnq)){
$html.='SQL错误!';
出口
}否则{
mysqli_stmt_execute($stmt);
$results=mysqli\u stmt\u get\u result($stmt);
$resultCheck=mysqli_num_行($results);
$week=$set1=$set2=0;
$dateStart=$dateEnd='';
$html.='';
$html.='Enquêteurs';
$html.=‘赛璐珞’;
如果($resultCheck>0){
while($row=mysqli\u fetch\u assoc($results)){
$enq1=$row['userEnq1'];
$enq2=$row['userEnq2'];
$dateStart=$row['dateStart'];
$DATEND=$row['DATEND'];
$week++;
//检查是否设置了用户
如果($enq1>0)$set1=1;
如果($enq2>0)$set2=1;
//显示表格标题
$html.='';
$html.=''.$dateStart.'至'$DATEND';
}
}
$html.='';
$result=mysql_query(“从用户中选择firstName、lastName”);
while($rows=mysql\u fetch\u assoc($result)){
$html.='';
$html='.$week';
foreach($row作为$row的行)$html.=''.$row';
$html='.$dateStart'.';
$html='.$dateEnd';
$html.='';
}
$html.='';
出口
}
返回$html;
谢谢您的回复。我认为第二个查询和foreach循环的方向是相同的。我将不得不修改您的答案,因为您没有按我的预期方式显示行。标题后面的每一行应类似于用户名(重复$week)
。我会尝试类似的方法。因为我没有清楚地了解用户的表格。修改您的问题以包含mysql表,我将修改答案以满足您的需要。与此同时,要有礼貌地向上投票。我的问题不清楚。看到这个了吗
// 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;