0

私は自分のサイトで示唆的な検索を使用していますが、どういうわけかうまくいきません.顧客という名前のテーブルがあります:

id     customername      location
1       ram                delhi
2       monty             new delhi
3       sandeep            noida

このテーブルで名前と場所を自動検索したいので、そのためのコードを次に示します。

<?php
include("config.php"); 
$term=$_GET["term"];

$query=mysql_query("SELECT * FROM customers where customername like '%".$term."%' or location like '%".$term."%'");
$json=array();

    while($customer=mysql_fetch_array($query)){
         $json[]=array(

                    'value'=> $customer["customername "],
                    'label'=>$customer["customername "]." - ".$customer["id"],
                    'value'=> $customer["location"],
                    'label'=>$customer["location"]." - ".$customer["location"],

                        );
    }

 echo json_encode($json);

?>

このクエリの助けを借りて、顧客名と場所の両方を一度に自動検索することはできません。つまり、顧客名を検索したい場合は顧客名を指定し、検索フィールドに場所を入力すると場所を指定する必要があります上記のコードで述べたように、今回は最後の値を提供してくれます。場所を提供するだけです。

4

2 に答える 2

1

配列が正しく構築されていません。キー名が重複しているため、上書きされます。

あなたが持っているとしましょう:

$json[] = array(
    'value' => 'x',
    'label' => 'x-y',
    'value' => 'y',
    'label' => 'y-x'
);


var_dump($json);

出力は次のとおりです。

array (size=1)
  0 => 
    array (size=2)
      'value' => string 'y' (length=1)
      'label' => string 'y-x' (length=3)

$jsonでも[]、自動的に が作成されるわけではなく0=>array(x,y),1=>array(y,x)、キーを指定する必要があります。

MySQL が返す行数がわからないため、私の例では静的な while ループを使用します。

$max=5; //max iterations
$i = 0; //first key
$k = $max+1; //second key
while ($i<=$max) {
    $json[$i] = array(
        'value' => 'x',
        'label' => 'x-y'
    );
    $json[$k] = array(
        'value' => 'y',
        'label' => 'y-x'
    );
    $i++;
    $k++;
}

ksort($json); //this line is only to return the array sorted by keys asc, not necessary, for the testing purpose
var_dump($json);

2 番目のキー$kが と等しくなることはありません$i。そのため、 $i が到達できる最大値を の開​​始点に使用し$kます。出力:

array (size=12)
  0 => 
    array (size=2)
      'value' => string 'x' (length=1)
      'label' => string 'x-y' (length=3)
  1 => 
    array (size=2)
      'value' => string 'x' (length=1)
      'label' => string 'x-y' (length=3)
  2 => 
    array (size=2)
      'value' => string 'x' (length=1)
      'label' => string 'x-y' (length=3)
  3 => 
    array (size=2)
      'value' => string 'x' (length=1)
      'label' => string 'x-y' (length=3)
  4 => 
    array (size=2)
      'value' => string 'x' (length=1)
      'label' => string 'x-y' (length=3)
  5 => 
    array (size=2)
      'value' => string 'x' (length=1)
      'label' => string 'x-y' (length=3)
  6 => 
    array (size=2)
      'value' => string 'y' (length=1)
      'label' => string 'y-x' (length=3)
  7 => 
    array (size=2)
      'value' => string 'y' (length=1)
      'label' => string 'y-x' (length=3)
  8 => 
    array (size=2)
      'value' => string 'y' (length=1)
      'label' => string 'y-x' (length=3)
  9 => 
    array (size=2)
      'value' => string 'y' (length=1)
      'label' => string 'y-x' (length=3)
  10 => 
    array (size=2)
      'value' => string 'y' (length=1)
      'label' => string 'y-x' (length=3)
  11 => 
    array (size=2)
      'value' => string 'y' (length=1)
      'label' => string 'y-x' (length=3)
于 2013-09-16T06:10:19.543 に答える