0

すべての結果を見栄えの良いテーブルに返すために、ループのあるテーブルを実行しています。サブクエリを実行する必要があるまで、それはうまくいきます。サブクエリは別のテーブルを調べ、開始ループの$ office値を使用して情報を検索し、そこから整数値を合計して$paidに割り当てます。

何らかの理由で、最初の結果を返し、$ payedを出力した後、両方のループが停止します。私がしていることを達成することさえ可能ですか?これに頭を悩ませてみたところ、値をハードコーディングして結果セットごとに個別の変数を設定できたようですが、それは大変な作業のようです。最初のループから返される各結果セットの$paid整数を表示したいだけです。うまくいけば、これはすべて理にかなっています。アドバイスをいただければ幸いです。

$mysqli = new mysqli ( $db_hostname, $db_username, $db_password, $db_name );
    $query = "select * from `drawer` where date(`date`) = '$mysql_date' order by `office`"; // select result set for selected date and order by office name
    $result = $mysqli->query($query);
    while ( $row = $result->fetch_assoc () ) {

echo "<tr class=table_border>\n"; //display results
echo "<td class=table_rows nowrap width=10%>&nbsp;".$row['office']."</td>\n"; // return office name
$office = $row['office']; // grab the office from the first loop to use it in the second loop
echo "<td class=table_rows nowrap width=10%>&nbsp;".$row['manager']."</td>\n"; // return manager name
echo "<td class=table_rows nowrap width=10%>&nbsp;".$row['scash']."</td>\n"; // display integer value
echo "<td class=table_rows nowrap width=10%>&nbsp;".$row['ecash']."</td>\n"; // display integer value

$newquery = "select * from `offer_det` where `office` = '$office' and date(date) = curdate()"; // subquery to display data from another table and insert for each row when the first loop starts
$resultquery = $mysqli->query($newquery);
while ($row=$resultquery->fetch_assoc()) {
    $paid += $row['paid'];
}
echo "<td class=table_rows nowrap width=10%>&nbsp;".$paid."</td>\n"; // both loops end here
echo "<td class=table_rows nowrap width=10%>&nbsp;".$row['add']."</td>\n"; // should return integer value
echo "<td class=table_rows nowrap width=10%>&nbsp;".$row['remove']."</td>\n"; // should return integer
echo "<td class=table_rows nowrap width=10%>&nbsp;".$row['total']."</td>\n"; // should return integer
}
4

2 に答える 2

0

$row内側のwhileループに上書きしています

変化する

while ($row=$resultquery->fetch_assoc()) {
    $paid += $row['paid'];
}

while ($row1=$resultquery->fetch_assoc()) {
    $paid += $row1['paid'];
}
于 2012-12-06T16:16:19.640 に答える
0

内側のwhileループに$rowを割り当てています。これは、すでに外側のループに割り当てられています。内側のループで別の変数名に変更してみてください。

while ($row1=$resultquery->fetch_assoc()) {
    $paid += $row1['paid'];
}
于 2012-12-06T16:16:54.447 に答える