Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибка в наследовании классов..?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
GYS_Yu
Отправлено: 23 Февраля, 2011 - 22:43:08
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Имеется класс A

PHP:
скопировать код в буфер обмена
  1. class A extends Db {
  2.                
  3.        
  4.                 //общая функция выборки из БД
  5.                 function select($fields,$table){
  6.  
  7.                         $query = 'SELECT '.$fields.' FROM '.$table;
  8. //                      echo $query;
  9.                         $result_query = $this->mysql_zapros($query);
  10.                        
  11.                         return $result_query;
  12.  
  13.         }
  14. }
mysql_zapros($query) - функция родительского класса DB, который отвечает за работу с MySql

Далее есть еще два класса:

PHP:
скопировать код в буфер обмена
  1. class B extends A{
  2.  
  3.  
  4. function get_b(){
  5.                         $res = $this->select('*','table1');
  6.                         while ($result = mysql_fetch_assoc($res)){
  7.                                 $list[] = $result;
  8.                         }
  9.                         return $list;
  10.                 }
  11. }
и

PHP:
скопировать код в буфер обмена
  1. class C extends A {
  2.  
  3. function get_c(){
  4.                         $res = $this->select('*','table2');
  5.                         while ($result = mysql_fetch_assoc($res)){
  6.                                 $list[] = $result;
  7.                         }
  8.  
  9.                         return $list;
  10.                 }
  11. }


Далее делаю вот что..
PHP:
скопировать код в буфер обмена
  1.  
  2. $c = new C();
  3. $list1 = $c->get_c();
и все вроде нормально... НО когда дописываю вот такие две строчки:

PHP:
скопировать код в буфер обмена
  1. $b = new B();
  2. $list2 = $b->get_b();
код отказывается работать так, как я хочу...



Подскажите, пожалуйста, почему так происходит... Где я невнимателен? Где я ошибаюсь?

(Отредактировано автором: 24 Февраля, 2011 - 07:38:32)

 
 Top
OrmaJever Модератор
Отправлено: 23 Февраля, 2011 - 23:26:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




GYS_Yu пишет:
код отказывается работать так, как я хочу...

а как вы хотите? Однако
GYS_Yu пишет:
SELECT * FROM table1SELECT * FROM table2

выводит такую строку потому что нету перевода строки.
Напишите

и будет выводить раздельно, 2 разных запроса как и должно быть!
В чём ошибка?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
altermann
Отправлено: 24 Февраля, 2011 - 01:32:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




Я конечно не знаю как вы хотите чтоб он работал, но у вас в функции get_b() ошибка: в цикле while в массив присваивается полученный ресурс БД, а не результат из ресурса. Нужно:
PHP:
скопировать код в буфер обмена
  1. while ($result = mysql_fetch_assoc($res)){
  2.     $list[] = $result;
  3. }

(Отредактировано автором: 24 Февраля, 2011 - 01:34:02)



-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
OrmaJever Модератор
Отправлено: 24 Февраля, 2011 - 01:49:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Нет это не ресурс аасоциатвный масив. Выдет примерно следуйщее
CODE (htmlphp):
скопировать код в буфер обмена
  1. $list[0]['id']
  2. $list[0]['name']
  3. ...
  4. $list[1]['id']
  5. $list[1]['name']
  6. ...
  7. и тд.

(Отредактировано автором: 24 Февраля, 2011 - 01:49:59)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
altermann
Отправлено: 24 Февраля, 2011 - 01:54:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




Нет, он получает ресурс БД (результат mysql_query()), и после while он получит массив
CODE (html):
скопировать код в буфер обмена
  1. $list[0]='Resource #..'
  2. $list[1]='Resource #..'
  3. ..

А если это не ресурс, тогда получит ошибку что требуется ресурс для функции mysql_fetch_assoc()

(Отредактировано автором: 24 Февраля, 2011 - 01:57:38)



-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
OrmaJever Модератор
Отправлено: 24 Февраля, 2011 - 02:02:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




ааа я помотрел на исправленый код цыкла. Извиняюсь ошибся Улыбка


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
GYS_Yu
Отправлено: 24 Февраля, 2011 - 07:38:52
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Простите! Запутал, блин.. отредактировал.

Хочу последовательно выводить инфу из двух таблиц. Если обращаюсь только к одной из функций get_b или get_c, то все в порядке. Если же последовательно к двум то не получается.

(Отредактировано автором: 24 Февраля, 2011 - 07:39:45)

 
 Top
Stierus Супермодератор
Отправлено: 24 Февраля, 2011 - 09:24:01
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




распишите подробнее, что значит "не получается", "код отказывается работать так, как я хочу" ... в чем выражается это - вылезает ошибка, информация дублируется - что именно происходит? Ну или выложите весь код, начиная с класса Db, а не эти куски Улыбка
 
My status
 Top
GYS_Yu
Отправлено: 24 Февраля, 2011 - 19:16:16
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




всем спасибо за участие!
тему можно закрывать :0)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB