Php 为每个循环显示单独的结果

Php 为每个循环显示单独的结果,php,if-statement,foreach,Php,If Statement,Foreach,我有一个PHP代码,它从下拉选择中获取一个“empfullname”,并根据选择显示一个时间卡。但是,我想让它能够允许用户选择“全部”,并且只打印所有可用的员工。我想我必须用foreach循环来完成这项工作,但我似乎无法让它工作。这是我认为我需要的if语句 if ($empfullname == 'All') { $query = "select * from ".$db_prefix."employees order by empfullname asc"; $result = mys

我有一个PHP代码,它从下拉选择中获取一个“empfullname”,并根据选择显示一个时间卡。但是,我想让它能够允许用户选择“全部”,并且只打印所有可用的员工。我想我必须用foreach循环来完成这项工作,但我似乎无法让它工作。这是我认为我需要的if语句

if ($empfullname == 'All') {
  $query = "select * from ".$db_prefix."employees order by empfullname asc";
  $result = mysql_query($query);
  $tmp_empfullname = stripslashes("".$row['empfullname']."");
  foreach ($tmp_empfullname){
    print timecard_html($empfullname,$local_timestamp_in_week);
  } 
} else {
    print timecard_html($empfullname,$local_timestamp_in_week);
}
print '<script language="JavaScript" type=
       "text/javascript" src="../scripts/jquery.totals3.js"></script>';
print <<<End_Of_HTML

<table align="center" border="0" cellpadding="0" cellspacing="3" class="buttons">
    <tr><td><a href="timecardrpt.php"><img src=
           "../images/buttons/done_button.png" border="0" /></a></td></tr>
</table>
End_Of_HTML;

include '../footer.php';
if($empfullname=='All'){
$query=“从“$db\u prefix.”按empfullname asc排序的员工订单中选择*;
$result=mysql\u query($query);
$tmp_empfullname=stripslashes(“$row['empfullname']);
foreach($tmp\u empfullname){
打印时间卡\u html($empfullname,$local\u timestamp\u in\u week);
} 
}否则{
打印时间卡\u html($empfullname,$local\u timestamp\u in\u week);
}
打印“”;

print这是一个巨大的混乱,很明显,您没有很好地思考逻辑或结构,而且您还没有看过很多PHP MySQL函数的示例。这里有大量的例子和教程,你应该看看。关于foreach,您需要理解。具体来说,语法是
foreach($myArray as$value)
,而不仅仅是
foreach($myArray)
。还有很多其他的东西

  • 在“else”块中不运行任何查询
  • 您不会从结果中获取行
  • 您使用的是不推荐使用且不安全的mysql函数,而不是or
  • 变量名不一致(foreach中有
    $tmp\u empfullname
    ,但语句块中有
    $empfullname
  • 严格地说,您不需要foreach循环,因为它暂时可以正常工作。您可以使用foreach,但是,嗯
  • 这应该可以解决这个问题:

    //Do your mysqli connection here. it's different from the mysql connection.
    
    if ($empfullname == 'All') {
        $query = "select * from ".$db_prefix."employees order by empfullname asc";
    } else {
        $query = //put a SQL query here
    }
    
    if ($result = mysqli->query($query)){
        while ($row = $result->fetch_assoc()){ //you could also do foreach ($result as $row)
            print timecard_html(stripslashes($row['$empfullname']), $local_timestamp_in_week);
        }
    }
    

    问题是,您调用此$row时从未在foreach中声明过它,因此您应该使
    $result=mysql\u query($query);
    之后的代码如下所示:

    foreach ($result as $row) {
        $tmp_empfullname = stripslashes("".$row['empfullname']."");
    }
    

    完成后,您只需执行任意操作即可获得
    $tmp\u empfullname
    变量中的每个名称。

    您的解决方案不起作用。它不会显示任何选择的结果。您应该验证您是否正确执行了MySQLI连接。您可能应该在队列中发布更多代码因为在你的代码中有十几件事情可能会出错。