Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: класс для многотабличных запросов
 
 автор: Slo_Nik   (20.03.2009 в 01:43)   письмо автору
 
 

в книге "ООП на PHP" в главе "постраничная навигация для базы данных" сказано, что для того, что бы можно было выполнять многотабличные запросы, надо создать новый класс.
как я понимаю добавить ещё один параметр в конструктор класса не достаточно.
если можно, подскажите кто может структуру класса?

  Ответить  
 
 автор: Dobrynin   (20.03.2009 в 06:26)   письмо автору
 
   для: Slo_Nik   (20.03.2009 в 01:43)
 

в конструктор закидываешь имена таблиц и поля по которым будет производиться JOIN, вот и всё

  Ответить  
 
 автор: Slo_Nik   (20.03.2009 в 11:37)   письмо автору
 
   для: Dobrynin   (20.03.2009 в 06:26)
 

я пробовал сделать так

<?php
class pager_mysql extends pager{
   
// имена полей в таблицах
  
protected $weald
  
// дальше идут остальные члены класса
 
..................................................
  
// конструктор
 
public function __construct($weald "",
                                                     
и т.д.
                                                    )
         
$this->weald $weald;
        
и т.д.
  
// метод get_page()
  
public fnction get_page(){
 .............................................
 
//извлекаем позиции для текущей страницы
 
$query "SELECT {$this->weald} FROM {$this->tablename}
                          
{$this->where}
                          
{$this->order}
                          LIMIT 
$first,{$this->get_pnumber()}";
..........................................................................................
 }
}
?>

на странице где должен быто вывод информации,подключил класс, объявил объект

<?php
$obj 
= new pager_mysql("tb1.*,bt2.name AS name ","tb1,tb2","условие where","условие сортировки",3,2);
?>

но в конечном результате ни чего толком не получилось
ругнулось Not unique table/alias: 'photo'
и куда бежать, куда стрелять не могу понять...
подскажите, научите уму-разуму....

  Ответить  
 
 автор: Dobrynin   (20.03.2009 в 11:57)   письмо автору
 
   для: Slo_Nik   (20.03.2009 в 11:37)
 

тебе нужен join или как ты собираешься выдёргивать данные из таблиц?

  Ответить  
 
 автор: Slo_Nik   (20.03.2009 в 12:52)   письмо автору
 
   для: Dobrynin   (20.03.2009 в 11:57)
 

дело в том, что если не использовать класс, то я получал данные из таблицы как и написал в классе. я взял части из sql запроса и подставил в класс.
в простом запросе всё работает нормально и ни каких ошибок не выдаёт.
первое, что меня интересовало, это правильно ли я изменил класс и второе, это как дописать запрос?
если задать превдоним для таблиц, то выводится ошибка
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 'photo.id_catalog = photocat.id_catalog AND photocat.id_catalog ' at line 2
проверил изменённый класс в работе с одной таблицей, всё работает.

  Ответить  
 
 автор: Slo_Nik   (20.03.2009 в 14:14)   письмо автору
 
   для: Slo_Nik   (20.03.2009 в 12:52)
 

всё, разобрался. простая невнимательность не давала всё сделать сразу.
но возник другой вопрос.
зачем наследовать новый класс pager_mysql_multi от pager елси можно существующий pager_mysql чуть изменить, вернее добавить ещё один член класса?
какие преимущества появляются если наследовать отдельный класс для выполнения многотабличных запросов?

  Ответить  
 
 автор: zesen   (14.07.2012 в 13:16)   письмо автору
 
   для: Slo_Nik   (20.03.2009 в 14:14)
 

Извините, не могли бы Вы скинуть, Ваш вариант переписанного класса?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования