Доступ к массиву полученого от массива checkbox

sahnovich

Новичок
я жу сделал это, просто меня интересует можно ли так сдклать или нет, и правельно ли так
 

Фанат

oncle terrible
Команда форума
покажи, как ты сделал

ответить тебе невозможно, поскольку запроса никакого ты опять не привел.
если же тебя интересует синтакис запросов такого типа, то уточняй его в документации. логично?
 

sahnovich

Новичок
Вот:
PHP:
elseif(empty($_REQUEST['proiz']) )
						{
						
							for($i=0;$i<count($_REQUEST['categ']);$i++)
							{
								echo'or id_categor='.$_REQUEST['categ'][$i];
							}
-~{}~ 06.03.07 16:24:

выводит следующие:
or id_categor=1 or id_categor=4
 

Фанат

oncle terrible
Команда форума
вот видишь - не сделал.
доделывай

-~{}~ 06.03.07 16:29:

к тому же, тебе надо это не в браузер выводить, а в переменную записать

-~{}~ 06.03.07 16:29:

но направление верное
 

sahnovich

Новичок
в смысли не доделал, скажи плиз что именно, а на счет переменной я знаю, что ее надо туда
 

Фанат

oncle terrible
Команда форума
ну когда же ты поймёшь, мальчик?
что проверять должен ТЫ САМ

берешь, составляешь запрос. руками.
и выводишь его в браузер.
потом берёшь, составляешь запрос скриптом.
и тоже выводишь в браузер.
и сравниваешь. глазками. совпадает или нет.
ага?
 

Фанат

oncle terrible
Команда форума
давай так.
ты пишешь здесь код, который формирует правильный запрос с OR, и сравнивает его с прописанным руками.

а я тебе показываю, как сделать с in красиво и безопасно

идёт?
 

sahnovich

Новичок
ок

-~{}~ 06.03.07 18:14:

Фанат
можешь подсказать.
вот мой код:
PHP:
for($i=0;$i<count($_REQUEST['categ']);$i++)
{
$str='id_categ='.$_REQUEST['categ'][$i].'or';
}
Выводит он следующие:
id_categ=1 or id_categ=2 or id_categ=4 or

но где id_categ=4 это последний элемент и там OR не уместен.
как быть. Подскажи плиз.
 

vl

Новичок
sahnovich
1.
php.net/language.operators.string
php.net/language.operators.assignment
2.
Выводит он следующие:
id_categ=1 or id_categ=2 or id_categ=4 or

но где id_categ=4 это последний элемент и там OR не уместен.
как быть. Подскажи плиз.
Если $i == ключу последнего элемента массива, то не присоединять or, иначе ...
 

Фанат

oncle terrible
Команда форума
sahnovich
можно использовать оператор substr() чтобы отрезать ненужный or
 

vl

Новичок
sahnovich
($i == $array_size - 1) ? "," : ")" - это в случае с IN.

Да и зачем ты присваиваешь, если тебе строки "склеивать" нужно? По ссылкам выше об этом написано.
 

Фанат

oncle terrible
Команда форума
sahnovich
хм. и правда.
твой последний код просто не может ничего выводить.
там нет ни одного оператора вывода.
давай ты, всё-таки, напишешь хоть один раз законченый, рабочий код, который работает точно так, как ты пишешь на словах?
 

sahnovich

Новичок
помострите плиз не могу понять в чем дело:
PHP:
$sql='SELECT * FROM product where ';
for($i=0; $i<count($_REQUEST['categ']);$i++)
{
$sql.='id_categ='.$_REQUEST['categ'][$i].' or ';
}
Выводет следующие: SELECT * FROM product where id_categ=1 or SELECT * FROM product where id_categ=1 or id_categ=2 or SELECT * FROM product where id_categ=1 or id_categ=2 or id_categ=4 or:
 

vl

Новичок
sahnovich
а если функцию вывода вынести из цикла?:)
 

Фанат

oncle terrible
Команда форума
sahnovich
основную часть прицепляй к условию после цикла. а не до.

-~{}~ 06.03.07 21:04:

sahnovich
смотри - сейчас у тебя 'SELECT * FROM product where цепляется к стороке ПРИ КАЖДОМ проходе цикла.
в уикле приписывай не к $sql а к другой переменной. скажем, $where
а потом прицепишь $where к $sql
 

vl

Новичок
Фанат
да нет, он просто echo внутрь цикла запихнул:)
 

sahnovich

Новичок
PHP:
for($i=0;$i<count($_REQUEST['categ']);$i++)
{
 $where='id_categ='.$_REQUEST['categ'][$i].' or ';
}							
$sql='SELECT * FROM product where';

$sql.=$where;
print ($sql);
Выводит он воттакую вот шляпу:
SELECT * FROM product whereid_categ=4 or
 
Сверху