0

特定のフィールドからのみ最初の単語を返すクエリを実行すると、このフィールドにはスペースで区切られた複数の単語が含まれます。クエリの結果は、動的に作成した選択ボックスの値になります。他の選択に応じて動的に作成される 3 つの選択ボックスがあります。

問題は、クエリが文全体を返し、それが選択ボックスにも表示されることです。データベースでのみクエリを実行してみましたが、正しい結果が得られたようです。

これがコードスニペットです。どうすれば解決できますか??

<?php
  //**************************************
 //     First selection results     //
//**************************************
if(isset($_GET['func'])&& $_GET['func'] == "drop_1") {
   drop_1($_GET['drop_var']); 
}

function drop_1($drop_var)
{
$result = mysql_query("SELECT DISTINCT SUBSTRING_INDEX(`h_name` ,' ', 1 ) AS name FROM hypermarket_em") or die(mysql_error());
echo '<select name="drop_2" id="drop_2"><option value=" " disabled="disabled" selected="selected">Select City</option>
        <option value="ALL" >ALL</option>';
while($drop_2 = mysql_fetch_array( $result )) 
{
      echo '<option value="'.$drop_2['name'].'">'.$drop_2['name'].'</option>';
}
echo '</select>';
echo "<script type=\"text/javascript\">
    $('#wait_2').hide();
    $('#drop_2').change(function(){
    $(this).parent().parent().find('.drop2').val($(this).val());
    $('#wait_2').show();
    $('#result_2').hide();
    $.get(\"func.php\", {
    func: \"drop_2\",
    drop_var: $('#drop_2').val()
    }, function(response){
    $('#result_2').fadeOut();
    setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400);
    });
    return false;
    });
    </script>";
}
?>

どんなアイデアでも大歓迎です。ありがとう。

4

1 に答える 1

1

部分文字列を設定しています

SUBSTRING_INDEX(`h_name` ,' ', 1 ) AS name

ただし、元の文字列全体を参照しています$drop_2['h_name']。- に変更してみてください

while($drop_2 = mysql_fetch_array( $result )) 
{
  echo '<option value="'.$drop_2['name'].'">'.$drop_2['name'].'</option>';
}

編集 -

nameでエイリアスを正しく使用している場合、$drop_2['name']まだ完全な文字列をエコーし​​ている理由がわかりません。explode()フェイルセーフとして、私が最初に答えた を使用できます

while($drop_2 = mysql_fetch_array( $result )) 
{
  $firstWord = explode(' ',trim($drop_2['name']));
  echo '<option value="'.$firstWord[0].'">'.$firstWord[0].'</option>';
}
于 2012-11-22T05:42:31.650 に答える