2016-07-05 151 views
0
public function actionEditmul($id) 
{ 
     $sql1="SELECT * FROM category_product INNER JOIN category ON category_product.cat_id=category.cat_id WHERE category_product.product_id=$id"; 
     $editcat=Yii::$app->db->createCommand($sql1)->queryAll();    
     $cat=Category::find()->all(); 
     return $this->render('editmul',['category'=>$cat,'editcat'=>$editcat]); 
} 

,並在HTML表單檢查值:充分利用數據庫

    <?php foreach ($editcat as $edit): ?> 
       <input type="checkbox" name="cat[]" checked="checked" value="<?php echo $edit['cat_id'];?>" ><?php echo $edit['category'];?><br> 
       <?php endforeach; ?> 

       <?php foreach ($category as $categories): ?> 
       <input type="checkbox" name="cat[]" value="<?php echo $categories->cat_id;?>"><?php echo $categories->category;?><br> 
       <?php endforeach; ?> 
       <br>  

隨着第一個循環,我得到檢查了所有類別的值。在第二個循環中,我得到了所有類別的值,這些值也是首先檢查的。我想要的不是在第二個循環中獲取檢查類別的值。希望你能理解。

+0

的可能的複製[PHP的echo從數據庫中檢查(http://stackoverflow.com/questions/12674147/php-echo-checked-from-database) –

回答

0

也許您可以將IDS從第一個循環存儲到數組顯示中,而不是僅在第二個循環中找到數組。

就這樣,

<?php $arrayofcategories=array(); ?> 
<?php foreach ($editcat as $edit): ?> 
    <?php $arrayofcategories[]=$edit['cat_id']; ?> 
    <input type="checkbox" name="cat[]" checked="checked" value="<?php echo $edit['cat_id'];?>" ><?php echo $edit['category'];?><br> 
<?php endforeach; ?> 

<?php foreach ($category as $categories): ?> 
    <?php if(!in_array($categories->cat_id,$arrayofcategories)) { ?> 
      <input type="checkbox" name="cat[]" value="<?php echo $categories->cat_id;?>"><?php echo $categories->category;?><br> 
    <?php } ?> 
<?php endforeach; ?> 

在我們保存類別的標識在$arrayofcategories和檢查(在第二循環),如果他們在第一循環已經發現上面的代碼中,只顯示如果他們不找到。

0

你可以試試這個代碼:

<?php 
$editCategory = array(); 
foreach ($editcat as $edit): 
$editCategory = $edit['cat_id']; 
?> 
<input type="checkbox" name="cat[]" checked="checked" value="<?php echo $edit['cat_id'];?>" ><?php echo $edit['category'];?><br> 
<?php endforeach; ?> 

<?php foreach ($category as $categories): ?> 
    <?php if (!in_array($categories->cat_id, $editCategory)): ?> 
     <input type="checkbox" name="cat[]" value="<?php echo $categories->cat_id;?>"><?php echo $categories->category;?><br> 
    <?php endif: ?> 
<?php endforeach; ?> 
<br>