|
|
25.03.2010, 10:09
|
|
Garlex
Garlex
Зарегистрирован: 2005-08-17
Сообщений: 8
|
Есть два компонента:
1. Партнёры (название и картинка);
2. Проекты (название, описание, картинка, номера партнёров через запятую).
Как вывести партнёров в компоненте проекты?
Попробовал сделать так:
Код:".nc_array_to_string( (array)explode(',', $f_ClientID), array('element'=> "
<span>".listQuery("SELECT Title FROM Message9 WHERE Message_ID = %ELEMENT ", '$data[Title]')."</span>
", 'divider' => ', ' ) )."
но выводит след. ошибку:
Код:Query: SELECT Title FROM Message9 WHERE Message_ID = 2
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near '2' at line 1
«Сон разума, порождает чудовище».
|
|
|
25.03.2010, 10:30
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
попробуйте за экранировать sql запрос, как то так
Код:".nc_array_to_string( (array)explode(',', $f_ClientID), array('element'=> "
<span>".listQuery("SELECT Title FROM Message9 WHERE Message_ID = %ELEMENT ", "$data[Title]")."</span>", 'divider' => ', ' ) )."
|
|
|
25.03.2010, 10:45
|
|
Garlex
Garlex
Зарегистрирован: 2005-08-17
Сообщений: 8
|
Не поможет. Тут именно проблема в %ELEMENT. В MySql %-заменяют любой символ, а в неткате это объект из массива.
«Сон разума, порождает чудовище».
|
|
|
25.03.2010, 10:47
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
1. а причем здесь %ELEMENT ? Это всего лишь шаблон для замены вместо которого в процессе выполнения функции nc_array_to_string подставляется нужное значение, и в sql запрос должно подавать уже именно оно, а не %ELEMENT
найдите поиском в папочке /netcat/ function nc_array_to_string и посмотрите как она работает.
2. как вариант можете sql запрос вынести в функцию
netcatmodulesdefaultfunction.inc.php
Код:function myFunction($a)
{
$r = listQuery("SELECT Title FROM Message9 WHERE Message_ID = $a ", "$data[Title]");
return $r;
}
Код:".nc_array_to_string( (array)explode(',', $f_ClientID), array('element'=> "<span>".myFunction(%ELEMENT)."</span>", 'divider' => ', ' ) )."
|
|
|
25.03.2010, 11:03
|
|
Garlex
Garlex
Зарегистрирован: 2005-08-17
Сообщений: 8
|
Нет... Что-то не работает
Вот что теперь выводит:
Parse error: syntax error, unexpected '%', expecting ')' in Z:homesite.ruwwwnetcatfull.php(503) : eval()'d code on line 18
«Сон разума, порождает чудовище».
|
|
|
25.03.2010, 11:16
|
|
Garlex
Garlex
Зарегистрирован: 2005-08-17
Сообщений: 8
|
malich писал(а):1. а причем здесь %ELEMENT ? Это всего лишь шаблон для замены вместо которого в процессе выполнения функции nc_array_to_string подставляется нужное значение, и в sql запрос должно подавать уже именно оно, а не %ELEMENT
Он как раз и срабатывает нормально, всё подставляет:
Query: SELECT Title FROM Message9 WHERE Message_ID = 2, вот тут видно, что подставил "2"
«Сон разума, порождает чудовище».
|
|
|
25.03.2010, 11:16
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
У меня с примером из документации, замечательно работает
Код:".nc_array_to_string($f_spisok, array( 'prefix' => 'List:<br>','element' => '".myFunction(%ELEMENT)."','divider' => '<br>','suffix' => 'end' ))."
а вот ваш пример, даже без sql запроса не работает, что то вы там намудрили.
|
|
|
25.03.2010, 11:32
|
|
Garlex
Garlex
Зарегистрирован: 2005-08-17
Сообщений: 8
|
malich писал(а):У меня с примером из документации, замечательно работает
а вот ваш пример, даже без sql запроса не работает, что то вы там намудрили.
Работает без sql запроса, если не разбивать explode и если вставить просто номер 2 в sql запросе.
«Сон разума, порождает чудовище».
|
|
|
25.03.2010, 11:46
|
|
Garlex
Garlex
Зарегистрирован: 2005-08-17
Сообщений: 8
|
В общем разобрался, с выносом функции помогло, но была ошибочка с синтаксесе.
Напишу для тех, кому понадобится, а то ответы обычно тут не пишут.
Что нужно было:
В одном компоненте вывести записи из другого при указании номеров выводимых объектов.
Как сделано:
1. В компоненте, где надо вывести объекты, было создано поле (ClientID - строка), где будут вводится номера
выводимых объектов.
2. Разбита строка при помощи explode и создан массив.
Код:".nc_array_to_string( (array)explode(',', $f_ClientID), array('element'=> '<span>".myFunction(%ELEMENT)."</span>', 'divider' => ', ' ) )."
4. Функция выбора из базы вынесена в файлик netcatmodulesdefaultfunction.inc.php
Код:function myFunction($a)
{
$r = listQuery("SELECT Title FROM Message9 WHERE Message_ID = $a ", "$data[Title]");
return $r;
}
Спасибо за помощь - Малкову Андрею;)
«Сон разума, порождает чудовище».
|
|
|
30.03.2010, 10:52
|
|
iprus
Зарегистрирован: 2008-10-07
Сообщений: 73
|
chester22 писал(а):Напишу для тех, кому понадобится, а то ответы обычно тут не пишут.
Спасибо, пригодилось
|
|
|
04.04.2010, 01:38
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
chester22 писал(а):Есть два компонента:
1. Партнёры (название и картинка);
2. Проекты (название, описание, картинка, номера партнёров через запятую).
Как вывести партнёров в компоненте проекты?
В компоненте проектов в нужном месте пишите ".s_list_class(xxx,yyy,"&isPartners=1")."
Ну а в компоненте партнеров обрабатываете в сист. настройках переменную $isPartners выводите что нужно. Если хотите свой внешний вид сделать для партнеров, то для этого оч. удачно подойдут "шаблоны компонента".
зы: И не надо никаких ф-ий писать и т.п. Это все равно что из москвы в питер через чукотку ехать.
Temet nosce...
|