|
|
|
| Здравствуйте!
Есть вот такой код (я его немного переделал):
<form action="index.php" method="post" name="form_s">
<p class="search_t">Поисковый запрос должен быть не менее 4-х символов.</p>
<p><input name="search" type="text" size="25" maxlength="40">
<br>
<input class="search_b" name="submit_s" type="submit" value="Искать">
</p>
</form>
<? include ("bd.php");
if (isset($_POST['submit_s']))
{
$submit_s = $_POST['submit_s'];
}
if (isset($_POST['search']))
{
$search = $_POST['search'];
}
if (isset($submit_s))
{
if (empty($search) or strlen($search) < 4)
{
exit ("<p>Поисковый запрос не введен, либо он менее 4-х символов.</p>");
}
$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);
}
else
{
exit("<p>Вы обратились к файлу без необходимых параметров.</p>");
}
?>
<?
$result = mysql_query("SELECT * FROM jos_product WHERE (num LIKE '%$search%')
OR (name LIKE '%$search%') OR (an LIKE '%$search%') OR (note LIKE '%$search%') ORDER BY price",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору mwc@korgp.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
?>
<table class="table" border="1" cellpadding="3" cellspacing="0" width="100%" bordercolordark="white" bordercolorlight="silver">
<tr class="zagtrtable" align="center">
<td height="20">Номер детали</td>
<td>Наим. детали</td>
<td>Цена</td>
<td>Цена, рек. </td>
<td>Кол-во</td>
<td>Аналог</td>
<td>Поставщик</td>
<td>Прим.</td>
</tr>
<?php
$myrow = mysql_fetch_array($result);
do
{
$r = $myrow["price"]/$myrow["rec"];
$r = intval($r);
printf ("<tr>
<td>".$myrow['num']."</td>
<td>".$myrow['name']."</td>
<td>".$myrow['price']."</td>
<td>".$myrow['rec']."</td>
<td>".$myrow['qty']."</td>
<td>".$myrow['an']."</td>
<td>".$myrow['seller']."</td>
<td>".$myrow['note']."</td>
</tr>",$myrow["num"],$myrow["name"],$myrow["price"], $myrow["rec"],$myrow["qty"],$myrow["an"], $myrow["seller"], $myrow["note"], $r);
}
while ($myrow = mysql_fetch_array($result));
}
else
{
echo "<p>Информация по Вашему запросу не найдена.</p>";
exit();
}
?>
|
Помощь нужна вот в чем: в базе могут присутствовать данные, которые записаны через дефис или пробел, или слитно (например: 2531025050, 25310-25050, 25310 25050). Так вот при вводе в поле поиска 2531025 результат естественно только 2531025050, а остальные не выдает... Раньше у меня было вот так:
if(!empty($_POST['name']))
$tmp1 = " and REPLACE(REPLACE(REPLACE(name, ' ', ''), '_', ''), '-', '') "
. "LIKE '%".$_POST['name']."%' ";
$query = "SELECT * FROM jos_product WHERE hide='show' ".$tmp1." ORDER BY price";
|
куда теперь прицепить and REPLACE(REPLACE(REPLACE(name, ' ', ''), '_', ''), '-', '') я не знаю, потому как специалист... подскажите пожалуйста... | |
|
|
|
|
|
|
|
для: p.novikov
(04.01.2009 в 15:43)
| | Ну так а туда же и прицепите, где было...
<?
"......WHERE REPLACE(REPLACE(REPLACE(num , ' ', ''), '_', ''), '-', '') LIKE '%$search%'
OR (REPLACE(REPLACE(REPLACE(name, ' ', ''), '_', ''), '-', '') LIKE '%$search%'..........."
|
только вот это Вам eще нужно привести в порядок.
<?
$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);
|
| |
|
|
|
|
|
|
|
для: Николай2357
(04.01.2009 в 21:27)
| | а я бы сперва все поля склеил, а потом уже над результатом стал бы замены и LIKE учинять. | |
|
|
|
|
|
|
|
для: Trianon
(04.01.2009 в 21:42)
| | А что не так здесь?
$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);
|
и что значит поля склеил.... просто я же не спец и запрос не мой... я его пытаюсь для своих нужд приспособить | |
|
|
|
|
|
|
|
для: p.novikov
(05.01.2009 в 13:08)
| | Здесь не так всё.
Все эти три строки ничего, кроме вреда не приносят. Первая слегка, остальные две - по крупному.
Склеить - значит из строк нескольких полей сделать одну большую строку, и уже в ней менять и искать.
Просто чтоб не по несколько раз на запись выполнять замены и поиски.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Trianon
(05.01.2009 в 15:46)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: p.novikov
(05.01.2009 в 16:31)
| |
SELECT * FROM jos_product
WHERE (REPLACE(REPLACE(REPLACE(CONCAT(num,'/',name,'/',an,'/',note), ' ', ''), '_', ''), '-', '')
LIKE '%$search%') ORDER BY price
|
| |
|
|
|
|
|
|
|
для: Trianon
(05.01.2009 в 16:41)
| | Благодарствую! | |
|
|
|