2011-06-25 5 views
0

Я создал Autosuggestion с использованием PHP/MySQL и Ajax, но когда я нажимаю на поисковое предложение с помощью() на нем, оно не заполняет окно поиска, а все остальное делает. Например, я не могу нажать на результат поиска, в котором говорится: «Просто не получается». но я могу нажать «Просто не получится». Можете ли вы, ребята, сказать мне, почему? БлагодаряAutoSuggest с использованием PHP/MySQL и Ajax

Код:

<?php 
    include('conn2.php'); 
    $str = strtolower($_GET['content']);   
    if(strlen($str)) 
    { 
     $sel = mysql_query("SELECT DISTINCT title FROM Music WHERE title LIKE '".mysql_real_escape_string(trim($str))."%'"); 
     if(mysql_num_rows($sel)) 
     { 
      echo "<table border =\"0\" width=\"100%\">\n"; 
      if(mysql_num_rows($sel)) 
      { 
       echo "<script language=\"javascript\">box('1');</script>"; 
       while($row = mysql_fetch_array($sel)) 
       { 
        $country = str_ireplace($str,"<b>".$str."</b>",($row['title'])); 
        echo "<tr id=\"word".$row['title']."\" onmouseover=\"highlight(1,'".$row['title']."');\" onmouseout=\"highlight(0,'".$row['title']."');\" onClick=\"display('".$row['title']."');\" >\n<td>".$country."</td>\n</tr>\n"; 
       } 
      } 
      echo "</table>"; 
     } 
    } 
    else 
    { 
     echo "<script language=\"javascript\">box('0');</script>"; 
    } 
?> 
+0

конвертировать все в свои сущности в базу данных и использовать 'htmlentites' на' $ _GET ['content'] ' – RobertPitt

+0

можете ли вы его код для меня? спасибо – aftard

ответ

0
$str = htmlentities(strtolower($_GET['content'])); 

Кроме того, вы можете использовать новую функцию filter_input, чтобы предотвратить инъекции SQL, если вы используете новую версию PHP.

FYI: http://php.net/manual/en/function.filter-input.php

+0

ok Я заменил вышеуказанный код, но его все еще не работает – aftard

+0

?? привет, пожалуйста, помогите мне? – aftard

0

Я думаю, что проблема может быть, что одиночные кавычки в результате вашего поиска конфликтует с одинарной кавычки в форме ниже HTML линии, которая использует одинарные кавычки для ограждающих параметры функции нажимает на кнопку мыши/выдает/клик.

echo "<tr 
id=\"word" . $row['title'] . "\" 
onmouseover=\"highlight(1,'" . $row['title'] . "');\" 
onmouseout=\"highlight(0,'" . $row['title'] . "');\" 
onClick=\"display('" . $row['title'] . "');\" >\n 
    <td>" . $country . "</td>\n 
</tr>\n"; 

Как вы увидите, как выделить() и дисплей() функции упаковывают параметр название в одинарные кавычки и через одинарные кавычки в названии могут конфликтовать с ними, тем самым нарушая ваш HTML. Попробуйте избежать одиночных кавычек в $ row ['title'], и тогда он должен работать.

Надеюсь, это поможет!

+0

этот код не работал :( – aftard

+0

@Aftad: Я думаю, что вы не узнали, но это ваш код, я ничего не изменил, чтобы он работал. Я только что упомянул об этом в своем ответе, чтобы указать вам на право и проблема, которая может помешать одинарной кавычке в результатах поиска – Abhay

+0

, так что вы знаете, в чем проблема? – aftard

Смежные вопросы