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]   

> Без описания
dzirt68
Отправлено: 26 Января, 2012 - 08:55:02
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include_once 'config.php';
  3.  
  4. class print_ads_extended {
  5.  
  6. private $id;
  7.  
  8. public function __construct($id) {
  9. $this->id=$id;
  10. }
  11. public function print_ads() {
  12. $sql="SELECT * FROM ads WHERE id='$this->id'";
  13. $this->result=mysql_query($sql);
  14. while($ads=mysql_fetch_array($this->result))
  15.      {
  16.                 return $ads;
  17.     }
  18.         }
  19. public function print_ads_category() {
  20. $id_cat=$this->print_ads();
  21. $sql="SELECT id, category FROM category WHERE id=$id_cat[category_id]";
  22. $this->result=mysql_query($sql);
  23. while($category=mysql_fetch_array($this->result))
  24.      {
  25.                 return $category;
  26.     }
  27.         }
  28.         public function print_ads_sub_category() {
  29. $id_cat=$this->print_ads();
  30. $sql="SELECT id, category FROM category WHERE id=$id_cat[sub_category_id]";
  31. $this->result=mysql_query($sql);
  32. while($sub_category=mysql_fetch_array($this->result))
  33.      {
  34.                 return $sub_category;
  35.     }
  36.         }
  37.         public function print_ads_params() {
  38. $id_params=$this->print_ads_sub_category();
  39. $sql="SELECT * FROM params_category WHERE id_category=$id_params[id]";
  40. $this->result=mysql_query($sql);
  41. while($params=mysql_fetch_array($this->result))
  42.      {
  43.                 echo $params;
  44.     }
  45.         }
  46.         public function print_ads_params_values() {
  47. $id_params=$this->print_ads_params();
  48. $sql="SELECT * FROM params_values WHERE params_id=$id_params[id]";
  49. $this->result=mysql_query($sql);
  50. while($params=mysql_fetch_array($this->result))
  51.      {
  52.                 return $params;
  53.     }
  54.         }
  55.         }
  56. $obj= new print_ads_extended($id=$_GET[id]);
  57. $r=$obj->print_ads();
  58. $par=unserialize($r[params]);
  59. echo $par[1];
  60. $m=$obj->print_ads_params();
  61. echo $m[2];
  62.         ?>

ребят как из бд вывести все а не первое значение? а то у меня как бы без цикла получается(( второй день с ООП. не судите строго.
 
 Top
Panoptik
Отправлено: 26 Января, 2012 - 09:00:44
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




PHP:
скопировать код в буфер обмена
  1. $sql="SELECT * FROM ads WHERE id='$this->id'";
у вас условие в выражении. если уберете "WHERE id = $this->id" то выведутся все записи...

тут беда больше в sql а, не в ООП


-----
Just do it
 
 Top
dzirt68
Отправлено: 26 Января, 2012 - 09:11:48
Post Id


Новичок


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


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




Panoptik пишет:
PHP:
скопировать код в буфер обмена
  1. $sql="SELECT * FROM ads WHERE id='$this->id'";
у вас условие в выражении. если уберете "WHERE id = $this->id" то выведутся все записи...

тут беда больше в sql а, не в ООП
да нет к сожалению. там внизу в коде тоже с условием но под это условие подходит несколько строк, а выводится только одна(( уж запросы то я вроде могу составлять
 
 Top
Panoptik
Отправлено: 26 Января, 2012 - 09:14:59
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




PHP:
скопировать код в буфер обмена
  1. public function print_ads_params_values() {
  2. $id_params=$this->print_ads_params();
  3. $sql="SELECT * FROM params_values WHERE params_id=$id_params[id]";
  4. $this->result=mysql_query($sql);
  5. $arr_param = array();
  6. while($params=mysql_fetch_assoc($this->result))
  7. {
  8.  $arr_param[] = $params;
  9. }
  10. return $arr_param;
  11. }

в в цикле делаете ретурн. и тогда функция заканчивается при первом ретурне

(Отредактировано автором: 26 Января, 2012 - 09:15:40)



-----
Just do it
 
 Top
dzirt68
Отправлено: 26 Января, 2012 - 09:22:16
Post Id


Новичок


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


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




Panoptik пишет:
PHP:
скопировать код в буфер обмена
  1. public function print_ads_params_values() {
  2. $id_params=$this->print_ads_params();
  3. $sql="SELECT * FROM params_values WHERE params_id=$id_params[id]";
  4. $this->result=mysql_query($sql);
  5. $arr_param = array();
  6. while($params=mysql_fetch_assoc($this->result))
  7. {
  8.  $arr_param[] = $params;
  9. }
  10. return $arr_param;
  11. }

в в цикле делаете ретурн. и тогда функция заканчивается при первом ретурне

так же одна запись, но уже почемуто следуюущая
 
 Top
Panoptik
Отправлено: 26 Января, 2012 - 09:23:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




покажите блок вывода
в вашем коде его нет


-----
Just do it
 
 Top
dzirt68
Отправлено: 26 Января, 2012 - 09:25:28
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. $obj= new print_ads_extended($id=$_GET[id]);
  2.  
  3. $r=$obj->print_ads();
  4.  
  5. $par=unserialize($r[params]);
  6.  
  7. echo $par[1];
  8.  
  9. $m=$obj->print_ads_params();
  10.  
  11. echo $m[2];

так я пока экранирую. не знаю вообще на сколько это правильно. . .
 
 Top
Panoptik
Отправлено: 26 Января, 2012 - 09:26:57
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




по идее должно быть примерно так
PHP:
скопировать код в буфер обмена
  1. $obj= new print_ads_extended($id=$_GET[id]);
  2. $r=$obj->print_ads_params_values();
  3. foreach($r as $v) {
  4.   echo $v['field'].' '.$v['field2'];
  5. }

где fiels,field2 - поля в таблице
(Добавление)
в любом случае вот это:
PHP:
скопировать код в буфер обмена
  1. echo $par[1];
  2.  
  3. $m=$obj->print_ads_params();
  4.  
  5. echo $m[2];
не выведет вам больше одного результата
используйте цикл foreach для перебора всех результатов


-----
Just do it
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Января, 2012 - 10:04:09
Post Id



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


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


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




dzirt68, я скажу вот как:
Посмотрите на ваш код и найдите там одинаковые строки.
Все их сократите в один метод, и затем спокойно вызывайте одной строчкой.
А лучше сделайте отдельный класс для работы с БД,
пусть он будет простенький, но отдельный.
Не надо путать веревочку сливного бачка с трамвайной ручкой.
Соответственно сделайте человеческий метод, который будет ичить массив если это нужно..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB