0

PHPとjqueryを使用して自動提案検索ボックスを作成しました。ユーザーは、名前と姓を挿入して、私のデータベースに存在する人を検索するように求められました。表 users には、名前と姓の 2 つの列があります。名前を入力すると検索は正常に機能しますが、スペースを押して移動し、姓を入力しても結果が得られません。スペースボタンを押すと、全体の問題が発生するようです。それを修正する方法はありますか?

これは私のjqueryコードです:

$(document).ready(function(){


$('#search_form_1').keyup(function(){
    var value = $(this).val();

    if(value != ''){
        $('#search_result').show();
        $.post('search_form.php', {value: value}, function(data){
            $('#search_result').html(data);
        }); 

    }else{
        $('#search_result').hide();
    }

});

});

そして、これは私のPHPコードです:

<?php 
if(isset($_POST['value'])== true && empty($_POST['value']) == false){

$value = mysql_real_escape_string($_POST['value']);

$query = mysql_query(" SELECT `surname`, `name` FROM `users` WHERE (`surname` LIKE '$value%' OR `name` LIKE '$value%') OR (`name` LIKE '$value%' OR `surname` LIKE '$value%') ");

    while($run = mysql_fetch_array($query)){

    $surname = $run['surname'];
    $name = $run['name'];
    echo " $surname $name ";

    }
  }
?>
4

3 に答える 3

2

検索を分割する必要があります。

<?php 
if(isset($_POST['value'])== true && empty($_POST['value']) == false){

$value = mysql_real_escape_string($_POST['value']);

$name_and_surname = explode(" ", $value);

$name = $name_and_surname[0];
$surname = $name_and_surname[1];

$q = " SELECT `surname`, `name` FROM `users` WHERE (`surname` LIKE '$name%' OR `name` LIKE '$name%') OR (`name` LIKE '$surname%' OR `surname` LIKE '$surname%') ";

// check your query one more time
echo $q;

$query = mysql_query($q);

    while($run = mysql_fetch_array($query)){

    $surname = $run['surname'];
    $name = $run['name'];
    echo " $surname $name ";

    }
  }
于 2013-06-28T13:02:32.107 に答える
0

編集は許可されていないため、コードは次のとおりです。

$value = mysql_real_escape_string($_POST['value']);
$names = explode(" ", $value);

if(count($names)>1){
$name = $names[0];
$surname = $names[1];
  $q = "SELECT surname, name FROM users WHERE (name LIKE '$name%' AND surname LIKE '$surname%') OR (name LIKE '$surname%' AND surname LIKE '$name%')";
}else{
  $q = "SELECT surname, name FROM users WHERE (name LIKE '$value%' OR surname LIKE '$value%')";
}
于 2013-06-28T13:35:46.227 に答える