1

小さなショッピング カートを作成し、製品をセッション (データベースなし) に保存しています。私のセッションは製品IDを設定します。しかし、保存されたセッションの製品 ID と一致する正しい製品をデータベースから取得するにはどうすればよいでしょうか?

コード:

foreach ( (isset($shopcart) && is_array($shopcart) && count($shopcart) > 0) ? $shopcart : array() as $item )
{  
    $this->template->shopcart =  $shopcart;
}

.

<?php if( isset( $shopcart ) ): ?>
            <?php foreach ($shopcart as $item): ?>
             <?php echo $item['id'] ?>
  <?php endforeach ?>
<?php endif; ?>

編集:

 foreach ( (isset($shopcart) && is_array($shopcart) && count($shopcart) > 0) ? $shopcart : array() as $item )
    {  
        $this->template->shopcart  = DB::select()->where('id', 'IN', $item['id']) ->from('products')->execute();

        //$this->template->shopcart =  $shopcart;
    }

Database_Exception [ 1064 ]: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルを参照して、1 行目の「5」付近で使用する正しい構文を確認してください [ SELECT * FROM productsWHERE idIN '5' ]

編集2:

$this->template->shopcart = array();

if (count($shopcart))
{
  $this->template->shopcart = 
    DB::select()
    ->where('id', 'IN', $item)
    ->from('products')
    ->execute();
}

テンプレート:

<?php if( isset( $shopcart ) ): ?>
  <?php foreach ($shopcart as $item): ?>
<?php echo $item['id'] ?> //This is the product id in my saved session but i need to get the name from the database


 <?php endforeach ?>
 <?php endif; ?>
4

1 に答える 1

2

ORM またはクエリ ビルダーを使用していますか? ORM を使用している場合は、次のことができます。

$this->template->shopcart = 
    ORM::factory('products')
    ->where('id', 'IN', $_SESSION['cart'])
    ->find_all();

クエリビルダーを使用している場合:

$this->template->shopcart = 
     DB::select()
     ->where('id', 'IN', $_SESSION['cart'])
     ->from('products')
     ->execute();

あなたの見解では、あなたの$shopcartように繰り返します。

あなたのケースを使用して、(ループから取り出してください)

$this->template->shopcart = array();

if (count($shopcart))
{
  $product_ids = array();
  foreach ($shopcart as $item)
  {
     $product_ids[] = $item['id'];
  }
  $this->template->shopcart = 
    DB::select()
    ->where('id', 'IN', $product_ids)
    ->from('products')
    ->execute();
}
于 2012-12-03T20:14:56.027 に答える