Для выборки записей, данные которых удовлетворяют определенным условиям, используется запрос:
pick[поле][оператор]=значение, где
поле – это номер поля, данные которого сравниваются с заданным значением,
оператор – это оператор сравнения, который можно выбрать из следующего списка:
Оператор | Расшифровка | ||
---|---|---|---|
анг. | рус. | мат. | |
lt | less than | меньше чем | < |
le | less or equal | меньше или равно | ≤ |
eq | equal | равно | = |
ge | greater or equal | больше или равно | ≥ |
gt | greater than | больше чем | > |
ne | not equal | не равно | ≠ |
Приведем примеры запросов:
pick.tpl<?php echo " <table>"; foreach ($tab as $dat) echo " <tr> <td>{$dat['edit']}</td> <td>$dat[1]</td> <td>$dat[2]</td> </tr> "; echo " </table> <!-- Выбрать записи со значениями данных в первом поле от 100 до 200 включительно --> <a href='?page=$page&block=$block&pick[1][ge]=100&pick[1][le]=200'>[100...200]</a> <!-- Выбрать записи со значениями поля от 100 до 200, исключая сами числа 100 и 200 --> <a href='?page=$page&block=$block&pick[1][gt]=100&pick[1][lt]=200'>(100...200)</a> <!-- Выбрать записи со значением первого поля, равным 100 --> <a href='?page=$page&block=$block&pick[1][eq]=100'>Равно 100</a> <!-- Выбрать записи со значением первого поля, не равным 100 --> <a href='?page=$page&block=$block&pick[1][ne]=100'>Не равно 100</a> <!-- Отмена условий выборки --> <a href='?page=$page'>Показать все записи</a> "; ?>
pick.tdd
<?php
$types[1] = 'int';
$types[2] = 'varchar(100)'; // Комментарии
$params['multi-record'] = true;
?>
В одном запросе можно задавать условия для нескольких полей. Значениями массива pick могут выступать числовые, символьные, и некоторые временные данные. Выборки не будут работать для тех данных, для которых невозможны операции сравнения .
На условной выборке построена, так называемая, pick-навигация, где применяются запросы вида pick[][eq]
(выборка записей с точным значением данного).
Для таких запросов была введена короткая форма записи p[]
.
Она удобна при запросах одновременно к нескольким полям. При этом, например, код pick[1][eq]=44&pick[2][eq]=66
будет выглядеть, как p[1]=44&p[2]=66
.
Рекомендуем условиться применять короткую форму только для pick-навигации, тогда вам не придется переписывать инструкции для поисковых роботов, находящихся в файле robots.txt. А в остальных случаях применяйте стандартную форму с запросом pick.
Вместо номера поля в качестве ключа массива pick допустимо применять 'rec'.
Пример: ?block=11&p[rec]=22
. Такой запрос дает почти такой же результат, как и запрос single: ?block=11&single=22
, за исключением того, что не будут извлечены соседние записи.
Естественно, если в шаблоне предусмотрено другое представления для режима single, то блок при pick-запросе в этом представлении выведен не будет.
Pick-запрос к одной записи можно применять, когда с помощью ajax мы обновляем одну запись среди множества других записей:
<script> $.ajax({ url: '?block=11&p[rec]=22', success: function(response) { $('#rec-22').html(response) } }) </script>