Является ли этот способ сделать это «лучшим способом»?

0

У меня есть рекламный сайт с большим количеством записей, хранящихся в mysql db.

На моей главной странице у меня есть форма, в которой пользователи могут указать критерии поиска. Действие установлено в файл myPhp.php.

myPhp.php содержит NO HTML, только php-код, и в основном это примерно так:

1- get values from FORM and build a SQL query
2- query MYSQL db. 
3-display all results in a table using
`while($row=mysql_fetch_array($res))`
4- echo the table.

В этой таблице, созданной на PHP, у меня также есть несколько ссылок, и всякий раз, когда они нажимаются, вызывается функция javascript на родительской странице, которая присваивает какое-либо скрытое значение ввода, а затем снова отправляет форму выбранная переменная.

Ех: каждый раз, когда пользователи хотят перейти на следующую страницу в результатах поиска, им нужно щелкнуть ссылку "Далее", созданную на PHP, а затем вызывается javascript, который устанавливает скрытое значение ввода в "следующий", а затем форма снова представляется, а файл PHP GETS - переменная из скрытого ввода и определяет, что ее значение установлено на "NEXT", а затем отображает следующие результаты.

Неужели нет другого способа сделать все это? (то есть, лучший способ, когда дело доходит до производительности и надежности)

Я все еще учился, поэтому я очень благодарен за вашу помощь! Я буду обновлять этот вопрос каждый раз, когда вам нужно больше ввода.

Спасибо

  • 0
    Я изменил «querystring» на «SQL query» в вашем вопросе, потому что querystring имеет другое специфическое значение в веб-контексте.
  • 1
    Следует помнить, что не у всех пользователей включен JavaScript! Вы также должны убедиться, что вы можете использовать ваши ссылки без JavaScript
Теги:

3 ответа

3
Лучший ответ

Замените следующий вызов javascript ссылкой на

http://yourdomain/myPhp.php?page=2

Затем проверьте параметр get в файле myPhp.php:

if(isset($_GET['page']) AND is_numeric($_GET['page'])){
    $limit = (int) $_GET['page'] * MAX_RECORDS . ', ' . MAX_RECORDS;
} else {
    $limit = MAX_RECORDS;
}

//...
$query .= 'LIMIT '. $limit;

Конечно, вы должны изменить его, так как ваши константы меняются и т.д.
Этот метод называется разбиением на страницы. Взгляните на Zend Framework Paginator модуль для лучшего понимания.

  • 0
    Хорошо, но если я снова отправлю переменную, как вы упомянули выше, в файл PHP, не исчезнут ли другие переменные, которые были отправлены формой? (например, строка запроса, цены и другие пользовательские данные)
  • 0
    Foa: Не отправлять строки запроса. 2: Если вы не публикуете свои данные, вы не можете получить их из суперглобального сообщения POST.
Показать ещё 1 комментарий
0

Если эти ссылки имеют по крайней мере один и тот же класс на одной плате (с атрибутом title), вы можете присоединить к ним, чтобы присоединить все эти ссылки к событию с одним кликом и протестировать, чтобы увидеть, какой заголовок находится на нажатом элементе.

С этим вы можете использовать переключатель для запуска правильной функции для выполнения задачи (я полагаю, используя JQuery/Ajax).

Это должно сработать. По крайней мере, нет скрытых полей.

Пример:

<a href="myPhp.php?whatever you querystring is" title="NEXT">Next</a>

<a href="myPhp.php?whatever you querystring is" title="AdDetails">Ad Details</a>
0

При создании ссылки вы можете использовать запрос, чтобы указать параметр, который вы хотите отправить на сервер, вместо отправки формы. Поэтому, если у вас есть скрытый ввод в форме, называемой следующей, вы можете выполнить одно и то же:

<a href="myPhp.php?next=NEXT">Next</a>

На странице myPhp.php вы можете получить значение следующего так же, как при отправке формы.

  • 0
    Хорошо, но если я снова отправлю переменную, как вы упомянули выше, в файл PHP, не исчезнут ли другие переменные, которые были отправлены формой? (например, строка запроса, цены и другие пользовательские данные)
  • 0
    Ой. Я не понял, что в форме есть другие данные. Я думал, что вы хотите знать, по какой ссылке щелкнул пользователь. Если все поля в форме скрыты, то вы используете этот метод, если пользователь может редактировать форму, тогда делайте так, как вы уже это делаете. Вы можете добавить несколько строк запроса следующим образом: url? Var = val & var2 = val2 & var3 = val3

Ещё вопросы

Сообщество Overcoder
Наверх
Меню