Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
$sql='SELECT * FROM product where ';
for($i=0;i<count($_REQUEST['categ']);$i++)
{
$where.='id_categ='.$_REQUEST['categ'][$i].' or ';
}
print ($sql.=$where);
Сейчас выводит вот такую вот шляпу:
Notice: Undefined variable: where in z:\home\ultracomp\www\select_prod.php on line 14
[Денвер: показать возможную причину ошибки]SELECT * FROM product where id_categ=1 or id_categ=2 or id_categ=3 or id_categ=4 or
sahnovich
во-первых, про $where я прогнал.
и эта переменная, как правильно заметил vl, не нужна.
можно её убрать и оставить по-старому $sql.= внутри цикла.
а вот почему код, коорый ты здесь написал, у меня выводит совсем не такую ошибку, а ошибку синтаксическую - для меня загадка
да погоди ты. ещё не закончили.
во-первыйх тебе ещё надо отрезать or с конца.
во-вторых, вместо for лучше использовать foreach. получается в три раза короче:
foreach(($_REQUEST['categ']) as $val){
$sql.='id_categ='.$val.' or ';
}
print ($sql);
в-третьих, и в самых главных, надо ещё запрос защищать.
для чего убедиться, что в $_REQUEST['categ'] лежат только цифры.
для этого перед этим кодом надо написать строчку
$_REQUEST['categ']=array_map("intval",$_REQUEST['categ']);
ну, неплохо.
Хотя я бы на твоем месте сделал через foreach.
ну да ладно.
как ты правильно заметил, есть альтернативный синтаксис - IN
для которого мы должны получить строку, состоящую из элементова массива, разделенных запятой.
сделать строку из массива нам помогает функция [m]implode[/m]()