Страница 1 из 1

Проблемы с доступом к БД MD из php

Добавлено: Пн авг 04, 2014 11:51 am
grave_digger
Добрый день,
у меня такая ситуация:
разработал свое железо и хочу его подключить к MD.
В MD создал класс для своего железа (платы) с методами и свойствами. К MD можно подключать много моих плат. При подключении платы к MD по Ethernet плата передает свой номер и ее параметры. Хочу сделать следующее: чтобы при подключении моей платы создавался новый объект моего класса.

пытался сделать так.
1. из таблицы classes по запросу SELECT узнать SUB_LIST моего класса
2. Добавить новую запись в таблицу objects с SUB_LIST моего класса

но при подключении в БД у меня возникают ошибки.

Подскажите каким образом можно работать с таблицами БД. Какими функциями пользоваться? Как идти по записям? Как вносить новые записи в таблицу и делать update? Лучше всего с примером.

З.Ы. Адрес хоста, логин и пароль для БД указываю верно

Сергей

Re: Проблемы с доступом к БД MD из php

Добавлено: Пн авг 04, 2014 12:09 pm
sergejey
Добавил документ с описанием работы с базой данных из кода:
http://smartliving.ru/Main/ProgrammingDatabase

Re: Проблемы с доступом к БД MD из php

Добавлено: Пн авг 04, 2014 12:36 pm
grave_digger
Большое спасибо за документ, но возникла следующая ошибка
Выбираю данные из таблицы при помощи SQLSelect

$states = SQLSelect('SELECT TITLE FROM objects');
$cnt=Count($states);
For($i = 0; $i < $cnt; $i++) {
if $states[$i]['TITLE'] == $id{
$flag = 1;
}

при сохранении возникает ошибка
Parse error: syntax error, unexpected '$states' (T_VARIABLE), expecting '(' in C:\_majordomo\htdocs/cached/d1f30144e8e65e2e41399410f787917f.php on line 13

в первой строке. Что делать?
Сергей

Re: Проблемы с доступом к БД MD из php

Добавлено: Пн авг 04, 2014 12:41 pm
sergejey
Как минимум заменить

Код: Выделить всё

if $states[$i]['TITLE'] == $id { 
на

Код: Выделить всё

if ($states[$i]['TITLE'] == $id) { 

Re: Проблемы с доступом к БД MD из php

Добавлено: Вт авг 05, 2014 7:38 am
denis
Сергей, здравствуйте!
А можно выложить туда же код, чтобы выбирать из phistory значения по сочетанию Объект.Свойство?
т.е. что-то наподобие SELECT value FROM phistory WHERE (Объект AND Свойство AND период выборки ...)
написал конечно схематично, на надеюсь смысл понятен. Так как пришлось самому что-то придумывать аналогичное, может есть более короткий и правильный путь? Т.е. чтобы можно было отобрать данные за нужный период или последние 100 например.

Re: Проблемы с доступом к БД MD из php

Добавлено: Вт авг 05, 2014 12:58 pm
sergejey
denis писал(а):Сергей, здравствуйте!
А можно выложить туда же код, чтобы выбирать из phistory значения по сочетанию Объект.Свойство?
т.е. что-то наподобие SELECT value FROM phistory WHERE (Объект AND Свойство AND период выборки ...)
написал конечно схематично, на надеюсь смысл понятен. Так как пришлось самому что-то придумывать аналогичное, может есть более короткий и правильный путь? Т.е. чтобы можно было отобрать данные за нужный период или последние 100 например.
С выборкой несколько сложнее, но ниже вполне рабочий пример

Код: Выделить всё

$p='TempSensor1.temp'; // название свойства
$start_time=time()-7*24*60*60; // 7 дней

  if ($p!='') {
   if (preg_match('/(.+)\.(.+)/is', $p, $m)) {
    $obj=getObject($m[1]);
    $prop_id=$obj->getPropertyByName($m[2], $obj->class_id, $obj->id);
   }
  }

$pvalue=SQLSelectOne("SELECT * FROM pvalues WHERE PROPERTY_ID='".$prop_id."' AND OBJECT_ID='".$obj->id."'");

//получаем массив данных:
$history=SQLSelect("SELECT ID, VALUE, UNIX_TIMESTAMP(ADDED) as UNX, ADDED FROM phistory WHERE VALUE_ID='".$pvalue['ID']."' AND ADDED>=('".date('Y-m-d H:i:s', $start_time)."') AND ADDED<=('".date('Y-m-d H:i:s', $end_time)."') ORDER BY ADDED");
 
Приблизительно так работает по подобной ссылке (данные за 7 дней свойства TempSensor1.temp):
http://localhost/pChart/?p=TempSensor1. ... og&type=7d

Re: Проблемы с доступом к БД MD из php

Добавлено: Вт авг 05, 2014 4:53 pm
denis
Спасибо, так вполне подходит. Остальное думаю каждый под свои нужды "допилит".