Ребят помогите разобраться в чем дело. Поиск по сайту PHP

Статус
Закрыто для дальнейших ответов.

posy

Member
Регистрация
17.01.2012
Сообщения
20
Пытаюсь сделать поиск по сайту на PHP, этот код есть результат доработки 2-х других найденных на просторах интернета.
Код не ищет в столбце ITEMS, а выводит всю таблицу. В запросе стояло название столбца вместо *, но тогда он выводил только 1 столбец ITEMS, а два других оставались пустыми.

Код:
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'price');
if(!mysql_connect(DB_HOST, DB_USER, DB_PASS)) {
	echo "Не удалось подключиться";
}
if(!mysql_select_db(DB_NAME)) {
	echo "База не найдена";
}
echo "<table width=\"100%\" border=\"1\">";
echo "<tr><td>CODE</td><td>ITEMS</td><td>PRICE</td></tr>";
$search = $_POST['search'];
$query = mysql_query("SELECT * FROM priceWin WHERE ITEMS LIKE '%$search%'") or die(mysql_error());
$n = mysql_num_rows($query) or die(mysql_error());
for($i=0; $i<$n; $i++) {
	echo "<tr>";
$f = mysql_fetch_array($query);
echo "<td>$f[code]</td><td>$f[ITEMS]</td><td>$f[PRICE]</td>";
echo "</tr>";
}
echo "</table>";
?>
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
Код:
$_POST['search']
а запрос отправляете?
 

posy

Member
Регистрация
17.01.2012
Сообщения
20
да, вот код тела index.html.
Код:
<body>
	    <div class="gl">
		    <div class="ob1">
			    <form name="form1" method="POST" action="poisk.php">
			    <input type="text" name="search" value="Поиск" id="search">
			    <input type="submit" name="poiskb" value="Искать" >
			    </form>
			    <table class="tb1">
				    <tr>
					    <td width="100px"><a href="kakisk.html">Как искать?</a></td>
					    <td width="100px"><a href="reg.html">Регистрация</a></td>
					    <td width="80px"><a href="cont.html">Контакты</a></td>
					    <td width="100px"><a href="price.xls">Скачать прайс</a></td>
				    </tr>
			    </table>
			   
		    </div>
		    <div class="ob2">
			    <table>
				    <tr>
					    <td>
						    <form action="" method="POST" enctype="multipart/form-data">
							    <p class="res">Выберите раздел из каталога прайс-листа</p>
							    <table>
								    <tr>
									    <td><input type="checkbox" name="Optroni" value="opto">Оптосемисторы</td>
									    <td><input type="checkbox" name="Trans" value="trans1">Транзисмторы</td>
								    </tr>
								    <tr>
									    <td><input type="checkbox" name="Micro" value="micro">Микросхемы</td>
									    <td><input type="checkbox" name="Doide" value="diode" class="di">Диоды</td>
								    </tr>
								    <tr>
									    <td><input type="checkbox" name="Conder" value="conder">Конденсаторы</td>
									    <td><input type="checkbox" name="pick" value="pick1" class="cd">Pick-up CD/DVD</td>
								    </tr>
								    <tr>
									    <td><input type="checkbox" name="MS" value="mk">МастерКит</td>
									    <td><input type="checkbox" name="provod" value="prov" class="pr">Провода</td>
								    </tr>
							    </table>
											    <input type="submit" name="bt1" value="Показать" class="bt1">
						    </form>
					    </td>
					    <td>
						    <div>
							    <img src="" class="img1">
						    </div>
					    </td>
				    </tr>
			    </table>
			   
	   
	   
    </body>
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
странно, вывод всего что есть тут возможен только если $_POST['search'] = ''
попробуйте что ли
Код:
?>
<xmp>
<?print_r($_POST);?>
</xmp>
<?
это чтобы понять что вообще передается
 
  • Like
Реакции: posy

posy

Member
Регистрация
17.01.2012
Сообщения
20
Спасибо, БОЛЬШОЕ!!! За разумную подсказку.

Вообщем переделал форму, вместо 2-го Инпута- сделал кнопку и все получилось.
А прошлый вариант передавал массив с 2-мя переменными, собсьтвенно само что надо искать и [poiskb]=>искать.

А почему не получалось, ведь я указал что значение надо искать в $_POST['search'], а не в самом массиве $_POST?

вообщем буду теперь дорабатовать его)) еще раз огромное спасибо

А можно еще вопрос?..

То что в MySQL'e, поисковики не индексируют.... А как сделать, так чтобы странички сами генерировались из БД и были доступны для поисковиков.
Подскажите алгоритм плиз и подводные камни.
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
То что в MySQL'e, поисковики не индексируют.... А как сделать, так чтобы странички сами генерировались из БД и были доступны для поисковиков.
Подскажите алгоритм плиз и подводные камни.
делать просто страницы с каталога с возможностью сортировки и постраничным разбиением
а если хотите продвинуть что-то из товаров, то можно экспортировать на яндекс-маркет в виде xml-файла
 

posy

Member
Регистрация
17.01.2012
Сообщения
20
А рядом нет ссылки, где можно почитать как это реализовывается?
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
Как-то так:
Код:
<?
$items_on_page = 10;
$page = 1;
if (isset($_GET['page']) && (int)$_GET['page']) $page = (int)$_GET['page'];
$ot = ($page-1)*$items_on_page;
$do = $page*$items_on_page;
$sql = "
SELECT
  ITEM_NAME
FROM
  table
";
$pages_num = mysql_num_rows($sql);
$sql .= "
LIMIT
  ".$ot.", ".$do."
";
$res = mysql_query($sql);
?>
<?while ($row = mysql_fetch_assoc($res)) {?>
<div class="elem_i">
  <?=$row['ITEM_NAME']?>
</div>
<?}?>
<div class="pages">
<?for($i=1;$i<=$pages_num;$i++){?>
  <?if ($page == $i){?>
   <b><?=$i?></b>
  <?} else {?>
   <a href="?page=<?=$i?>"><?=$i?></a>
  <?}?>
<?}?>
</div>
 

webwork

Well-Known Member
Регистрация
19.12.2011
Сообщения
97
Брррр. подождите. Поисковики не индексируют контент который лежит в MySQL'e ?
Я правильно понял?
Тоесть вся моя работа по оптимизации контента - псу под хвост?
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Как-то так:
Код:
<?
$items_on_page = 10;
$page = 1;
if (isset($_GET['page']) && (int)$_GET['page']) $page = (int)$_GET['page'];
$ot = ($page-1)*$items_on_page;
$do = $page*$items_on_page;
$sql = "
SELECT
ITEM_NAME
FROM
table
";
$pages_num = mysql_num_rows($sql);
$sql .= "
LIMIT
".$ot.", ".$do."
";
$res = mysql_query($sql);
?>
<?while ($row = mysql_fetch_assoc($res)) {?>
<div class="elem_i">
<?=$row['ITEM_NAME']?>
</div>
<?}?>
<div class="pages">
<?for($i=1;$i<=$pages_num;$i++){?>
<?if ($page == $i){?>
<b><?=$i?></b>
<?} else {?>
<a href="?page=<?=$i?>"><?=$i?></a>
<?}?>
<?}?>
</div>
Вот можно узнать, ЗАЧЕМ разделять двойными кавычками?
$sql .= "
LIMIT
".$ot.", ".$do."
";
Не проще так?
Код:
$sql .= "LIMIT $ot, $do";
Или на крайняк так:
Код:
$sql .= 'LIMIT '.$ot.', '.$do;
Брррр. подождите. Поисковики не индексируют контент который лежит в MySQL'e ?
Поисковики индексируют всё, что выводится на страницы сайта или всё, что укажешь в файле robots.txt.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ