[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отбор через форму!
RuslanMRP
Привет! Помогите! как реализовать, имееться форма в ней 3 списка - производитель, тип, вязкость: Требуеться чтобы делала отбор по любому из 3 полей, по 2 из полей или по всем.
Как это сделать. Работает только если выбираю по всем 3 полям. Если 2 или 1 то не отбирает.

Форма:
<table border=0 width=60% align=center> 
<form
action="indexNarp2.php" method="post">
<tr>
<td
class="border" align="right"><label for="proizvoditel">Производитель</label></td>
<td><select
name="proizvoditel" id="proizvoditel">
<option
value="" selected="selected"></option>
<option
value="ALPINE">ALPINE</option>
<option
value="PETRONAS">PETRONAS</option>
<option
value="TITAN">TITAN</option>
</select></td>


<td
class="border" align="right"><label for="tip">Тип</label></td>
<td><select
name="tip" id="tip">
<option
value="" selected="selected"></option>
<option
value="Полусинтетика">Полусинтетическое</option>
<option
value="Синтетика">Синтетическое</option>
</select></td>


<td
class="border" align="right"><label for="viazkost">Вязкость</label></td>
<td><select
name="viazkost" id="viazkost">
<option
value="" selected="selected"></option>
<option
value="0W-30">0W-30</option>
<option
value="0W-40">0W-40</option>
<option
value="10W-40">10W-40</option>
<option
value="10W-50">10W-50</option>
<option
value="10W-60">10W-60</option>
<option
value="15W-40">15W-40</option>
<option
value="20W-50">20W-50</option>
<option
value="5W-30">5W-30</option>
<option
value="5W-40">5W-40</option>
<option
value="5W-50">5W-50</option>
<option
value="15W-50">15W-50</option>
</select></td>


<td
colspan="2" align="center"><input type="submit" name="gomaslo" id="button" value="Подобрать" />
</td>
</tr>
</form>
</table>




Обработка:
<? 
$proizvoditel = $_POST['proizvoditel'];
$tip = $_POST['tip'];
$viazkost = $_POST['viazkost'];

$login = $_SESSION['login'];
include "setup/options.php";
if(!mysql_connect($host,$USER,$PASSWD))
{
echo "<h1>Ошибка сервера MySql.</h1>";
exit;
}
echo $_SESSION['fio'];
mysql_select_db($DB);

$r=mysql_query("select * from MASLO where proizvoditel='".$proizvoditel."' and tip='".$tip."' and viazkost='".$viazkost."'");
echo "<table border=0 width=100% bgcolor=#dadada>";
echo "<form method=POST action=index1.php>";
echo "<td valign='right width='12%' height='15px' align='center' bgcolor=#FFFFFF>Артикул</td>
<td valign='right width='28%' height='' align='center' bgcolor=#FFFFFF>Наименование изделий</td>
<td valign='right width='45%' height='' align='center' bgcolor=#FFFFFF>Описание</td>
<td valign='right width='10%' height='' align='center' bgcolor=#FFFFFF>Цена</td>
<td valign='right width='5%' height='' align='center' bgcolor=#FFFFFF>картинка</td>
<td align='center'>Корзина</td></tr>"
;
for ($i=0; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td align=left width=12% height=10% bgcolor=#FFFFFF>$f[proizvoditel]</td><td width=28% align=left bgcolor=#FFFFFF height=10px>$f[viazkost]</td><td width=45% align=left bgcolor=#FFFFFF height=10px>$f[tip]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[opisanie]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[cena]</td><td width=5% align=left bgcolor=#FFFFFF height=5px><a id='example1' href='kartinki/' . $f[image] .''><img src='kartinki/' . $f[image] .'' width=75px height=75px></a></td><td align=center ><input type=checkbox name=Arr[] value=".$f[id]."></td></tr>";
}
echo "<tr><td align=center colspan=6><input type=submit name=buy value=заказать></></td></tr>";
echo "</table>";
echo "</form>";
?>




Спустя 28 минут, 28 секунд (14.12.2010 - 12:04) aH6y написал(а):
RuslanMRP
$query = 'SELECT * FROM MASLO WHERE ';

if (isset($_POST['proizvoditel'])){
$query .= 'proizvoditel='".$proizvoditel."' ';
}


Остальные два по аналогии.

.= значит дописывание к переменной.

Спустя 20 минут, 12 секунд (14.12.2010 - 12:24) sergeiss написал(а):
Встречный вопрос: а нафига столько кода приведено, если вопрос только по части? Уважать надо людей, которых спрашиваешь...

По теме:
// создаешь массив
$arr=array();
// где угодно, в т.ч. в цикле, добавляешь в него данные
$arr[]='условие 1';
...

$arr[]='условие N';
// и затем объединяешь всё вместе:
$where_array=impode( ' and ', $arr );

Спустя 4 минуты, 13 секунд (14.12.2010 - 12:29) RuslanMRP написал(а):
Спасибо!!!!!!!!! буду пробовать.


А почему столько много кога - потому что, думаю что так лучше можно разобраться. Теперь буду писать как вы говорите!

Спустя 12 минут, 9 секунд (14.12.2010 - 12:41) RuslanMRP написал(а):
aH6y

Когда написал:

$query ='select * from MASLO where';
if (isset($_POST['proizvoditel'])){
$query .= 'proizvoditel='".$proizvoditel."'';
}
if (isset($_POST['tip'])){
$query .= 'tip='".$tip."' ';
}
if (isset($_POST['viazkost'])){
$query .= 'viazkost='".$viazkost."' ';
}



Выдает ошибку - не могу понять где не правильно ковычки?

Parse error: syntax error, unexpected '"' in

Спустя 5 минут, 42 секунды (14.12.2010 - 12:47) sharki написал(а):
$query ="select * from MASLO where";
if (isset($_POST['proizvoditel'])){
$query .= "proizvoditel='".$proizvoditel."'";
}
if (isset($_POST['tip'])){
$query .= "tip='".$tip."'";
}
if (isset($_POST['viazkost'])){
$query .= "viazkost='".$viazkost."'";
}

Спустя 12 минут, 21 секунда (14.12.2010 - 12:59) linker написал(а):
И получаем полную фигню, делаем как сказал sergeiss
$conditions = array()
if (isset($_POST['proizvoditel']))
$conditions[] = "proizvoditel='".$proizvoditel."'";
if (isset($_POST['tip']))
$conditions[] = "tip='".$tip."'";
if (isset($_POST['viazkost']))
$conditions[] = "`viazkost`='".$viazkost."'";
$query = "SELECT * FROM `MASLO`" . (count($conditions) ? " WHERE " . implode(" AND ", $conditions) : "");
P.S. Не забываем про фильтрацию значений из $_POST.

Спустя 1 минута, 6 секунд (14.12.2010 - 13:00) aH6y написал(а):
RuslanMRP
Да ошибся чуть.

Правильнее писать:
SELECT * FROM MASLO WHERE


linker
Согласен мой вариант примитивный.

Спустя 3 минуты, 3 секунды (14.12.2010 - 13:03) RuslanMRP написал(а):
$conditions = array()
if (isset($_POST['proizvoditel']))
$conditions[] = "proizvoditel='".$proizvoditel."'";
if (isset($_POST['tip']))
$conditions[] = "tip='".$tip."'";
if (isset($_POST['viazkost']))
$conditions[] = "viazkost='".$viazkost."'";
$r ="select * from MASLO" . (count($conditions) ? " WHERE " . implode(" AND ", $conditions) : "");


Выдает ошибку на {}, что надо исправить?


Parse error: syntax error, unexpected T_IF

Спустя 1 минута, 17 секунд (14.12.2010 - 13:04) linker написал(а):
Забыл концовку ;
$conditions = array();

Спустя 4 минуты, 51 секунда (14.12.2010 - 13:09) RuslanMRP написал(а):
Ребята - что не так почему не выводит?

$conditions = array();
if (isset($_POST['proizvoditel']))
$conditions[] = "proizvoditel='".$proizvoditel."'";
if (isset($_POST['tip']))
$conditions[] = "tip='".$tip."'";
if (isset($_POST['viazkost']))
$conditions[] = "viazkost='".$viazkost."'";
$r="select * from MASLO" . (count($conditions) ? " WHERE " . implode(" AND ", $conditions) : "");

echo "$r";
echo "<table border=0 width=100% bgcolor=#dadada>";
echo "<form method=POST action=index1.php>";
echo "<td valign='right width='12%' height='15px' align='center' bgcolor=#FFFFFF>Артикул</td>
<td valign='right width='28%' height='' align='center' bgcolor=#FFFFFF>Наименование изделий</td>
<td valign='right width='45%' height='' align='center' bgcolor=#FFFFFF>Описание</td>
<td valign='right width='10%' height='' align='center' bgcolor=#FFFFFF>Цена</td>
<td valign='right width='5%' height='' align='center' bgcolor=#FFFFFF>картинка</td>
<td align='center'>Корзина</td></tr>"
;
for ($i=0; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td align=left width=12% height=10% bgcolor=#FFFFFF>$f[proizvoditel]</td><td width=28% align=left bgcolor=#FFFFFF height=10px>$f[viazkost]</td><td width=45% align=left bgcolor=#FFFFFF height=10px>$f[tip]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[opisanie]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[cena]</td><td width=5% align=left bgcolor=#FFFFFF height=5px><a id='example1' href='kartinki/' . $f[image] .''><img src='kartinki/' . $f[image] .'' width=75px height=75px></a></td><td align=center ><input type=checkbox name=Arr[] value=".$f[id]."></td></tr>";
}
echo "<tr><td align=center colspan=6><input type=submit name=buy value=заказать></></td></tr>";
echo "</table>";
echo "</form>";




Ошибка:

mysql_num_rows(): supplied argument is not a valid MySQL result resource

Спустя 42 минуты, 51 секунда (14.12.2010 - 13:52) linker написал(а):
RuslanMRP
Ну а подумать не судьба? Я же написал $query = "..."; а уж отдать запрос мускулу должен был сам.
$r = mysql_query($query);

Спустя 25 минут, 36 секунд (14.12.2010 - 14:18) RuslanMRP написал(а):
linker

Я так пробовал! не выводит. Или я вообще приду...... Что я не так написал?

Если проверяю что передала в переменную: echo "$r"; - Resource id #8
Если проверяю что передала в переменную: echo "$query"; - select * from MASLO WHERE proizvoditel='TITAN' AND tip='' AND viazkost=''
Пишу:

$conditions = array();
if (isset($_POST['proizvoditel']))
$conditions[] = "proizvoditel='".$proizvoditel."'";
if (isset($_POST['tip']))
$conditions[] = "tip='".$tip."'";
if (isset($_POST['viazkost']))
$conditions[] = "viazkost='".$viazkost."'";
$query = "select * from MASLO" . (count($conditions) ? " WHERE " . implode(" AND ", $conditions) : "");
$r = mysql_query($query);
echo "$r";
echo "<table border=0 width=100% bgcolor=#dadada>";
echo "<form method=POST action=index1.php>";
echo "<td valign='right width='12%' height='15px' align='center' bgcolor=#FFFFFF>Артикул</td>
<td valign='right width='28%' height='' align='center' bgcolor=#FFFFFF>Наименование изделий</td>
<td valign='right width='45%' height='' align='center' bgcolor=#FFFFFF>Описание</td>
<td valign='right width='10%' height='' align='center' bgcolor=#FFFFFF>Цена</td>
<td valign='right width='5%' height='' align='center' bgcolor=#FFFFFF>картинка</td>
<td align='center'>Корзина</td></tr>"
;
for ($i=0; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td align=left width=12% height=10% bgcolor=#FFFFFF>$f[proizvoditel]</td><td width=28% align=left bgcolor=#FFFFFF height=10px>$f[viazkost]</td><td width=45% align=left bgcolor=#FFFFFF height=10px>$f[tip]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[opisanie]</td><td width=10% align=left bgcolor=#FFFFFF height=10px>$f[cena]</td><td width=5% align=left bgcolor=#FFFFFF height=5px><a id='example1' href='kartinki/' . $f[image] .''><img src='kartinki/' . $f[image] .'' width=75px height=75px></a></td><td align=center ><input type=checkbox name=Arr[] value=".$f[id]."></td></tr>";
}

Спустя 2 часа, 40 минут, 34 секунды (14.12.2010 - 16:58) RuslanMRP написал(а):
linker

Эта обработка все равно работае ТОЛЬКО по 3 полям, по 2 или 1 полю оно не ищет

Спустя 9 минут, 4 секунды (14.12.2010 - 17:07) linker написал(а):
Посмотрел на форму, тебе подойдет
$conditions = array();
if (!empty($_POST['proizvoditel']))
$conditions[] = "proizvoditel='".$proizvoditel."'";
if (!empty($_POST['tip']))
$conditions[] = "tip='".$tip."'";
if (!empty($_POST['viazkost']))
$conditions[] = "viazkost='".$viazkost."'";
$query = "select * from MASLO" . (count($conditions) ? " WHERE " . implode(" AND ", $conditions) : "");
$r = mysql_query($query);

echo "<table border=0 width=100% bgcolor=#dadada>";
echo "<form method=POST action=index1.php>";
echo "<td valign='right width='12%' height='15px' align='center' bgcolor=#FFFFFF>Артикул</td>
<td valign='right width='28%' height='' align='center' bgcolor=#FFFFFF>Наименование изделий</td>
<td valign='right width='45%' height='' align='center' bgcolor=#FFFFFF>Описание</td>
<td valign='right width='10%' height='' align='center' bgcolor=#FFFFFF>Цена</td>
<td valign='right width='5%' height='' align='center' bgcolor=#FFFFFF>картинка</td>
<td align='center'>Корзина</td></tr>"
;
while($f = mysql_fetch_assoc($r))
{
... // тут вставляешь отображение
}

Спустя 10 минут, 36 секунд (14.12.2010 - 17:18) RuslanMRP написал(а):
linker


wacko.gif Я походу не понимаю что-то. Все равно не ищет!

Спустя 1 минута, 44 секунды (14.12.2010 - 17:20) linker написал(а):
Сделай
echo $query = "select * from MASLO" . (count($conditions) ? " WHERE " . implode(" AND ", $conditions) : "");
и смотри как выглядит запрос, заодно смотри что у тебя вообще в базе находится.

Спустя 8 минут, 22 секунды (14.12.2010 - 17:28) RuslanMRP написал(а):
linker

Если заполняю два поля, выводит:

select * from MASLO WHERE proizvoditel='TITAN' AND tip='Синтетика' AND viazkost=''


Спустя 1 минута, 13 секунд (14.12.2010 - 17:29) RuslanMRP написал(а):
Я думаю мешат And..... который вставляеться если я даже не выбираю по полю

Спустя 1 минута, 21 секунда (14.12.2010 - 17:31) linker написал(а):
Блин, стоп
$conditions = array();
if (!empty($_POST['proizvoditel']))
$conditions[] = "proizvoditel='". mysql_real_escape_string($_POST['proizvoditel'])."'";
if (!empty($_POST['tip']))
$conditions[] = "tip='".mysql_real_escape_string($_POST['tip'])."'";
if (!empty($_POST['viazkost']))
$conditions[] = "viazkost='".mysql_real_escape_string($_POST['viazkost'])."'";

Спустя 2 минуты, 39 секунд (14.12.2010 - 17:33) RuslanMRP написал(а):
linker


ОГРОМНОЕ ВАМ СПАСИБО!!!!!!!!!!!!!! ЗА ТЕРПЕНИЕ И ПОМОЩЬ!!!!

Спустя 2 минуты, 19 секунд (14.12.2010 - 17:35) linker написал(а):
Всегда пожалуйста. smile.gif

Спустя 6 часов, 18 минут, 16 секунд (14.12.2010 - 23:54) GreatMax написал(а):
А не проще на Ajax будет сделать?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.