| Привет Trionon! Добавил ещё один столбец. Его не найти.
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
// восстановление строк входных параметров
function unmq($a)
{ return $a === null ? null : (get_magic_quotes_gpc() && is_string($a)
? stripslashes($a): $a); }
//подготовка параметров формы
function arg($a){ return'"'.htmlspecialchars($a).'"';}
// генерация выражения поиска
function gen_filter($a, $fld)
{
if($a == '' || $a == '**')return 1;
$d1 = array('|', '&'); $s1 = array('%', '_');
$d2 = $s1; $s2 = array('*','?');
$d3 = array('\\%', '\\_'); $s3 = $d1;
$t1 = array();
foreach(explode('|', $a) as $b) // цикл по логическим суммам
{
$t2 = array();
foreach(explode('&', $b) as $val) // цикл по термам
{ $not = '';
if($val[0] == '^') {$val = substr($val, 1); $not = 'NOT ';}
$val = str_replace($s1, $d1, $val);
$val = str_replace($s2, $d2, $val);
$val = "$not( &1 LIKE '".str_replace($s3, $d3, //
mysql_escape_string($val))."')";
$t2[] = $val;
}
$t2 = implode(" AND ", $t2); // объединение термов
$t1[] = $t2;
}
$t1 = implode(" OR ", $t1); // объединение сумм
return "( ". str_replace('&1',"$fld", $t1 ). " )"; // подстановка полей
}
// ----- начало кода -----
// загрузка строк параметров поиска
$name = unmq(@$_GET['name']);
$evid = unmq(@$_GET['evid']);
$contr= unmq(@$_GET['contr']);
$doz= unmq(@$_GET['doz']);
// вывод формы запроса
echo ("
<form action=? >
<br>Название: <input name=name value=".arg($name).">
<br>Показания: <input name=evid value=".arg($evid).">
<br>Противопоказания: <input name=contr value=".arg($contr).">
<br>Дозы:<input name=contr value=".arg($doz).">
<input type=submit value=Искать>
</form>");
// построение фильтрующих выражений
$t = array();
$t[] = gen_filter("$name", 'name');
$t[] = gen_filter("*$evid*", 'evid');
$t[] = gen_filter("*$contr*", 'contr');
$t[] = gen_filter("*$doz*", 'doz');
if($t[0] == '1' && $t[1] == '1' && $t[2] == '1') $t[0] = 0;
// сборка фильтров в запроос
$sql = "SELECT * FROM evid WHERE ". implode(" AND ", $t);
// исполнение запроса
$res = mysql_query($sql) or die("Error in $sql :". mysql_error());
$numrows = mysql_num_rows($res);
// вывод отчета
echo "$numrows rows found<br>\r\n";
for($n = 1; $row = mysql_fetch_assoc($res); $n++)
{
$name = nl2br(htmlspecialchars($row['name']));
$evid = nl2br(htmlspecialchars($row['evid']));
$contr = nl2br(htmlspecialchars($row['contr']));
$doz = nl2br(htmlspecialchars($row['doz']));
echo "<hr/><b>$n.</b> Name: <b>$name</b><br/>\r\n"
. "<br/><U><B>Показания:</B></U> <I>$evid</I><br/>\r\n"
. "<br/><U><B>Противопоказания</B></U>: <I>$contr</I><br/>\r\n"
. "<br/><U><B>Способ применения, дозы</B></U>: <I>$contr</I><br/>\r\n";
}
?> | |