Можно ли засунуть несколько переменных в строку браузера? (для выполн. функции)

BRat

o_0
случаем не на мамбе пишешь?
там в action надо " ставить, а затем добавлять в форму строку
<input type=hidden name=option value=com_bla>
 

BeatBox

Guest
Автор оригинала: SelenIT
Когда ты отправишь форму с полями cat[1], ... , cat[35], в твой скрипт придет готовый массив $cat(1=>1, 3=>1, ... 28=>1) (к примеру) - там, где были отмеченные чекбоксы, будут единицы, остальные просто не передадутся.

А потом делаешь
PHP:
foreach($cat as $number=>$value) {
    if ($value==1) $catsel2 = " $globalpre associated like '%$number-%' or topic='$number' "; } 
}
А с учетом ограничения строки можно давать полям формы более короткие имена - например, не cat[1], а просто c[1], тогда останется больше места для значений.
тут у меня проблема - куда теперь ставить WHERE?

-~{}~ 16.03.05 07:08:

Автор оригинала: BRat
случаем не на мамбе пишешь?
там в action надо " ставить, а затем добавлять в форму строку
<input type=hidden name=option value=com_bla>
РНР=Нюк :(
 

SelenIT

IT-лунатик :)
Вообще-то, по идее - перед всеми этими $catsel-ами, а их подставлять в тот же запрос через OR. Так что по-моему даже $globalpre в каждом $catsel-е - лишнее. Совет: перед тем, как выполнить запрос, выводи его на экран. Сразу сам увидишь , что в нем можно оптимизировать.

P.S. Извиняюсь - фрагмент запроса я скопировал с твоего кода и не все, что надо, заменил. Конечно, не $catsel2, а либо сразу дописывать новые условия к запросу, либо собирать условия в массив, а потом склеить его в строку с помощью implode.
 

BeatBox

Guest
BRat
пробовал...непомагает :(

-~{}~ 16.03.05 07:19:

Автор оригинала: SelenIT Конечно, не $catsel2, а либо сразу дописывать новые условия к запросу, либо собирать условия в массив, а потом склеить его в строку с помощью implode.
а для тех кто в поезде, можно? :)
 

BeatBox

Guest
BRat
ну кому детская, а я вот 3 дня мучаюсь.... (уже почти 4 :D )
 

SelenIT

IT-лунатик :)
PHP:
$cond = array();
foreach($cat as $number=>$value) {
    if ($value==1) $cond[] = " associated like '%$number-%' or topic='$number' "; }
}
$query = "SELECT что_надо FROM откуда_надо WHERE какие-то_условия AND (".implode('OR',$cond).") AND прочие_условия";
 

confguru

ExAdmin
Команда форума
SelenIT

Надо проверять содержимое $cond[] перед
вставкой в $query
 

SelenIT

IT-лунатик :)
admin
Спасибо за уточнение. Действительно, упустил из виду.
 

BeatBox

Guest
SelenIT
Спасибо за код большое! А что там про
Надо проверять содержимое $cond[] перед
вставкой в $query
? Это как сделать?

-~{}~ 16.03.05 17:45:

И всё-таки мне нужно както это все преобразовать в GET.
Как например сделать чтобы из строки браузера читалось
?cat1?cat2?cat
как масив который потом ставиться в запрос, или как отдельные переменные, которые потом в запрос ставить? (как лучше, я незнаю)

-~{}~ 16.03.05 17:56:

просто я непредставляю. как форма впишет в строку бразера значения? Чтобы это считалось GET'ом

-~{}~ 16.03.05 18:46:

PHP:
$cond = explode("/",$cat);
    foreach($cond as $number=>$value) {
    echo "$cond[$number]";
    if ($value==1) $cond[] = " associated like '%$value-%' or topic='$value' "; }
    $qdb = " WHERE sid!='0' and (".implode('$search_type',$cond).") ";
$sql= "select a.associated as associated, a.pictogram as pictogram, a.newshot as newshot, a.game_id as game_id, a.sid as sid, a.aid as aid, a.title as title, a.time as time, a.hometext as hometext, a.topic as topic, a.informant as informant, a.notes as notes, b.topictext as topictext, b.topicid as topicid";
    $sql.=" from ".$prefix."_stories as a ";
    $sql.= " left join ".$prefix."_topics as b ";
    $sql.= " on (a.topic=b.topicid) ";
    $sql.=" $qdb ORDER BY sid DESC limit $offset, $storynum";
    $result = $db->sql_query($sql);
правда в итоге блин что-то не то, так как командой echo "$sql"; видно что получаеться кривой запрос:
PHP:
1 associated like '%1-%' or topic='1' select a.associated as associated, a.pictogram as pictogram, a.newshot as newshot, a.game_id as game_id, a.sid as sid, a.aid as aid, a.title as title, a.time as time, a.hometext as hometext, a.topic as topic, a.informant as informant, a.notes as notes, b.topictext as topictext, b.topicid as topicid from nuke_stories as a left join nuke_topics as b on (a.topic=b.topicid) WHERE sid!='0' and (1$search_type associated like '%1-%' or topic='1' ) ORDER BY sid DESC limit 0, 15
 

SelenIT

IT-лунатик :)
жуть...
Как например сделать чтобы из строки браузера читалось ?cat1?cat2?cat ... как форма впишет в строку бразера значения?
Вот так: ?cat[1]=1&cat[2]=1&...&cat[34]=1.

По проверке: генерация запроса должна обеспечивать его валидность и безопасность независимо от входных данных. Мой пример (демонстрация идеи) этого не обеспечивал - во-первых, ключи входного массива подставлялись в строку без проверки на допустимость типа (целое число), во-вторых, в случае пустого массива запрос получается невалидный (WHERE ... AND () AND ...).

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

Итого: выложи полный код в соответстующее место и дай ссылку. Попробуем вычистить кусок, отвечающий за сборку запроса. А то в этих дебрях разобраться действительно невозможно.
 

BeatBox

Guest
SelenIT
хочу выложить код не номего нигде найти ссылку на тот раздел ,куда выкладывать код нужно :( помню что такой был точно
 

BeatBox

Guest
http://phpclub.ru/paste/397
там я показал две функции полность:
function CAT - тут собственно форма, которую я никак немогу переделать под GET.

function CATS - это функция уже показывающая новости, отвечающие параметрам в function CAT.
 

SelenIT

IT-лунатик :)
BeatBox
Совет: завязывай напрочь с этим барахлом. Трудно представить себе что-нибудь хуже для обучения, чем делать первые шаги, имея перед глазами такие чудовищные примеры.

В первой "функции" вынеси весь HTML из echo в ?><?, а лучше выдели вообще в отдельный файл - по аналогии с шапкой и футером. А вторую вообще начни переписывать с нуля - методом от простого к сложному. Время в итоге только сэкономишь (по себе сужу), и есть шанс, что научишься чему-то конструктивному...
 
Сверху