|
|
16.05.2010, 10:56
|
|
Гость
Гость
|
Здравствуйте. Поставили задачу разработать модуль под NetCat для вывода данных из отдельной БД. Сам я с NetCat'ом работаю впервые, NetCat API для меня пока не сильно понятен. Знающий человек подсказал, что можно просто создать модуль с функциями на PHP, а потом вызывать эти функции в компоненте опять же на языке PHP.
Следуя такому совету, в файле function.inc.php прописал пробную функцию с подключением к БД, SQL-запросом на выборку, массивом mysql_fetch_array и циклом по выводу данных из массива, пока в нём что-то есть. Попробовал вызвать функцию в обычном php-файле - работает.
В NetCat'e создал новый компонент, где в префиксе списка объектов попытался вызвать нужную функцию следующим образом: "; function();". Создал пробный раздел, куда предполагается это всё выводить, и подключил к нему созданный компонент.
Данные на сайте вывелись ровно один раз. При этом в свойствах раздела, на вкладке "Редактирование" эти данные висят постоянно, а в самом разделе на сайте их нет. В руководстве по компонентам про использование PHP написано так: "; ...PHP-код... $result.=" . Собственно делал, руководствуясь этим, только переменную $result не задействовал. Пожалуйста, помогите с этим разобраться.
|
|
|
16.05.2010, 19:29
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
1. пишите свою функцию в /netcat/modules/function.inc.php
Код:
function myfunction()
{
$r=.....;
return $r;
}
затем в компоненте или макете дизайна
2. либо просто создаем компонент и вставляем прямо в него php код
Код:";
PHP-код
$result.= "
|
|
|
16.05.2010, 20:47
|
|
Гость
Гость
|
Я уже пробовал присваивать и возвращать значение, и в компонент кусок кода кидал, даже просто писал "; echo "Hello, World!". По какой-то причине компонент в разделе срабатывает ровно один раз. После обновления страницы или повторного захода в этот раздел - чистый лист. Хотя в свойствах компонента на вкладке "Редактирование" все отображается. Впрочем, у меня демо-версия, может поэтому так .
Ещё важный вопрос: не могу понять, как в php-скрипте использовать переменную $PHP_AUTH_USER из модуля авторизации. В частности, по заданию надо извлекать некоторые данные из отдельной базы, сверяясь с этой переменной. Планируется довольно массивный скрипт, поэтому в макете или компоненте писать подобное ни к чему. Вот я попробовал написать примерно следующее:
Цитата:
function myfunc()
{
$connect = mysql_connect('server', 'user', 'pass');
mysql_select_db('baza',$connect);
$query = mysql_query("SELECT * FROM users WHERE login = '".$PHP_AUTH_USER."'");
$row = mysql_fetch_array($query);
printf ("<div> Имя: %s </br> Адрес: %s </div>",$row['name'],$row['addr']);
}
Результата не было - пустые значения. Вместо '".$PHP_AUTH_USER."' пробовал также '$PHP_AUTH_USER' и '".$_SERVER['PHP_AUTH_USER']."' <-- такое где-то тут видел. Но видимо, надо где-то отдельно вызывать $MODULE_VARS['auth'] или ещё что-то. Подскажите, пожалуйста.
|
|
|
16.05.2010, 21:28
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
либо
Код:function myfunc()
{
global $PHP_AUTH_USER;
$connect = mysql_connect('server', 'user', 'pass');
mysql_select_db('baza',$connect);
$query = mysql_query("SELECT * FROM users WHERE login = '".$PHP_AUTH_USER."'");
$row = mysql_fetch_array($query);
return printf ("<div> Имя: %s </br> Адрес: %s </div>",$row['name'],$row['addr']);
}
либо
Код:".myfunc($PHP_AUTH_USER)."
function myfunc($userid)
{
$connect = mysql_connect('server', 'user', 'pass');
mysql_select_db('baza',$connect);
$query = mysql_query("SELECT * FROM users WHERE login = '".$userid."'");
$row = mysql_fetch_array($query);
return printf ("<div> Имя: %s </br> Адрес: %s </div>",$row['name'],$row['addr']);
}
|
|
|
17.05.2010, 00:03
|
|
Гость
Гость
|
ни в какую. выводится непонятно откуда взявшаяся цифра "31". или 3 и 1 подряд.
|
|
|
17.05.2010, 07:50
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
Все должно отлично работать, напишите в /netcat/modules/default.inc.php
Код:
function myfunc()
{
$r = "....<br>,,,,<br>.....";
return $r;
}
и попробуйте вывести в каком то месте на сайте
Если все будет хорошо, значит мучайте свой скрипт.
|
|
|
17.05.2010, 17:12
|
|
Хыиуду
Зарегистрирован: 2009-10-21
Сообщений: 156
|
$connect = mysql_connect('server', 'user', 'pass');
mysql_select_db('baza',$connect);
Это совершенно излишне - неткат сам подключается к базе, поэтому можете начинать работу с базой непосредственно с mysql_query
|
|
|
09.07.2010, 12:17
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Цитата:Это совершенно излишне - неткат сам подключается к базе, поэтому можете начинать работу с базой непосредственно с mysql_query
В постановке задачи указано, что БД другая, соотв-но к ней коннект другой.
Если другая БД - mySQL, то можно использовать штатные классы неткета для работы с ней. Если допустим Oracle, MS SQl Server и т.п., то лучше написать свои классы и юзать их.
Temet nosce...
|