Debug selection conditions

master
vitalif 2010-08-12 12:30:25 +00:00
parent 5d9af6726a
commit 15a685e546
2 changed files with 16 additions and 20 deletions

View File

@ -75,31 +75,29 @@ class OLAP
$wh = array();
$where = array();
foreach ($request as $k => $t)
foreach ($request as $k => $v)
{
if (substr($k, 0, 5) == 'type-')
if (substr($k, 0, 6) == 'where-')
{
$i = substr($k, 5);
$f = $request["field-$i"];
$v = $request["value-$i"];
list($t, $f) = explode('-', substr($k, 6), 2);
$fd = self::$current_src['fielddescs'][$f];
if (!strlen($v))
if (!$fd || !strlen($v))
continue;
$wh["type-$i"] = $t;
$wh["field-$i"] = $f;
$wh["value-$i"] = $v;
$wh[$k] = $v;
if ($fd['is_time'])
$v = Template::timestamp($v, self::$current_src['fielddefs'][$f]['format']);
$v = Template::timestamp($v, self::$current_src['fielddescs'][$f]['format']);
$dn = $fd['sql'];
if (!$dn)
$dn = $f;
$v = mysql_ecranize($v);
if ($t == 'eq')
$where[] = "$dn = $v";
elseif ($t == 'ge')
elseif ($t == 'ge' && $fd['le_ge'])
$where[] = "$dn >= $v";
elseif ($t == 'le')
elseif ($t == 'le' && $fd['le_ge'])
$where[] = "$dn <= $v";
else
unset($wh[$k]);
}
}

View File

@ -66,25 +66,23 @@
</table>
Условия выборки данных:
<table>
<!-- SET i = "0" -->
<!-- FOR f = fielddescs -->
<tr><th style="text-align: left; vertical-align: top">{s f.name}</th>
<td style="text-align: left; vertical-align: top">
= <input type="hidden" name="field-{i}" value="{s f.id}" /><input type="hidden" name="type-{i}" value="eq" />
=
<!-- IF f.options -->
<select style="width: 100px" name="value-{i}">
<select style="width: 100px" name="where-eq-{f.id}">
<option value="">любой</option>
<!-- FOR o = f.options -->
<option value="{s o.id}">{s o.name}</option>
<option value="{s o.id}"<!-- IF eq(o.id,get(wh,concat('where-eq-',f.id))) --> selected<!-- END -->>{s o.name}</option>
<!-- END -->
</select>
<!-- ELSE -->
<input style="width: 100px" type="text" name="value-{i}" value="{s get(wh,concat('value-',i))}" />
<input style="width: 100px" type="text" name="where-eq-{f.id}" value="{s get(wh,concat('where-eq-',f.id))}" />
<!-- END -->
<!-- SET i = add(i,1) -->
<!-- IF f.le_ge -->
или &ge; <input type="hidden" name="field-{i}" value="{s f.id}" /><input type="hidden" name="type-{i}" value="ge" /><input style="width: 100px" type="text" name="value-{i}" value="{s get(wh,concat('value-',i))}" /><!-- SET i = add(i,1) -->
и &le; <input type="hidden" name="field-{i}" value="{s f.id}" /><input type="hidden" name="type-{i}" value="le" /><input style="width: 100px" type="text" name="value-{i}" value="{s get(wh,concat('value-',i))}" /><!-- SET i = add(i,1) -->
или &ge; <input style="width: 100px" type="text" name="where-ge-{f.id}" value="{s get(wh,concat('where-ge-',f.id))}" />
и &le; <input style="width: 100px" type="text" name="where-le-{f.id}" value="{s get(wh,concat('where-le-',f.id))}" />
<!-- END -->
<!-- IF f.is_time --> (YYYY-MM-DD HH:MM:SS)<!-- END -->
{f.comment}