Как это сделать. Работает только если выбираю по всем 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()P.S. Не забываем про фильтрацию значений из $_POST.
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) : "");
Спустя 1 минута, 6 секунд (14.12.2010 - 13:00) aH6y написал(а):
RuslanMRP
Да ошибся чуть.
Правильнее писать:
linker
Согласен мой вариант примитивный.
Да ошибся чуть.
Правильнее писать:
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 = "..."; а уж отдать запрос мускулу должен был сам.
Ну а подумать не судьба? Я же написал $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=''
Пишу:
Я так пробовал! не выводит. Или я вообще приду...... Что я не так написал?
Если проверяю что передала в переменную: 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 полю оно не ищет
Эта обработка все равно работае ТОЛЬКО по 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
Я походу не понимаю что-то. Все равно не ищет!
Я походу не понимаю что-то. Все равно не ищет!
Спустя 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 написал(а):
Всегда пожалуйста.
Спустя 6 часов, 18 минут, 16 секунд (14.12.2010 - 23:54) GreatMax написал(а):
А не проще на Ajax будет сделать?