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 :: Зацикливание WHILE при выводи mysql

 PHP.SU

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


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

> Без описания
span4ez
Отправлено: 03 Февраля, 2011 - 16:38:18
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


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




Уважаемые участники.

Возникла след проблема. Не пойму в чем проблема. Вывожу таблицу через while а она выводит только 1 строчку и зацикливается. Пытаюсь написать на ООП.

Класс для работы с DB:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class bdconnect{
  3.         private $host = 'localhost';
  4.         private $login = 'root';
  5.         private $pass = '';
  6.         private $db = 'CMS';
  7.        
  8.         public function con_bd(){
  9.                 $connect = @mysql_connect($this->host,$this->login,$this->pass);
  10.                 if (!$connect){
  11.                         echo "Ошибка bdconnect_№1";
  12.                         exit;
  13.                 }else{
  14.                         $base = @mysql_select_db($this->db,$connect);
  15.                         if (!$base){
  16.                                 echo "Ошибка bdconnect_№2";
  17.                                 exit;
  18.                         }else{
  19.                                 return $connect;
  20.                         }
  21.                 }
  22.         }
  23.        
  24.         public function sel_bd($tab,$param, $strsel){
  25.                 if ($param != ""){
  26.                         $sel = mysql_query("SELECT * FROM $tab WHERE $param", $this->con_bd());
  27.                         if ($sel == TRUE){
  28.                                 $rowsel = mysql_fetch_array($sel);
  29.                                 if ($strsel != ""){
  30.                                         return $rowsel[$strsel];
  31.                                 }else{
  32.                                         return $rowsel;
  33.                                 }
  34.                         }else{
  35.                                 echo "Ошибка bdconnect_№3";
  36.                                 exit;
  37.                         }                                                                              
  38.                 }else{
  39.                         $sel = mysql_query("SELECT * FROM $tab", $this->con_bd());
  40.                         if ($sel == TRUE){
  41.                                 $rowsel = mysql_fetch_array($sel);
  42.                                 if ($strsel != ""){
  43.                                         return $rowsel[$strsel];
  44.                                 }else{
  45.                                         return $rowsel;
  46.                                 }
  47.                         }else{
  48.                                 echo "Ошибка bdconnect_№3";
  49.                                 exit;
  50.                         }
  51.                 }
  52.         }
  53.        
  54.         public function ins_bd($tab,$pol,$val){
  55.                 $res = mysql_query("INSERT INTO $tab ($pol) VALUES ($val)", $this->con_bd());
  56.                 if($res == FALSE){
  57.                         echo "Ошибка bdconnect_№4";
  58.                         exit;
  59.                 }
  60.         }
  61.        
  62.         public function upd_bd($tab,$if,$val){
  63.                 $res = mysql_query("UPDATE $tab SET $if WHERE $val", $this->con_bd());
  64.                 if($res == FALSE){
  65.                         echo "Ошибка bdconnect_№5";
  66.                         exit;
  67.                 }
  68.         }      
  69. }
  70. ?>


Вывод таблиц:
PHP:
скопировать код в буфер обмена
  1.  
  2. require_once 'engine/classes/bdconnect.class.php';
  3. $bd = new bdconnect();
  4. $bd->con_bd();
  5.  
  6. echo "<table>";
  7. while ($array = $bd->sel_bd("goods","","")){
  8.         echo "<tr><td>".$array["name_goods"]."</td></tr>";
  9. }
  10. echo "</table>";


и не пойму в чем проблема. Помогите пожалуйста.

Спасибо за внимание.
 
 Top
annihilus
Отправлено: 03 Февраля, 2011 - 16:47:18
Post Id



Гость


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


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




Условие в цикле всегда положительно.. Улыбка
 
 Top
span4ez
Отправлено: 03 Февраля, 2011 - 16:59:39
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


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




annihilus пишет:
Условие в цикле всегда положительно..


А как мне избежать этого и обойти Недовольство, огорчение
 
 Top
annihilus
Отправлено: 03 Февраля, 2011 - 17:08:02
Post Id



Гость


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


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




span4ez пишет:
PHP:
скопировать код в буфер обмена
  1. $sel = mysql_query("SELECT * FROM $tab", $this->con_bd());
  2.                         if ($sel == TRUE){
  3.                                 $rowsel = mysql_fetch_array($sel);
  4.                                 if ($strsel != ""){
  5.                                         return $rowsel[$strsel];
  6.                                 }else{
  7.                                         return $rowsel;
  8.                                 }
  9.                         }else{
  10.                                 echo "Ошибка bdconnect_№3";
  11.                                 exit;
  12.                         }

Наверно данный участок кода должен выглядеть примерно вот так, если использоваться while вне метода..:

PHP:
скопировать код в буфер обмена
  1. if(!$this->sel)
  2. {
  3.      $this->sel = mysql_query("SELECT * FROM $tab", $this->con_bd());
  4.         if (!$this->sel)
  5.                 {
  6.             echo "Ошибка bdconnect_№3";
  7.             exit;
  8.         }
  9. }
  10.  
  11.         if($rowsel = mysql_fetch_array($this->sel))
  12.         {
  13.                 return $rowsel;
  14.         }
  15.         else
  16.         {
  17.          return false;
  18.         }
  19.  

(Отредактировано автором: 03 Февраля, 2011 - 18:24:05)

 
 Top
OrmaJever Модератор
Отправлено: 03 Февраля, 2011 - 17:11:02
Post Id



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


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


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




а вы ресурс возвращёный mysql_query() записывайте как public свойство и потом сним работайте
PHP:
скопировать код в буфер обмена
  1. // вверху написать public $result = false;
  2. $this->result = mysql_query("SELECT * FROM $tab", $this->con_bd());

и потом цыкл будет выглядеть так
PHP:
скопировать код в буфер обмена
  1. $bd->sel_bd("goods","","")
  2. while ($array = mysql_fetch_array($bd->result)){
  3.         echo "<tr><td>".$array["name_goods"]."</td></tr>";
  4. }

(Отредактировано автором: 03 Февраля, 2011 - 17:11:52)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
span4ez
Отправлено: 03 Февраля, 2011 - 17:20:12
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


Помог: 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