Форум на Kuban.ru (http://forums.kuban.ru/)
-   Веб-дизайн и программирование (http://forums.kuban.ru/f1030/)
-   -   как при помощи foreach cформировать запрос? (http://forums.kuban.ru/f1030/kak_pri_pomoshi_foreach_cformirovat-_zapros-2249301.html)

Karli2 24.02.2012 15:37

как при помощи foreach cформировать запрос?
 
есть массив сформированный чекбоксами нужно задать запрос
select * from tovar9 where (id=3) or (id=4)
пишу
$q="select * from tovar9 where";
$n="";
foreach($_POST['Arr'] as $k=>$v)
if($k<$v)
**
$n=$n." (id=$v) or ";
**
else

**
$n=$n." (id=$v)";
**

$q=$q.$n;
echo $q;

// $q="select * from tovar9 where id= ";
// $q = $q.implode(' or `id`= ', $_POST['Arr']);

if (!mysql_connect($SERVER,$USER,$PASSWD))
**
echo $head;
echo "<h1>Ошибка сервера MySQL.Mysql server error</h1>";
echo"</body></html>";
exit;
**
mysql_select_db($DB);
$r=mysql_query($q)or die("ошибка в запросе");
выводит
select * from tovar9 where (id=1</tr) or (id=2</tr) or ошибка в запросе
как убрать последнее "or" и убрать</tr>

Karli2 24.02.2012 19:14

как из этого
select * from tovar9 where (id=1</tr) or (id=2</tr) or
сделать это
select * from tovar9 where(id=1</tr) or (id=2</tr)
а как поубирать </tr>?

Karli2 24.02.2012 19:17

как из этого
select * from tovar9 where (id=1</tr) or (id=2</tr) or
сделать это
select * from tovar9 where(id=1</tr) or (id=2</tr) ума хватило сделать
а как поубирать </tr>?

lublurtk 24.02.2012 22:31

можно так:
[code]
...id=str_replace('</tr','',$v)...
[/code]

а лучше выяснить откуда там tr и сделать валидацию на число + isset($_POST['Arr']).

Karli2 25.02.2012 11:41

нет так
$v=($_POST['Arr'][$key]);
if ($key+1 < $size)
**
$n=$n."(id=str_replace('</tr','',$v)) or ";
**
else
if ($key+1 === $size)
**
$n=$n."(id=str_replace('</tr','',$v))";
break;
**

**
$q=$q.$n;
echo($q);
пишет
select * from tovar9 where(id=str_replace('</tr','',1</tr)) or (id=str_replace('</tr','',2</tr))
откуда</tr> не знаю

Karli2 25.02.2012 11:46

а так
if ($key+1 < $size)
**
$n=$n."(id=str_replace('</tr>','',$v)) or ";
**
else
if ($key+1 === $size)
**
$n=$n."(id=str_replace('</tr>','',$v))";
break;
**
пишет
select * from tovar9 where(id=str_replace('','',1','',2</tr))

Karli2 25.02.2012 11:51

а так
for ($key = 0, $size = count($_POST['Arr']); $key < $size; $key++) **
$v=($_POST['Arr'][$key]);
if ($key+1 < $size)
**
$d=str_replace('</tr','',$v);
$n=$n."(id=$d) or ";
**
else
if ($key+1 === $size)
**
$d=str_replace('</tr','',$v);
$n=$n."(id=$d)";
break;
**

**
работает спасибо

савелий111 25.02.2012 21:26

q = "where 1=2";
...
q .= " or a=$i"


Текущее время: 23:52. Часовой пояс GMT +3.