Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > Базы данных

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 26.09.2002, 18:07
  № 1  
ama2001
Guest

Сообщений: n/a
По умолчанию Это опять я !!!! в условие where траблы

(((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 до бесконечности (может * незнаю...)

Старый 27.09.2002, 02:42
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 2  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
можно простыми ифами...
если переменная передана - один запрос,
если же нет - другой...

Старый 27.09.2002, 09:51
Froggy вне форума Посмотреть профиль Отправить личное сообщение для Froggy Найти все сообщения от Froggy
  № 3  
Froggy
 
Аватар для Froggy

Регистрация: Sep 2001
Адрес: россия, Краснодар
Сообщений: 157
Отправить сообщение для Froggy с помощью ICQ
По умолчанию Я кстати так и делал...

Что-то типа этого:
$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: ничто так не обманчиво, как слишком очевидные факты...

Старый 27.09.2002, 10:15
  № 4  
ama2001
Guest

Сообщений: n/a
о да огромный кекс люди...

Старый 01.10.2002, 11:27
Sami вне форума Посмотреть профиль Отправить личное сообщение для Sami Найти все сообщения от Sami
  № 5  
Sami

Регистрация: Nov 2000
Сообщений: 263
Отправить сообщение для Sami с помощью ICQ
$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.
Старый 13.10.2002, 06:26
LUNA вне форума Посмотреть профиль Посетить домашнюю страницу LUNA Найти все сообщения от LUNA
  № 6  
LUNA

Регистрация: Dec 1999
Адрес: Sunnyvale, CA USA
Сообщений: 1,313
Отправить сообщение для LUNA с помощью ICQ Отправить сообщение для LUNA с помощью Yahoo
На самом деле, просто надо один день попариться и написать Query.class, который имеет кучу методов под каждую SQL конструкцию... Я вот попарился - написал, теперь не надо воротить все эти if-else, которые абсолютно невозможно читать, если у тебя серьезный запрос с сабселектами и join statements. Очень советую =)
__________________
BCE HAMAHA

Старый 14.10.2002, 02:10
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 7  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
2LUNA
а можно поподробнее...
или хотя бы абстрактный пример одного метода...

Старый 14.10.2002, 07:30
LUNA вне форума Посмотреть профиль Посетить домашнюю страницу LUNA Найти все сообщения от LUNA
  № 8  
LUNA

Регистрация: Dec 1999
Адрес: Sunnyvale, CA USA
Сообщений: 1,313
Отправить сообщение для LUNA с помощью ICQ Отправить сообщение для LUNA с помощью Yahoo
Пишешь класс с методом для каждой 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;
  }

}
А потом уже составлешь свой query используя эти методы:

Код:
  $query_object = new Query("my_table");
  $query_object->selectAdd("table.column");
  $query_object->fromAdd("new_table");
  $query_object->whereAdd("id < 40");
  $query_object->toString();
и так далее... Думаю, мысль ясна... У PEAR PPL это все уже написано, можно взять за основу и адаптировать под свои нужды (базу данных).
__________________
BCE HAMAHA

Создать новую тему   Часовой пояс GMT +4, время: 12:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:35.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.