Объединение PHP-скрипта с другим PHP-файлом, jQuery и HTML

#php #jquery #mysql #html

#php #jquery #mysql #HTML

Вопрос:

У меня есть PHP-скрипт с предложением поиска, который использует базу данных MySQL в качестве серверной части и jQuery для отправки содержимого на страницу окна поиска. PHP в настоящее время находится в suggest.php и мое окно поиска включено index.php. Я хочу поместить PHP-скрипт из suggest.php в index.php код скрипта, но, похоже, он не работает. Почему это может быть?

Вот мой код для suggest.php:

 <?php

$database=new mysqli('localhost','username','password','database');

if(isset($_POST['query'])){
$query=$database->real_escape_string($_POST['query']);
            if(strlen($query)>0){
                $suggestions=$database->query("SELECT name, value FROM search WHERE name LIKE '%".$query."%' ORDER BY value DESC LIMIT 5");
                if($suggestions){
                    echo '<ul id="suggest">';
                    while($result=$suggestions->fetch_object()){
                        echo '<li>'.$result->name.'</li>';                      
                    }
                    echo '</ul>';
                }
            }
        }
?>
  

Вот мой код для index.php:

 <script type='text/javascript' src='js/jquery.js'></script>
<script type='text/javascript'>function lookup(a){if (a.length==0){$("#suggestions").hide();} else {$.post("suggest.php",{query:""   a   ""},function (b){$("#suggestions").html(b).show();})}};</script>

<form id='search' method='post'>
<input type='text' id='query' onkeyup='lookup(this.value);'>
<div id='suggestions'></div>
</form>
  

Ответ №1:

Это выглядит как index.php создает интерфейс, который используют ваши пользователи, но suggest.php возвращает предложения по поиску. Вы не хотите, чтобы при попытке получить предложения по поиску возвращалась другая копия интерфейса, поэтому вы не можете вызвать index.php вместо suggest.php

Кроме того, index.php на самом деле это не php-файл, по крайней мере, судя по тому, что вы опубликовали. С таким же успехом это могло бы быть index.html

Ответ №2:

После отправки PHP-страницы невозможно реализовать в ней какой-либо дальнейший PHP-код без обновления страницы, если то, что говорит @bbg, верно. Я предлагаю вам использовать AJAX, который может отправлять запрос, чтобы получить suggest.php скрипт для выполнения на index.php. Я также предлагаю вам поместить код в suggest.php в функциях (они делают код красивым, на мой взгляд).