Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

БД и ООП в PHP

4.9K
30 мая 2007 года
77713
43 / / 22.02.2006
Мой скрипт работает с MySQL, все нормально. Но я хочу занести код работы с БД в класс и вызывать методы обработки БД через обекты. Я так и сделал, создал клас, в нем метод (функцыю) в нем подключил БД, все прописал, должно выводить результат обработки БД. Создал обект етого класа, ставлю на выполнение и езультат выводит, но сами даные с БД не выводит. Что это, возможно есть какаято спецыфика при работе с БД и ООП? Ошыбок не выводит, в БД даные есть, без классов и обектов работает, а с ними - нет.
Версия PHP 5

Помогите, очень надо.
15
30 мая 2007 года
shaelf
2.7K / / 04.05.2005
Доктор, у меня ноготь чешется, через сколько лет я умру? Может код хотя бы, а? Только желательно в аттаче, если там больше 70 строчек, а так в красиво оформленую рамочку)))).
4.9K
30 мая 2007 года
77713
43 / / 22.02.2006
Ето клас, он в файле library.php

Код:
<?
class EnterTF {
var $login;
var $pwd;
var $right_res;
var $go = 0;
   
function RightLP($login, $pwd) {
  include "../scripts_db/connect_db.php";  //код ниже
  mysql_select_db($DB);
  if ($this->login != "") {
  if ($this->pwd != "") {
     $query_login = "SELECT '$this->login' FROM $DB_1 WHERE LOG = '$this->login'";
     $result_login = mysql_query($query_login);
     if (mysql_num_rows($result_login) == 0) {
        $this->right_res = "Пользователя с таким лог нет";
     }
     else {
           $query_pwd = "SELECT '$this->pwd' FROM $DB_1 WHERE PASS = '$this->pwd'";
           $result_pwd = mysql_query($query_pwd);
           if (mysql_num_rows($result_pwd) == 0) {
              $this->right_res = "Неправельный пароль";
    }
    else {
         $go = 1;
         $r = mysql_query("SELECT * FROM $DB_1 WHERE LOG = '$this->login'");
                  $f = mysql_fetch_array($r);
         $this->right_res = "Hello $f[LNAME] $f[FNAME]";
          }
    }
} else {$this->right_res = "Укажыте пароль!";}
} else {$this->right_res = "Укажите логин!";}
       
}
}
?>


connect_db.php
Код:
$SERVER = "server";
$USER = "root";
$PASSWD = "pwd";
$DB = "sys_db";
$DB_1 = "sys_user";
if (!mysql_connect($SERVER, $USER, $PASSWD))
{
    echo $HEAD;
    echo $CP;
    echo $BODY;
    echo "<H2>$ERROR</H2>";
    echo "</BODY></HTML>";
    exit;
}
mysql_select_db($DB);


library.php

Код:
include "library.php";

if (class_exists('EnterTF')) {
   $RightFT = new EnterTF();
} else {
    return 'error: EnterTF class not found';
}

$RightFT->RightLP($lo, $pw);
echo "<CENTER>".$RightFT->right_res."</CENTER><BR>";
// ВОТ ЗДЕСЬ ПОСТОЯННО ВЫВОДИТ "Укажите логин!"


И что же ето такое???
15
30 мая 2007 года
shaelf
2.7K / / 04.05.2005
Бегом в манул читать чем отличаются двойные от одинарных ковычек, потом внимательно просматриваем код
12
31 мая 2007 года
alekciy
3.0K / / 13.12.2005
И зачем велосипед то изобретать... Чесно говорю мне подумалось, что shaelf первым дело пошлет в зентдовский фреймворк :D , но нет... може зря?
15
31 мая 2007 года
shaelf
2.7K / / 04.05.2005
При чём тут Зенд? Человек синтаксиса не знает.
PS Это не ООП, это непонятное объединение в класс 2 функций.
240
31 мая 2007 года
aks
2.5K / / 14.07.2006
Цитата: 77713

$this->right_res = "Укажыте пароль!";


Жесть )

8
31 мая 2007 года
mfender
3.5K / / 15.06.2005
В написанном ООП не просматривается. Я бы сказал, что тут вообще ничего не просматривается. Тупо "линия" с выводом в поток, зачем-то заключённое в класс. Зачем?
13K
31 мая 2007 года
Tim_PL
25 / / 02.10.2006
Если используешь PHP5, то можно сделать что-то типа такого:
Код:
<?php
/*-----------------------------------------------------------------------
   Класс для подключения базы данных.
   Параметры подключения должны быть описаны
   в файле конфигурации cnf_config.phpm.
-----------------------------------------------------------------------*/

class sql {
   private $result_rows;  // Result rows hash
   private $query_handle;  // db: the query handle
   private $link_ident;  // db: the link identifier
 
   public function __construct() {
    //переменные берутся из файла конфигурации
    global $db_host, $db_name, $db_username, $db_password;
    $link_ident = @mysql_connect($db_host,$db_username,$db_password);
    if (!$link_ident) $this->errorshow(0);
    if (!@mysql_select_db($db_name,$link_ident)) $this->errorshow(1);
    if (!@mysql_ping()) $this->errorshow(2);
   }
 
   private function errorshow($errcode) {
      $errmsg="";
      switch ($errcode) {
     case 0: $errmsg="Database server unreacheble, sorry!";break;
     case 1: $errmsg="Database unreacheble, sorry!";break;
     case 2: $errmsg="Connection lost, sorry!";break;
      }
      echo $errmsg;
      die();
   }
   
   public function query($sql, $code_return_mode = 0) {
      $q_handle = @mysql_query($sql);
      $n = @mysql_num_rows($q_handle);
      for ($i=0; $i<$n; $i++) {
     $result = mysql_fetch_array($q_handle);  
         $return_array[$i] = $result;
      }
      if (!$q_handle) error_log("QUERY FAILED: $sql\n");
      @$this->result_rows = $return_array;
      if (!$q_handle) {
         return(1);
      } else {
         return(0);  // return 0 if it fails
      }
   }
 
   public function get_result($row_num, $column_name) {
      return ($this->result_rows[$row_num][$column_name]);
   }
 
   public function get_row_hash($row_num) {
      return ($this->result_rows[$row_num]);
   }  
 
   public function get_table_hash() {
      return $this->result_rows;
   }

   public function done($close_connection = 0) {
      if ($close_connection) {
         @mysql_close($this->link_ident);
      }
   }
}


и неплохо бы поместить файл конфигурации с параметрами подключения выше корневой директории сайта.

А вообще фреймворки рулят, для начала советую CodeIgniter, простой и понятный, хорошая реализация MVC, отличная документация.

P.S. Автор учЫ русскЫй :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог