Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用foreach获得正确结果的问题_Php_Indexing_Foreach - Fatal编程技术网

Php 使用foreach获得正确结果的问题

Php 使用foreach获得正确结果的问题,php,indexing,foreach,Php,Indexing,Foreach,我有以下代码来生成一个包含下订单的HTML表 // Select data FROM ORDER & ORDERLINE $id = $value->ID; $datenow = date("Y-m-d"); $temp = 0; $stmt2 = $mysql->prepare("SELECT salesorder.order_id AS soid, salesorder.deli

我有以下代码来生成一个包含下订单的HTML表

// Select data FROM ORDER & ORDERLINE
        $id = $value->ID;
        $datenow = date("Y-m-d");
        $temp = 0;
        $stmt2 = $mysql->prepare("SELECT salesorder.order_id AS soid, salesorder.delivery_date AS sdd, orderline.qty AS olq, food.food_type AS fft
                                FROM orderline
                                INNER JOIN salesorder ON salesorder.order_id = orderline.order_id
                                INNER JOIN food ON food.food_id = orderline.food_id
                                WHERE salesorder.client_id=? AND orderline.qty!=?
                                ORDER BY sdd");
        $stmt2->bind_param('ss', $id, $temp);
        $stmt2->execute();
        $result2 = $stmt2->get_result();
        
    // determen if there are orders to display
    if (mysqli_num_rows($result2) > 0) {
        
        while ($value2 = $result2->fetch_object()) {
        $results[] = $value2; 
        }
    ?>

    <table class="center table">
            <thead>
                <tr>
                    <th>Order Number</th>
                    <th>Delivery Date</th>
                    <th>QTY</th>
                    <th>Food Type</th>
                </tr>
            </thead>
            <tbody>
                <b>Delivered orders :</b> (and orders delivered today...)
                <?php foreach ( $results as $result ) : ?>
                <?php if (($result->sdd)<=$datenow) { ?>
                        <td><?php echo ($result->soid); ?></td>
                        <td><?php echo ($result->sdd); ?></td>
                        <td><?php echo ($result->olq); ?></td>
                        <td><?php echo ($result->fft); ?></td>                      
                    </tr>
                <?php } ?>
                <?php endforeach;?>
            </tbody>
        </table>
//从订单和订单行中选择数据
$id=$value->id;
$datenow=日期(“Y-m-d”);
$temp=0;
$stmt2=$mysql->prepare(“选择salesorder.order\u id作为soid,选择salesorder.delivery\u日期作为sdd,选择orderline.qty作为olq,选择food.food\u类型作为fft
从订单行
salesorder.order\u id=orderline.order\u id上的内部联接salesorder
food.food\u id=orderline.food\u id上的内部连接food
其中salesorder.client_id=?和orderline.qty!=?
由sdd订购);
$stmt2->bind_参数('ss',$id,$temp);
$stmt2->execute();
$result2=$stmt2->get_result();
//确定是否有要展示的命令
如果(mysqli_num_行($result2)>0){
而($value2=$result2->fetch_object()){
$results[]=$value2;
}
?>
订单号
交货日期
数量
食物类型
交付订单:(和今天交付的订单…)
问题是“交货日期”和“订单号”的显示次数与数量和食品类型的显示次数一样多。我知道这与索引有关,但无论我如何尝试,我都找不到正确的语法或方法。有什么想法吗? 我已将数据表添加为图像。请让我知道

  • foreach的内部
    u需要打开
    标签
  • 您可以直接循环数组
    mysqli\u fetch\u assoc
    返回数组,那么为什么要存储到
    $results[]
    数组中

  • 根据您对Eibs另一个答案的评论,请检查以下内容是否满足您的需要。首先,当您循环结果时,我们创建一个按订单号和日期分组的关联数组,并将每个项目添加到项目数组中。然后,当创建表时,我们循环结果数组,然后循环项目数组。I ha我之所以使用单独的行,只是因为您有一个标题行,然而,使用相同的方法,您可以通过多种不同的方式设计表输出

      // determen if there are orders to display
      if(mysqli_num_rows($result2) > 0)
      {
        while($value2 = $result2->fetch_object())
        {
          $key = $value2->soid.'-'.$value2->sdd;
          if(!isset($results[$key]))
          {
            $results[$key] = array(
                'soid' => $value2->soid,
                'sdd' => $value2->sdd,
                'items' => array(),
            );
          }
          $results[$key]['items'][] = $value2;
        }
      }
      ?>
      <table class="center table">
        <thead>
        <tr>
          <th>Order Number</th>
          <th>Delivery Date</th>
          <th>QTY</th>
          <th>Food Type</th>
        </tr>
        </thead>
        <tbody>
        <tr>
          <td colspan="4"><b>Delivered orders :</b> (and orders delivered today...)</td>
        </tr>
        <?php foreach($results as $result) : ?>
          <?php if($result['sdd'] <= $datenow): ?>
            <tr>
              <td><?php echo($result['soid']); ?></td>
              <td><?php echo($result['sdd']); ?></td>
              <td></td>
              <td></td>
            </tr>
            <?php foreach($result['items'] as $item): ?>
              <tr>
                <td></td>
                <td></td>
                <td><?php echo($item->olq); ?></td>
                <td><?php echo($item->fft); ?></td>
              </tr>
            <?php endforeach; ?>
          <?php endif; ?>
        <?php endforeach; ?>
        </tbody>
      </table>
    
    //确定是否有要显示的订单
    如果(mysqli_num_行($result2)>0)
    {
    而($value2=$result2->fetch_object())
    {
    $key=$value2->soid'-'.$value2->sdd;
    如果(!isset($results[$key]))
    {
    $results[$key]=数组(
    “soid”=>$value2->soid,
    “sdd”=>$value2->sdd,
    'items'=>array(),
    );
    }
    $results[$key]['items'][]=$value2;
    }
    }
    ?>
    订单号
    交货日期
    数量
    食物类型
    交付订单:(和今天交付的订单…)
    
    首先,请停止创建无效的HTML。您不能像那样直接将a
    b
    放入
    tbody
    。“我知道这与索引有关”-不,如果有的话,这与您使用的联接类型无关。内部联接现在可能就是您想要的。您能否提供orderline、salesorder和food三个表的数据示例?我插入了一张这三个表的图片。您尝试检查了哪些问题?为什么不从检查开始SQL查询-复制它,将它粘贴到phpMyAdmin或您使用的任何东西,并检查返回的数据是否是您期望的数据对不起,我的错误,您使用fetch_object()、msyqli_fetch_assoc和fetch_objec()在您的例子中,返回相同的内容:与上面的注释一样,您可以使用fetch_对象返回数组,因此不需要将返回数组推入$results2 arr是的,在ForEachEIBS上使用后,确实加倍了。但我的实际问题仍然是,我在结果中看到,订单号和交货日期也重复了4次,就像我有数量和食品类型一样。结果我想要一个带有订单号、交货日期和n多行数量和食品类型的表根据您的需要,您是否可以在数据库上完美运行?查询结果看起来不错,但它会遍历所有内容,每一行都会给出订单号、日期、数量和食品类型。我想要的是订单号和日期一次,然后数量和食品类型就有一个Hi Mark。这确实起到了作用。非常感谢。我知道这是一个很好的例子索引,但我对PHP还是很熟悉。再次感谢!