2016-07-05 7 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]); 
} 

und in der HTML-Formular:Abrufen der Wert aus der Datenbank überprüft

    <?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>  

Mit der ersten Schleife, erhalte ich die Werte aller untersuchten Kategorien. und mit der zweiten Schleife bekomme ich die Werte aller Kategorien auch von Anfang an geprüft. was ich will, ist nicht die Werte der überprüften Kategorien in der zweiten Schleife zu bekommen. Ich hoffe du verstehst.

+0

Mögliche Duplikat [php aus der Datenbank überprüft echo] (http://stackoverflow.com/questions/12674147/php-echo-checked-from-database) –

Antwort

0

Möglicherweise können Sie die IDS aus der ersten Schleife in Array-Anzeige nur diejenigen speichern, die nicht in Array in der zweiten Schleife gefunden werden.

Genau so,

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

In obigen Code sind wir IDs der Kategorie in $arrayofcategories und Kontrolle (in der zweiten Schleife) Speichern, wenn sie bereits in der ersten Schleife, nur Anzeige gefunden werden, wenn sie nicht gefunden.

0

Sie diesen Code versuchen:

<?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>