を再利用するwhileループ:PDO私はこのようにPDOを使用して、出力テンプレートを再利用しようとしている出力テンプレート
selected_products_show .= '<div class="'.$product_id.'">'.$product_name.'</div>';
は、両方の$ = 1注文以降に実行される2つのクエリのために使用されます& $が出荷された= 1。 問題は、出力セクションにあります。
<?php if ($ordered == 1) { echo $selected_products_show;}?>
<?php if ($shipped == 1) { echo $selected_products_show;}?>
の$ selected_product_showは$ = 1出荷秒ループによって上書きされます。どのようにして正しいクエリーを引き出すことができますか(同じ出力テンプレートを再利用している間に、ループ中のループ全体で)正しいループを正しいループに貼り付けますか?
$ordered = 1;
$shipped = 1;
if ($ordered == 1) {
$queryEnd = "WHERE product_id IN (?,?,?)";
}
if ($shipped == 1) {
$queryEnd = "ORDER BY product_id DESC LIMIT 5";
}
$query = "SELECT product_id, product_name FROM products $queryEnd";
if ($ordered == 1) {
$ordered_products = array(1,2,3);
$selected_products = $dbh->prepare($query);
$selected_products->execute($ordered_products);
}
if ($shipped == 1) {
$selected_products = $dbh->prepare($query);
$selected_products->execute();
}
while($row = $selected_products->fetch(PDO::FETCH_ASSOC)){
$product_id = $row["product_id"];
$product_name = $row["product_name"];
$selected_products_show .= '<div class="'.$product_id.'">'.$product_name.'</div>';
}
<?php if ($ordered == 1) { echo $selected_products_show;}?>
<?php if ($shipped == 1) { echo $selected_products_show;}?>
これを達成することができますどのように任意のアイデア:ここ
は、コードのですか?
@YourCommonSense本当に?何故ですか? whileループの同じ正確な出力を、異なる正しいPDOステートメントで再利用する必要があるかもしれません。 1,000行の出力を出力しなければならないとしたら、1000行ではなく3000行の同じ正確な行が繰り返されるとします。私は実際にこのような状況でより効率的だと思っています。 – Maverick
@ YourCommonSenseだから、どうやってそれをやっていくの? – Maverick
私は表示ロジック(データの表示について)からビジネスロジック(データの取得と準備について)を分離したいと思います。したがって、PDOはビジネスロジック部分に残り、データのみをテンプレートに渡します。もちろん、私はページごとに100行しか表示しないようにページ分割を実装します –