Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Как использовать "составные" операторы?

16.03.2010, 08:46
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Код:
".listQuery("SELECT Message_ID, area FROM Message$classID WHERE Checked=1 AND area != '' AND area != 'NULL' GROUP BY area", "<input name='checkbox$i' type='checkbox'> $data[area]<br/>")."


подскажите как использовать:
Код:
<input ".(${"checkbox".$i}=='on'?" checked='checked'": NULL )." >


никак не могу разобраться
16.03.2010, 10:49
Хыиуду

Зарегистрирован:
2009-10-21
Сообщений: 156

Ну, во-первых, чтобы чекбокс был включен, ему достаточно написать checked, а не checked='checked'
А во-вторых - не знаю, конечно, всех деталей, но что-то мне кажется, что listQuery такое не потянет. Проще использовать обычные запросы
$res=mysql_query("SELECT Message_ID, area FROM Message$classID WHERE Checked=1 AND area != '' AND area != 'NULL' GROUP BY area");
$i=0;
while ($row=mysql_fetch_assoc($res))
{
echo (или $result.=)
"<input name='checkbox$i type=checkbox ".(${checkbox$i}=='on'?'checked':'').">$row[area]</a><br>";
$i++;
}
16.03.2010, 14:45
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

как-то тут у вас всё в одну кучу да еще и с кучей ошибок...

1. SQL-запрос. Я так и не понял, что этим запросом хотели сделать... group by используют, когда применяют ф-ии агрегации типа count(), agv(), min(), max() и т.д. - у вас их нет. Если хотите вывести уникальные значения, то используют select distinct area... Для чего именно вам нужно поле Message_ID - тоже загадка, оно и ни в группировку не включено и ни в вывод через $data[..]. Также отсутстсвует сортировка, т.е. если вы хотите поле area как-то привязать к переменным checkbox, то получается, что вывод в хаотичной сортировке вас устраивает - что нелогично.

Рискну предположить, что вы хотели след. выборку сделать:
Код:
select distinct `area` from `Message{$classID}` where `Checked`=1 and `area`>'' order by `area`


2. Вообще не понятно, что за переменные $checkbox - откуда они (в посте не указано)? Если вы хотите эти переменные в ф-ию listQuery передать, то их как минимум надо объявить глобальными, чтобы они были доступны внутри listQuery или обращаться к ним через массив $GLOBALS[...].

3. Варинт, предложенный Хыиуду можно рассматривать, но в рамках неткета он устаревший (раньше была практика обращения напрямую к пхп ф-ии с указанием $LinkID). Лучше вот так:
Код:

$html = ''; $box = '';
$areas = $db->get_col("select distinct `area` from `Message{$classID}` where `Checked`=1 and `area`>'' order by `area`");
foreach ($areas as $i=>$area) {
$box = "checkbox".$i;
$html .= "<input ".($$box=='on' ? "checked" : NULL).">$area<br/>";
}

в переменной $html будет текст, который вам нужен


зы. в общем и целом лучше формализуйте задачу получше и тогда будет ясно как ее решать.


Temet nosce...
16.03.2010, 16:13
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

DiGGy - за distinct спасибо.
но обратите внимание, что вопрос звучал как получить эту информацию, внутри listQuery.


17.03.2010, 09:17
Хыиуду

Зарегистрирован:
2009-10-21
Сообщений: 156

DiGGy писал(а):
3. Варинт, предложенный Хыиуду можно рассматривать, но в рамках неткета он устаревший (раньше была практика обращения напрямую к пхп ф-ии с указанием $LinkID).

Сам знаю, что устаревший, но пользуюсь им, поскольку нормальной документации по работе с объектом $db я так и не нашел.
17.03.2010, 09:38
pe3udent
Артур Юсупов

Зарегистрирован:
2008-04-03
Сообщений: 220

malich писал(а):
вопрос звучал как получить эту информацию, внутри listQuery.


Код:
".listQuery("SELECT Subdivision_ID AS id, Subdivision_Name AS name FROM Subdivision ORDER BY Subdivision_ID ASC LIMIT 10", "<input type='checkbox' name='subd' value='$data[id]'"; if($data[id] == intval($_GET['si'])) $result .= ' checked'; $result .= " /> $data[name]<br>")."


не проверял, но должно работать
17.03.2010, 09:59
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

malich писал(а):
но обратите внимание, что вопрос звучал как получить Эту информацию, внутри listQuery.

обратите внимание на п.2 моего поста где говорится про глобальный массив $GLOBALS[...], также посмотрите на пост pe3udent, который в своем частном случае использует массив $_GET[], потому что параметры передает через get метод. Где у вас определяются переменные $checkbox - тока вам известно, поэтому пишите $GLOBALS, чтоб уж наверняка.

В общем, ваш вопрос решаем, подумайте, попытайте разные варианты...

Хыиуду писал(а):
Сам знаю, что устаревший, но пользуюсь им, поскольку нормальной документации по работе с объектом $db я так и не нашел.

И не найдете! Это заимствованный класс, это не разработка неткета. Советую вам от документации перейти к изучению исходников, а именно: /netcat/sql_core.php - посмотрите все методы, вроде всё и без документации понятно...

Temet nosce...
198 196 2010-03-17 09:59:28 9886
Описание проекта