Подскажите по программированию аргументов

Главные вкладки

Аватар пользователя GolovaNoga GolovaNoga 4 января 2012 в 22:24

У меня есть тип документа "заявка на отель", в заявке есть поле CCK Reference в котормо выбирается на какой отель делается заявка. Задача вывести владельцу отеля все заявки на его отель. Я для этого создаю view в котором выводятся все материалы с типом "заявка на отель" и в качестве аргумента передаю id отеля. Как я представляю решение. Я пишу ПХП код которые выбирает из базы id отеля принадлежащие залогиненному пользователю. Вопрос заключается в чем, можно ли передавть во views через PHP несколько id ?

Комментарии

Аватар пользователя GolovaNoga GolovaNoga 4 января 2012 в 22:30

Ну этот вью в виде блока и видет только пользователю на чьи отели сделаны заявки. А фильтр попробую, но мне кажется что это будет плюс клик по выбору отеля.

Аватар пользователя GolovaNoga GolovaNoga 5 января 2012 в 0:18

Фильтры пока не устроили, у меня не получилось сделать вывод фильтра при display:block у view и в фильтре выводятся все отели, а мне нужно чтобы пользователь выбирал только из своих отелей. Я придумал громоздкое решение, если никто не подскажет как передать несколько аргументов.

Аватар пользователя GolovaNoga GolovaNoga 5 января 2012 в 1:46

Я прочитал что нужно возвращать массив аргументов
http://drupal.org/node/70145
Я не программист подскажиет плс где ошибка.

<?php$type = 'hotel';
$sql = "SELECT n.nid FROM node n WHERE n.uid = ";
$sql.=arg(1);
$sql.=" AND n.type = '";  
    $sql .= $type;
    $sql .= "'";

    $nids = db_result(db_query($sql));

return $nids;?>

Аватар пользователя ihappy ihappy 5 января 2012 в 2:12
<?php
$type 
'hotel';
$arg arg(1);

$sql db_query("SELECT n.nid FROM node n WHERE n.uid = %d AND n.type = '%s'"$arg$type); 
while(
$nid db_fetch_object($sql)){
$array[] = $nid->nid;
}
return 
$array;
?>

Пробуй так.
если $arg верен, то вернется массив nid.

P.S.
Если $type = 'hotel';, постоянная величина, то можно так.
<?php$sql = db_query("SELECT n.nid FROM node n WHERE n.uid = %d AND n.type = 'hotel'", $arg);?>

Аватар пользователя Orion76 Orion76 5 января 2012 в 3:07

Чет ничего не понятно..
Есть материалы(Заявки) с полем NodeReference, ссылающимся на одно ноду(Отель)
Надо выбрать все Заявки на конкретный отель.
Проблема передать вьюсу ид отеля?

Можно экспозед-фильтрами... можно через ссылку для вьюся с аргументом , например: site_name.ru/hotels/123
(адрес для вьюса будет site_name.ru/hotels/%, где 123 - ид отеля)

Аватар пользователя GolovaNoga GolovaNoga 5 января 2012 в 9:23

iHappy, спасибо, но похоже что массив не принимает, несмотря на написанное в статье. я делал

<?php $array = array(10,5);
return 
$array;?>

и он пишет ошибку
warning: html_entity_decode() expects parameter 1 to be string, array given in /home/u5193/domains/minihotels.org.ua/sites/all/modules/views/handlers/views_handler_field.inc on line 706.

Буду делать как сказал orion76, это немного сложней для пользователя и работать будет.

Спасибо за помощь! Теперь я смог сформулировать суть моего вопроса Smile
Как передать несколько аргументов вьюсу в блок не используя урл? Попробую на орге спросить.

Аватар пользователя Orion76 Orion76 5 января 2012 в 10:02

выводите вьюслм материал "Заявки"
Добавляете связь(Relationships) c Отелем по ид-отеля=значение поля связи
Добавляете фильтр : Автор Отеля - текущий пользователь.

как-то так...

выведуться все заявки отеля принадлежащего текущему пользователю.