![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Guest
Сообщений: n/a
|
(((ama_tovar.id_type)=$id) AND ((ama_tovar_group.id)=$id_type))
вопрос в том, что странице, может не передоватся $id_type... то есть строка выглядит так http://www.aaa.ru/print_tovar_table.php?id=1&id_type= и в sql запрос воткнется неопределенное значение (((ama_tovar.id_type)=$id) AND ((ama_tovar_group.id)=???????)) суть вопроса в том , как сделать так, что бы автоматом убиралось AND ((ama_tovar_group.id)=$id_type)), или чтоюы $id_type становилосьчислом от 0 до бесконечности (может * незнаю...) |
|
|||||
|
"simple"
|
можно простыми ифами...
если переменная передана - один запрос, если же нет - другой... |
|
|||||
|
Что-то типа этого:
$sql_c = "select count(topic_id) from topics"; switch ($section){ case "1": $sql = "$sql_c where section='1'"; $section_name = strtoupper($sec_1); break; case "2": $sql = "$sql_c where section='2'"; $section_name = strtoupper($sec_2); break; case "3": $sql = "$sql_c where section='3'"; $section_name = strtoupper($sec_3); break; case "all":$sql = $sql_c; $section_name = strtoupper($sec_123); break; } $result = mysql_query($sql);
__________________
FROGGY: ничто так не обманчиво, как слишком очевидные факты... |
|
|||||
|
Guest
Сообщений: n/a
|
о да огромный кекс люди...
|
|
|||||
|
$str="(((ama_tovar.id_type)=$id)";
if ($id_type>0) $str= $str+ "AND ((ama_tovar_group.id)=$id_type))";
__________________
для спящего время бодрствования равносильно сну. Последний раз редактировалось Sami; 01.10.2002 в 11:28. |
|
|||||
|
На самом деле, просто надо один день попариться и написать Query.class, который имеет кучу методов под каждую SQL конструкцию... Я вот попарился - написал, теперь не надо воротить все эти if-else, которые абсолютно невозможно читать, если у тебя серьезный запрос с сабселектами и join statements. Очень советую =)
__________________
BCE HAMAHA |
|
|||||
|
"simple"
|
2LUNA
а можно поподробнее... или хотя бы абстрактный пример одного метода... |
|
|||||
|
Пишешь класс с методом для каждой SQL составляющей запроса...
Class Query {
var $_from_table;
var $_data_to_select = "*";
var $_where_condition = "";
var $_group_by_condition = "";
var $_order_by_condition = "";
var $_limit_condition = "";
// ... и так далее ...
// потом по отдельному методу для каждой конструкции.
// То есть, например, для 'WHERE' это выглядет примерно так:
function whereAdd($cond = NULL, $conj = "AND")
{
if ($cond == NULL) {
$this->_where_condition = "";
return;
}
if (!empty($this->_where_condition)) {
$this->_where_condition .= " $conj $cond";
return;
}
$this->_where_condition = " WHERE $cond";
}
// ... и так далее ...
function getQuery() {
return "SELECT " . $this->_data_to_select .
" FROM " . $this->_from_table .
$this->_where_condition .
$this->_group_by_condition .
$this->_order_by_condition .
$this->_limit_condition;
}
}
и так далее... Думаю, мысль ясна... У PEAR PPL это все уже написано, можно взять за основу и адаптировать под свои нужды (базу данных).
__________________
BCE HAMAHA |
![]() |
Часовой пояс GMT +4, время: 12:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|