2017-06-20 26 views
0

選択したタグに町を表示する際に問題があります。これらは次のように表示されます:enter image description here複製された町は削除できません。クエリの問題でなければならないのでしょうか?

ご覧のとおり、ベルリンのような町が複製されています。また、私は、コードのfoolowingブロックとドロップダウンリストにそれらを表示:

<select id="veneue_finder_city_select" name="city_id"> 
           <option value="">Any</option> 
           <?php 
           if(!empty($state_id)) { 

            $states = array(); 
            $cities = $wpdb->get_results("select ID, post_title from $wpdb->posts where post_type = 'place' and post_parent = $state_id", ARRAY_A); 

            foreach($cities as $city): 
            ?> 
             <option value="<?php echo $city['ID']; ?>" <?php selected($city['ID'], $city_id) ?>><?php echo $city['post_title']; ?></option> 
            <?php endforeach; 
           }?> 
          </select> 

私はすでに成功せず、クエリに個別タイプを使用することを試みました。それは別のものでなければなりませんか?これは、あなたが一つのことは、この機能の助けを借りて、独自の配列に結果を作る行うことができます

`select ID, post_title from $wpdb->posts where post_type = 'place' and post_parent = $state_id GROUP BY post_title` 
+1

あなたは 'DISTINCT post_title'を使ってみましたか? – FMashiro

+0

より適切な質問は、あなたのデータベースに複数の**ベルリン**があるのはなぜですか?あなたのデータに欠陥がありますか?私はあなたのコードを修正する代わりにそれを修正することをお勧めします。 – Xatenev

+0

しかし、私はWordPressのdbに精通していないとどこの町を見つけることができません。それはベルリンだけではない(重複している) –

答えて

0

を使用することができ、クエリの問題がある私のstade_id

$state_id = isset($_GET['state_id']) ? $_GET['state_id'] : ''; 
-1

です。

function unique_array($array) 
{ 
    $result = array_map("unserialize", array_unique(array_map("serialize", $array))); 

    foreach ($result as $key => $value) 
    { 
    if (is_array($value)) 
    { 
     $result[$key] = $this->unique_array($value); 
    } 
    } 

    return $result; 
} 

それはあなたの問題を解決することができます必要な固有の配列を与えるだけで、この

$cities=$this->unique_array($cities); 

のように、そして街の結果を得た後、それを呼び出すコードにこの機能を追加します。

+0

私は試したことがあるが、成功した –

関連する問題