如果有任何合理的意义,我正在尝试对结果进行选择下拉过滤器!
基本上,我有一个表,表中有5行,每行具有不同的日期-每行都有一个下拉列表,其中包含可用于该日期工作的用户列表。我让所有用户正确显示,并且将它过滤到那天不能正常工作的用户的位置-唯一的问题是,它似乎只是为第一个结果而做。
例如;
用户A不能工作10/06/2019&11/06/2019-用户A将不会显示在日期为10/06/2019的行的下拉列表中,而是将显示在日期为11/06/2019的行中
用户B可以处理表格中的所有日期,因此将显示在所有下拉列表中。
我尝试过修改数组和查询,也尝试使用计数器,但没有成功!
if ($available_date == $stk_date) {
$query = "SELECT * FROM user_master WHERE id NOT IN (SELECT UM.id FROM user_master UM JOIN bookings B ON B.id_item = UM.id JOIN stocktakes S ON B.the_date = S.stk_date)";
$result = mysqli_query($connect, $query);
//$row = mysqli_fetch_array($result);
if ($result) {
while ($row = mysqli_fetch_array($result)){
echo "<option value=$row[first_name]>$row[first_name] $row[last_name]</option>'";
}
}
}
else {
$query = "SELECT * FROM user_master";
$result = mysqli_query($connect, $query);
//$row = mysqli_fetch_array($result);
if ($result) {
while ($row = mysqli_fetch_array($result)){
echo "<option value=$row[first_name]>$row[first_name] $row[last_name]</option>'";
}
}
}
echo "</select></td>";
*由于某种原因,我的代码未包括我的第一个回声,它只是select的ID名称,即supervisor_id_1
关于我要去哪里的任何想法吗?
更新:
已删除更新,因为这是另一个问题。
答案 0 :(得分:1)
在IF和ELSE中,您都有
$row = mysqli_fetch_array($result);
这是从结果集中读取第一行,但未在输出中使用。只需删除这两行,请参阅下面的代码获取注释
if ($available_date == $stk_date) {
$query = "SELECT * FROM user_master
WHERE id NOT IN (
SELECT UM.id
FROM user_master UM
JOIN bookings B ON B.id_item = UM.id
JOIN stocktakes S ON B.the_date = S.stk_date)";
$result = mysqli_query($connect, $query);
// remove, its just throwing your first result away
//$row = mysqli_fetch_array($result);
if ($result) {
while ($row = mysqli_fetch_array($result)){
echo "<option value=$row[first_name]>$row[first_name] $row[last_name]</option>'";
}
}
} else {
$query = "SELECT * FROM user_master";
$result = mysqli_query($connect, $query);
// remove, its just throwing your first result away
//$row = mysqli_fetch_array($result);
if ($result) {
while ($row = mysqli_fetch_array($result)){
echo "<option value=$row[first_name]>$row[first_name] $row[last_name]</option>'";
}
}
}
echo "</select></td>";
答案 1 :(得分:0)
您需要在值标签上加上引号:
value="$var"
总而言之,回显末尾有一些引号。
答案 2 :(得分:0)
您需要组合两个字符串或连接变量,而无需组合字符串,它总是返回最后一个回声值。例如:$ex='A1'; $ex.='B1'; $ex.='C2';
Result - A1B1C2
您的问题答案是:
$string = "<td><select>";
if ($available_date == $stk_date) {
$query = "SELECT * FROM user_master WHERE id NOT IN (SELECT UM.id FROM user_master UM JOIN bookings B ON B.id_item = UM.id JOIN stocktakes S ON B.the_date = S.stk_date)";
$result = mysqli_query($connect, $query);
if ($result) {
while ($row = mysqli_fetch_array($result)){
$string.="<option value=".$row['first_name'].">".$row['first_name']." ".$row['last_name']."</option>'";
}
}
}else{
$query = "SELECT * FROM user_master";
$result = mysqli_query($connect, $query);
if ($result) {
while ($row = mysqli_fetch_array($result)){
$string.="<option value=".$row['first_name'].">".$row['first_name']." ".$row['last_name']."</option>'";
}
}
}
$string.="</select></td>";