В общем, у меня следующая проблема.
Мне нужно организовать отчет. Я сделал следующие критерии, по которым он составляется - описание (поиск по словам), владелец (сортировка), стоимость (от-до), размеры (от-до), состояние (от худшего к лучшему).
Необходимо, чтобы выводились записи из БД по этим критериям, если они выбраны. В общем то я так и сделал. При выборе одного из критериев идет вывод, как следует. Сделал это на основе одной функции, но в зависимости от условия, в котором она выполняется в ней меняется переменная, которая отвечает за сортировку, данные, которые выводить. Но возникла следующая проблема - при выборе нескольких чекбоксов результат выводится на два запроса - т.е два результата последовательно. Мне необходимо, чтобы выводился один приоритетный результат. В функции очень много массивных выводов, поэтому в условие их не закинуть. Вывод производится за счет foreach и require файл-шаблона, в котором указаны переменные записи.
Проблема двух результатов:
Код для большего понимания:
// Получение данных через POST.
if (@$_REQUEST['repHandle']) {
function entReport($sql) {
if(isset($_POST['entTextValue'])) {
// Коннект к БД.
$cn_db = new cn_db();
// Получение результата.
$row = $cn_db->select_list($sql);
if(count($row)) {
$end_result = '';
foreach($row as $r) {
$result = $r['ent_text'];
$bold = '<span class="found">'.$word.'</span>';
$entResult = sql_sec('
SELECT *, UNIX_TIMESTAMP(ent_stamp) AS ent_stamp
FROM '.TBLENT.'
WHERE ent_text="'.mysql_real_escape_string(str_replace(strtolower($word), $bold, $result)).'"
ORDER BY ent_stamp DESC
') or die(mysql_error());
for ($entBase = array(); $entRow = mysql_fetch_array($entResult); $entBase[] = $entRow);
require_once "templates/default/rprt_top.tpl";
foreach ($entBase as $entElement) {
require "templates/default/rprt.tpl";
}
echo "</tr>";
}
echo $end_result;
} else {
echo '<li>По вашему запросу ничего не найдено</li>';
}
}
}
if(isset($_POST['entTextOn']) && $_POST['entTextOn'] == 'On') {
$word = mysql_real_escape_string($_POST['entTextValue']);
$sql = "SELECT * FROM entries WHERE ent_text LIKE '%".$word."%' ORDER BY ent_text LIMIT 10";
entReport($sql);
} else {
print "none!";
}
if(isset($_POST['entCreatorOn']) && $_POST['entCreatorOn'] == 'On') {
$sql = "SELECT * FROM entries WHERE ent_text LIKE '%".$word."%' ORDER BY ent_creator LIMIT 10";
entReport($sql);
} else {
print "none!";
}
}