Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как правильно вызвать php-скрипт


Автор: Delphist 24.11.2010, 14:50
Возникла такая проблема. Есть главная страница сайта, в ней есть контрол ввода текста и кнопка поиска.
Пользователь вводит данные на главной страницы и нажимает кнопку поиска. В результате в определенном
месте (где-то в середине) этой страницы должнен выдаться результат поиска, причем интерфейс главной
страницы меняться не должен, просто в серединке добавляетсят строчка с результатом
.
Вопрос, как правильно сделать, т.е. при нажатие кнопки поиска вызывается php-скрипт:
Код

<input type="text" name="srch" value="Что я должен здесь написать, чтобы вызвать другой php-скрипт?!">

который найдет результат и сгенирит страничку№2 точто такую же как главная, только
с добавлением строки результата.

Или же можно код php-скрипта разместить в этой же главной странице
Код

<input type="text" name="srch" value="<?$_GET['srch']?>">
...
<?php 
/* код поиска результата */
 ?>        

и как-то (может какой html-тэг есть) результат вывести на этой же страницы в определенном месте.

Автор: GZep 24.11.2010, 15:02
Допустим есть скрипт поиска search.php

Вот разметка формы поиска.
Код

<form method="post" action="search.php">
<input type = "text" name = "s">
<input type = "submit" value = "search">
</form>


И соответственно скрипт поиска-обработчик.
Код

if (isset($_POST['search'])) {

//тут запрос к бд должен быть, а пока заглушка с результатами
$results[] = "вот, нашёл";
$results[] = "ещё нашёл";
$results[] = "опять результат";

}

МОжно, конечно сразу вывести результаты поиска, но лучше этот скрипт запихнуть наверх, а на том месте где надо выводить, сделать так:
Код

<div>
<?php
if (empty($results)) {

  echo "поиск не был осуществлен";

} else {

  foreach($results as $result) {

    echo "<div>\n";
    echo "Результат: " . $result;
    echo "\n</div>\n";

  }

}
</div>

как-то так.

Автор: CruorVult 24.11.2010, 15:05
отправляете GET или POST на ту же страницу а потом
Код

if(isset($_GET['srch'])) {
//выполнить поиск по $_GET['srch'] и вывести результат
}

Автор: Delphist 24.11.2010, 15:11
Цитата(CruorVult @  24.11.2010,  16:05 Найти цитируемый пост)
отправляете GET или POST 

А какой лучше GET или POST?

Добавлено через 12 минут и 32 секунды
Цитата(GZep @  24.11.2010,  16:02 Найти цитируемый пост)
Допустим есть скрипт поиска search.php

1. Не совсем понял. Код формы и текст php-скрипта хранятся в разных файлах или все в одном search.php?
Цитата(GZep @  24.11.2010,  16:02 Найти цитируемый пост)
МОжно, конечно сразу вывести результаты поиска, но лучше этот скрипт запихнуть наверх, а на том месте где надо выводить, сделать так:

Что значит запихнуть наверх? В смысле в начало php-скрипта, тогда в чем разница куда мы разместим в начало или конец?

Автор: Guedda 24.11.2010, 15:32
Delphist, зачем задавать кучу самых простейших вопросов, если можно взять и почитать мануалы, начать с прочтения учебников... Во всем разобраться, а что не понял - задавать вопросы. Или нанимать программистов, которые смогут сделать за тебя всю работу. Это уже в рамки никакие не лезет, если честно.

http://phpfaq.ru/na_tanke

Автор: Delphist 24.11.2010, 17:06
Спасибо заработало.

Автор: GZep 24.11.2010, 17:24
Цитата(Delphist @  24.11.2010,  15:11 Найти цитируемый пост)
А какой лучше GET или POST?

в данном случае лучше GET, чтобы ссылку на страницу с результатами поиска можно было сохранить.
Цитата(Delphist @  24.11.2010,  15:11 Найти цитируемый пост)
Не совсем понял. Код формы и текст php-скрипта хранятся в разных файлах или все в одном search.php?

как хотите. Можно в одном, можно в разных.
Цитата(Delphist @  24.11.2010,  15:11 Найти цитируемый пост)
Что значит запихнуть наверх? В смысле в начало php-скрипта, тогда в чем разница куда мы разместим в начало или конец? 

Да в начало скрипта. А еще лучше в отдельный файл и потом инклудить его. Если запихнуть выборку из бд в середину страницы будет мягко говоря некрасиво.
Цитата(Guedda @  24.11.2010,  15:32 Найти цитируемый пост)
Delphist, зачем задавать кучу самых простейших вопросов, если можно взять и почитать мануалы

В вашем случае это действительно самый быстрый способ во всем разобраться.

Автор: bars80080 24.11.2010, 20:12
Цитата(GZep @  24.11.2010,  16:24 Найти цитируемый пост)
Да в начало скрипта. А еще лучше в отдельный файл и потом инклудить его. Если запихнуть выборку из бд в середину страницы будет мягко говоря некрасиво.

тут вопрос не в красоте а в порядке реализации.

скрипт работает, на основе результатов выполнения программы мы строим ту или иную страницу. если поиск успешен, то ниже по коду страницы вставляем результат. если не успешен, то вставляем сообщение с сожалением. а вдруг у нас поиск связан с поисковыми системами. тогда надо, чтобы на несуществующую ссылку мы в итоге отдали страницу 404. следовательно потребуется послать заголовок с статусом 404. чего мы не сможем сделать, если скрипт находится посреди страницы. так же может потребоваться редирект, а это опять же заголовки 301 и location, что тоже надо отдавать до вывода

короче, следует принять следующую мысль: вначале обработка данных, затем отдача результата. то есть вначале скрипт, а затем вывод страницы

Автор: Delphist 24.11.2010, 20:27
Цитата(bars80080 @  24.11.2010,  21:12 Найти цитируемый пост)
короче, следует принять следующую мысль: вначале обработка данных, затем отдача результата. то есть вначале скрипт, а затем вывод страницы 

Спасибо за совет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)