Цикл PDO while для повторного использования выходного шаблона - PullRequest
0 голосов
/ 01 апреля 2012

Я пытаюсь использовать PDO таким образом и повторно использовать шаблон вывода:

 selected_products_show .= '<div class="'.$product_id.'">'.$product_name.'</div>'; 

Используется для двух запросов, которые будут выполнены, так как оба $ order = 1 & $ shipped = 1,Проблема в разделе вывода:

<?php if ($ordered == 1) { echo $selected_products_show;}?>
<?php if ($shipped == 1) { echo $selected_products_show;}?>

$ selected_product_show перезаписывается вторым циклом, где $ shipped = 1.Как вытащить правильный запрос (что происходит сейчас) и прикрепить правильный цикл с правильным отображением переменной для этого цикла (все с одним циклом while, при повторном использовании одного и того же шаблона вывода)?

Воткод:

$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;}?>

Есть идеи, как этого добиться?

1 Ответ

1 голос
/ 02 апреля 2012
function templating($selected_products){
  $selected_products_show = '';
  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>';
  }
 return $selected_products_show;
}

$ordered = 1;
$shipped = 1;
$queryMAIN = "SELECT product_id, product_name FROM products";

if ($ordered == 1) {
    $query = $queryMAIN." WHERE product_id IN (?,?,?)";
    $ordered_products = array(1,2,3);
    $selected_products = $dbh->prepare($query);
    $selected_products->execute($ordered_products);
    echo templating($selected_products);
}

if ($shipped == 1) {
    $query= $queryMAIN." ORDER BY product_id DESC LIMIT 5";
    $selected_products = $dbh->prepare($query);
    $selected_products->execute();
    echo templating($selected_products);
}

Как то так?

...