Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Область видимости переменной 
:(
    Опции темы
MrDmitry
Дата 2.2.2017, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Здравствуйте, возникла проблема которую я так и не могу решить, задавал подобный вопрос на другом форуме но там так же мне  не помогли.

Иметься следующий код.

Файл Core.php
Код

<?
Class Core extends Core_Template 
 
//Получаем id пользователя
    public function user_id()
    {
        if(isset($_SESSION['userid']))
        {
            return $_SESSION['userid'];
        }
        else
        {
            return 0;
        }
    }
    
    //Проверяем аутентификацию пользователя
    public function checkAuth()
    {
        $result = $this->sqlQuery("Select count(*) from user where id = ':param1'", $this->user_id());
        if($result['count(*)'] > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
        
    }
    //Подключаемся и пользуеся базой данных
    public function sqlQuery($text, $param1 = "", $param2 = "", $param3 = "", $param4 = "")
    {
       $sql = $this->db->prepare($text);
       for ($i = 1; $i <= 4; $i++) 
       {
          if($i == 1 &&  $param1 != "")
          {
              $sql->bindParam(':param1', $param1, PDO::PARAM_STR);
          }
          if($i == 2 &&  $param2 != "")
          {
              $sql->bindParam(':param2', $param2, PDO::PARAM_STR);
          }
          if($i == 3 &&  $param3 != "")
          {
              $sql->bindParam(':param3', $param3, PDO::PARAM_STR);
          }if($i == 4 &&  $param4 != "")
          {
              $sql->bindParam(':param4', $param4, PDO::PARAM_STR);
          }
       }
       $sql->execute();
       
       return $sql->fetch();
    }
 }
?>


Файл Core_Templayte
Код

<?
class Core_Template extends BaseModule
{   
     private $jsinc;
     
     
     private function html()
    {
        $result = '<!DOCTYPE HTML>
        <head>
           <meta http-equiv= "Content-Type" content="text/html; charset=utf-8">
        <title>CHATER</title>';
        return $result;
    }
    
    private function head()
    {
        $result .= '<link rel="stylesheet" href="Styles/Style.css" type="text/css" media="screen" />';
        $result .= '<script type="text/javascript" src="/?link=js/jquery-3.1.1.js"></script>';
        $result .= '<script type="text/javascript" src="/?link=Core/Core.js"></script>';
        $result .= $this->jsinc;
        $result .= '</head>';
        return $result;
    }
    
    private function body()
    {
        $result = '<body>
            <div class="head">
     <Span class="logo"><a href="./">CHATER</a></span>';
    
    if($this->checkAuth())
     {
      $result .='
      <div class="setting">
      <a href="#" class="showHelp"><img src="img/setting.png"></a>
       <div class="help" style="display:none">
        <a href="#" class="checkProfile" id = "'.$this->user_id().'">Профиль</a><br/>
        <a href="#" class="exit">Выход</a>
       </div>
      </div>';
     }
     
    $result .='</div>';
    
    return $result;
    
    }
    
    
     private function footer()
    {
         $result = '</body>
        </html>';
    
    return $result;
    }
    
    public function addjsfile($page)
    {
     $this->jsinc .= '<script src="/?link='.$page.'.js" type="text/javascript"></script>';
    }
    
    public function show($html, $page)
    {
      addjsfile($page);
      return $this->html().$this->head().$this->body().$html.$this->footer(); 
    }
}


Файл BaseModule 
Код

<?
abstract class BaseModule   
{
    protected $db;
    public function __construct()
    {
        global $host;
        global $base;
        global $user;
        global $pass;
        
        try
        {
            $this->db = new PDO('mysql:host='.$host.'; dbname='.$base.'', $user, $pass);
            $this->db->exec("SET NAMES UTF8");
        }
        catch (PDOException $e) 
        {
            die ('База данных временно недоступна '.$e);       
        }
        
    }       
    public function __get($value)
    {
        if ($value=='db')
            return $this->db;
        return NULL;
    }
}
?>


Файл Test_Template
Код

<?
Class test_Template extends test
{
 public function index()
 {  
  $result = '
      <div class="main">
    <div class="content front">
     <h3>Авторизация</h3>
         <form method="post" id="auths">
          <input type="text" name="login" id="login_auth" placeholder="логин"/>
          <input type="password" name="password" id="pass_auth" placeholder="Пароль"/><br/>
          <input type="submit" name="button" id="auth" value="Авторизоваться" /><br/>
          <a href="#" class="recovery">Забыли пароль?</a></br>
          <hr/><span class="or"> Или </span><hr/>
          <a href="#" class="Regestration" id="flip">Зарегистрируйтесь</a>
         </form>
    </div>
    <div class="content back">
    </div>
    </div>';
    return $this->show($result, "Main");
 }
 
 ?>


Файл test
Код

<?
class test extends Core
{
   public function testFunc()
   {
      $result = $this->sqlQuery("Select test from table where id = ':param1'", $this->user_id());
      return $result['test'];
   }
}
?>


Файл index
Код

include_once ('config.php');
include_once ('BaseModule.php');
include_once ('Core_Template.php');
include_once ('Core.php');
include_once ('test_Template.php');

$test = new test_Template;
echo $test->index();


В результате получаю ошибку 

Цитата

Fatal error: Call to a member function prepare() on a non-object in X:\home\site\www\Core.php on line 129


Код

var_dump($db);


Возвещает Null

Если произвести вызов так

Файл index
Код

include_once ('config.php');
include_once ('BaseModule.php');
include_once ('Core_Template.php');
include_once ('Core.php');
include_once ('test_Template.php');

$test = new Core_Template;
echo $test->show('test', 'Test');


То не какой ошибки нет 
Код

var_dump($db);


Выдает 

Цитата

object(PDO)#1 (0) { }



PM MAIL   Вверх
MrDmitry
Дата 2.2.2017, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



в общем на###кодил и вроде заработало

Код

<?
include_once ('config.php');
include_once ('BaseModule.php');
include_once ('Core_Template.php');
include_once ('Core.php');
include_once ('test_Template.php'); 
 
try
{
    $db = new PDO('mysql:host='.$host.'; dbname='.$base.'', $user, $pass);
    $db->exec("SET NAMES UTF8");
}
catch (PDOException $e) 
{
    die ('База данных временно недоступна '.$e);       
}
 
$core = new test_Template;
 
echo $core->index();

Код


<?php
abstract class BaseModule   
{
    private $db;
    
    static public function getDB()
    {
        global $db;
        return $db;
    }
}
?>


Код

//Подключаемся и пользуеся базой данных
    public function sqlQuery($text, $param1 = "", $param2 = "", $param3 = "", $param4 = "", $param5 = "")
    {
       $sql = BaseModule::getDB()->prepare($text);
       for ($i = 1; $i <= 4; $i++) 
       {
          if($i == 1 &&  $param1 != "")
          {
              $sql->bindParam(':param1', $param1, PDO::PARAM_STR);
          }
          if($i == 2 &&  $param2 != "")
          {
              $sql->bindParam(':param2', $param2, PDO::PARAM_STR);
          }
          if($i == 3 &&  $param3 != "")
          {
              $sql->bindParam(':param3', $param3, PDO::PARAM_STR);
          }if($i == 4 &&  $param4 != "")
          {
              $sql->bindParam(':param4', $param4, PDO::PARAM_STR);
          }
          if($i == 4 &&  $param4 != "")
          {
              $sql->bindParam(':param4', $param4, PDO::PARAM_STR);
          }
       }
       $sql->execute();
       
       return $sql->fetch();
    }


Если у кого то есть более лучше варианты я весь во внимании ))


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1403 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.