Голосования собственников
#1
Отправлено 08 Февраль 2014 - 19:41
Нужна помощь. Так и не смог я сам решить эту задачу.
Пытаюсь сделать систему электронного голосования для собственников многоквартирных домов.
Идея такая. Собственник заходит в личный кабинет и видит все текущие голосования по объектам права, собственником которых он является (в подтаблице).
Он должен иметь возможность в подтаблице проставить свое волеизъявление.
Для "фильтрации" вопросов я хочу использовать связь по полю "Голосующий собственник", по которой таблица "Бюллетени" связана с Таблицей "Собственники" до завершения голосования по вопросу. То есть поле "Собственник" там тоже есть и оно заполнено всегда, а поле "Голосующий собственник" содержит ссылку на собственника только при активности голосования. По окончанию голосования ссылка очищается и в подчиненной таблице у собственника уже не высвечивается, а перезаписывается в поле "Проголосовавший собственник" - вторую подтаблицу таблицы "Собственники", хранящую архивы голосования данного собственника, в которой правка уже невозможна. Это не совсем фильтр, а такое применение представления "через заднее крыльцо".
Проблема вот в чем: при заведении очередного вопроса для голосования необходимо автосоздание соответствующих ему строк в таблице "Бюллетени" по каждому объекту права с возможностью автоподсчета итогов голосования по подтаблице в самой таблице "Вопросы голосования". При этом изначально голосующая площадь объекта помещается в поле "Не голосовал", а потом в соответствии с выбором из списка "за", "против", "воздержался" эта сумма должна помещаться в соответствующей колонке таблицы "Бюллетени"
Есть такие таблицы:
Дом
Объект права в доме
Собственник
Вопросы голосования
Бюллетени
При создании нового вопроса для голосования в таблице "Вопросы голосования" нужно сделать вычисление, в котором из справочника "Объекты права" выбираются все объекты, относящиеся к данному дому, где проводится голосование и по каждому найденному объекту нужно сформировать соответствующую ему новую строку, но в таблице "Бюллетени".
в которой прописать ссылки на Дом,Объект права,Собственника,Вопрос голосования и голосующую площадь.
При этом в строке таблицы "Бюллетени" должны быть автозаполнены ссылки на дом, объект права, собственника и вопрос голосования.
#2
Отправлено 10 Февраль 2014 - 10:34
1. Выбираем все объекты запросом к таблице Объекты права, с фильтром по дому
2. Проходимся циклом по объектам, заполняем массив нужными данными из объекта и вопроса голосования. Добавляем полученный массив данных строкой в Бюллетени.
#3
Отправлено 13 Февраль 2014 - 21:08
CbCoder (10 Февраль 2014 - 10:34) писал:
1. Выбираем все объекты запросом к таблице Объекты права, с фильтром по дому
2. Проходимся циклом по объектам, заполняем массив нужными данными из объекта и вопроса голосования. Добавляем полученный массив данных строкой в Бюллетени.
Правильно. Ножен фрагмент кода. Номера полей и таблиц я проставлю сам
Интересная задача? Будет вам типовая настройка полезная для потребителей вашей базы.
Сообщение отредактировал Александр Пономарев: 13 Февраль 2014 - 21:09
#4
Отправлено 14 Февраль 2014 - 10:55
$objects = data_table("Объекты права", "`Дом`='".$line['Дом']."'", "all"); // получаем все объекты в данном доме
foreach ($objects as $object) // проходимся циклом по полученным объектам
{
$bull = array();
$bul['Поле_a1'] = $object['Поле_b1']; // заполняем нужные поля бюллетеня
$bul['Поле_a2'] = $object['Поле_b2'];
......................
insert_query($bull, "Бюллетени"); // добавляем бюллетень
}
Код разумеется примерно-описательный, формализация алгоритма, описанного мною выше.
#5
Отправлено 14 Февраль 2014 - 16:12
$dom=$line['Дом (справочно)'];
$sobr=$line['Голосование'];
$vopr=$line['ID'];
$kvopr=$line['Код вопроса'];
$dnach=$line['Время добавления'];
$dkon=$line['Время завершения голосования'];
$objects = data_table("Объект права", "`Дом`=".$line['Дом (справочно)'], "all");
foreach ($objects as $object)
{
$bull = array();
// $bull['Код вопроса'] = $kvopr;
// $bull['МКД'] = $dom;
$bull['Объект права'] = $object['ID'];
$bull['Дом (справочно)'] = $dom;
$bull['Собственник'] = $object['Собственник'];
$bull['Вопрос для голосования'] = $vopr;
$bull['Принятое Решение'] = "Не голосовал";
$bull['Площадь голосующая'] = $object['Голосующая площадь'];
$bull['Площадь за'] = 0.00;
$bull['Площадь против'] = 0.00;
$bull['Площадь воздержалось'] = 0.00;
$bull['Площадь не участвовало'] = $object['Голосующая площадь'];
$bull['Статус'] = "Активен";
insert_query($bull, "НПС Бюллетень голосования");
}
Выдает ошибку
Ошибка в вычислении.
НПС Вопрос для голосования. :
24:
25:
Ошибка SQL запроса:
SELECT * FROM f_data451 WHERE f5331=
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 '' at line 1
#6
Отправлено 14 Февраль 2014 - 16:17
$objects = data_table("Объект права", "`Дом`='".$line['Дом (справочно)']."'", "all");
не помогло
#7
Отправлено 14 Февраль 2014 - 16:19
#8
Отправлено 14 Февраль 2014 - 16:26
Цитата
Ошибка SQL по прежнему что ли выходит? Или просто нет результата? По идее после этого изменения sql error должен был пропасть. Если же просто нет результата - то ошиблись с полем $line['Дом (справочно)']
#9
Отправлено 14 Февраль 2014 - 16:32
<p> </p>
<p> </p>
<div>$dom=$line['Дом'];</div>
<div>$vopr=$line['ID'];</div>
<div>$objects = data_table("НПС Объект права", "`Дом`='".$line['Дом (справочно)']."'", "all");</div>
<div>foreach ($objects as $object)</div>
<div>{</div>
<div> $bull = array();</div>
<div> $bull['Объект права'] = $object['ID'];</div>
<div> $bull['Дом (справочно)'] = $dom;</div>
<div> $bull['Собственник'] = $object['Собственник'];</div>
<div> $bull['Вопрос для голосования'] = $vopr;</div>
<div> $bull['Принятое Решение'] = "Не голосовал";</div>
<div> $bull['Статус'] = "Активен";</div>
<div> $bull['Площадь голосующая'] = $object['Голосующая площадь'];</div>
<div> $bull['Площадь за'] = 0.00;</div>
<div> $bull['Площадь против'] = 0.00;</div>
<div> $bull['Площадь воздержалось'] = 0.00;</div>
<div> $bull['Площадь не участвовало'] = $object['Голосующая площадь'];</div>
<div> insert_query("НПС Бюллетень голосования",$bull);</div>
<div>}</div>
#10
Отправлено 14 Февраль 2014 - 16:33
<div>$dom=$line['Дом'];</div>
<div>$vopr=$line['ID'];</div>
<div>$objects = data_table("НПС Объект права", "`Дом`='".$line['Дом (справочно)']."'", "all");</div>
<div>foreach ($objects as $object)</div>
<div>{</div>
<div> $bull = array();</div>
<div> $bull['Объект права'] = $object['ID'];</div>
<div> $bull['Дом (справочно)'] = $dom;</div>
<div> $bull['Собственник'] = $object['Собственник'];</div>
<div> $bull['Вопрос для голосования'] = $vopr;</div>
<div> $bull['Принятое Решение'] = "Не голосовал";</div>
<div> $bull['Статус'] = "Активен";</div>
<div> $bull['Площадь голосующая'] = $object['Голосующая площадь'];</div>
<div> $bull['Площадь за'] = 0.00;</div>
<div> $bull['Площадь против'] = 0.00;</div>
<div> $bull['Площадь воздержалось'] = 0.00;</div>
<div> $bull['Площадь не участвовало'] = $object['Голосующая площадь'];</div>
<div> insert_query("НПС Бюллетень голосования",$bull);</div>
<div>}</div>
#12
Отправлено 16 Февраль 2014 - 13:42
$dom=$line['Дом']['ID'];
$sobr=$line['Голосование']['ID'];
$vopr=$line['ID'];
$kvopr=$line['Код вопроса'];
$tvopr="ВОПРОС, ВЫНОСИМЫЙ НА ГОЛОСОВАНИЕ:<br><br>".$line['Вопрос для голосования'];
$dnach=$line['Время добавления'];
$dkon=$line['Время завершения голосования'];
$objects = data_table("НПС Объект права", "`Дом`=".$dom, "all");
foreach ($objects as $object){
$bull = array();
$bull['Вопрос для голосования'] = $vopr;
$bull['Вопрос'] = $tvopr;
$bull['Код вопроса'] = $kvopr;
$bull['Объект права'] = $object['ID'];
$bull['Решение'] = "Не голосовал";
$bull['МКД'] = $dom;
$bull['Собственник объекта'] = $object['Собственник']['ID'];
$bull['Площадь голосующая'] = $object['Голосующая площадь'];
$bull['Не голосовал'] = $object['Голосующая площадь'];
$bull['Голосующий собственник'] = $object['Собственник']['ID'];
insert_query($bull, "НПС Бюллетень голосования");
}
#13
Отправлено 17 Февраль 2014 - 20:53
//В таблице Бюллетени подсчитываются суммы голосов за, против и воздержался и значения заносятся в одномерный массив,
//откуда потом извлекаются
$sqlQuery = "SELECT sum(f44651) AS za, sum(f44661) AS pr, sum(f44671) AS vz, sum(f44681) AS ng
FROM ".DATA_TABLE."3311 WHERE status=0 AND f44141=".$vopr."";
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$pza = $row['za']; //Площадь за
$ppr = $row['pr']; //Площадь против
$pvz = $row['vz']; //Площадь воздержалось
$png = $row['ng']; //Площадь не голосовало
// Общая площадь голосующая
$popsh=$line['Вопрос для голосования']['Площадь голосующая'];
//Площадь проголосовавших так или иначе
$plgol=$pza+$ppr+$pvz;
$line['Тестовое']="Проголосовало ".$plgol;
#14
Отправлено 17 Февраль 2014 - 20:54
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных













