2017-05-09 7 views
-1

私はコーディングの初心者です。以下のコードを理解して調整して、データベースから繰り返しないでユニークな値だけを返そうとしています。私はunique_array()のさまざまなバリエーションを試しましたが、残念ながら成功しませんでした。データベースから返される値を一意のものだけに制限するにはどうすればよいですか?ユニークな値のみを持つPHP配列

<?php 
$sql ="SELECT COUNT(status) AS total_building FROM add_bulding WHERE status=1"; 
$query = $this->db->query($sql); 
$total_building = $query->row_array(); 
?> 

      <div class="b-list-section">         

        <?php 
        if(!empty($building_info)) 
        { 
         foreach ($building_info as $value) 
         {      
          $id = $value['id']; 
          $sql = "SELECT COUNT(DISTINCT building_id) AS total_list FROM add_listing WHERE building_id='$id'"; 
          $query = $this->db->query($sql);         
          $total_list = $query->row_array(); 

         ?> 
          <a class="blink" target="_blank" href="<?php echo base_url() . 'details_building/' . $value['id'] ?>"> 
           <div class="bilding-wrap"> 
            <h3 class="buildingtitle"><?php echo $value['title']; ?></h3> 
             <?php if(!empty($value['image'])):?> 
             <img class="bimage" src="<?php echo base_url("uploads/thumb/" . $value['image']); ?>" alt="no image yet"> 
             <?php else:?> 

             <?php $qry12=mysql_query("SELECT * FROM add_bulding_image WHERE add_building_id=$id"); 
             $sqr1=mysql_fetch_array($qry12);      ?>      
             <img class="bimage" src="<?php echo base_url("uploads/thumb/" . $sqr1['image']); ?>" alt="no image yet"> 

             <?php endif;?> 


           </div> 
          </a> 

上記のコードは、ユーザーが検索しているものと一致するリストを返します。 2つのリスティングが同じ建物内にある可能性があるため、コードは同じ建物を2回返します。

+1

'mysql_ *'関数を使用しないでください。それらはv5.5(2013年6月)から廃止され、v7.0(2015年12月)以降削除されました。代わりに[** mysqli _ ***](https://secure.php.net/manual/en/book.mysqli.php)または[** PDO **](https://secure.php.net/** ** prepared statements **](https://secure.php.net/manual/en/pdo.prepare.php)と[**バインドされたパラメータ** ](https://secure.php.net/manual/en/pdostatement.bindparam.php)。 –

+0

ユニークな結果が必要な場合は、「SELECT DISTINCT」を使用してください。 – tadman

+0

@tadman私は 'SELECT DISTINCT'を試みたが、うまくいかなかった - コードは繰り返しの結果を返す。 – 1dxb

答えて

0

はこれにクエリを変更してください:

SELECT COUNT(building_id) AS total_list FROM add_listing WHERE building_id='$id' GROUP BY building_id 
+0

これを試してみましたが、論理的にはうまくいくはずですが、依然として繰り返し結果が表示されています。 – 1dxb

+0

ええと私は質問ではないと思う:私は上記の私の答えを編集する場合はこれを試してみてください。 foreach(array_unique($ building_info)$ value)としてforeach($ building_infoを$ valueとして)を – Eyy

+0

に変更して、「配列から文字列への変換」エラーを返しました – 1dxb

関連する問題