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 :: Схема CMS и реализация [2]

 PHP.SU

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


 Страниц (4): « 1 [2] 3 4 »   

> Без описания
annihilus
Отправлено: 30 Января, 2011 - 14:59:25
Post Id



Гость


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


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




span4ez пишет:
Не как не разберусь чтобы результат именно всего кода php который в файле показывался в файле TPL

А я никак не разберусь о чем вы)
 
 Top
span4ez
Отправлено: 30 Января, 2011 - 15:30:05
Post Id



Гость


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


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




annihilus пишет:
А я никак не разберусь о чем вы)

Улыбка Я пишу свой собственный шаблонизатор Улыбка

Структура папко след.

/engine
.../blocks
....../block.block.php

.../classes
....../funct.class.php
....../template.class.php

/templates
.../default
....../index.tpl

/index.php

Вот такая у меня структура. Я хочу чтобы из файл block.block.php, весь написанный там код появился в index.tpl. А не выводился как <?php echo "ENG"; ?>. Реализация происходит через template.class.php там метод tpl_blok который отвечает за это:
PHP:
скопировать код в буфер обмена
  1. function tpl_block($nameblock){
  2.                 $str = "{".$nameblock."}";
  3.                 $path = "{$_SERVER['DOCUMENT_ROOT']}/engine/blocks/{$nameblock}.block.php";
  4.                 $fd = fopen($path,"r");
  5.                 $content = fread($fd,filesize($path));
  6.                 fclose($fd);
  7.                 $this->tpl = str_replace($str,$content,$this->tpl);
  8.         }


Объясните мне концепцию этой структуры Недовольство, огорчение
 
 Top
annihilus
Отправлено: 30 Января, 2011 - 15:36:07
Post Id



Гость


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


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




span4ez пишет:
Я хочу чтобы из файл block.block.php, весь написанный там код появился в index.tpl.

Появляются только дети на свет , причем внезапно, так что вы хотите?)
 
 Top
span4ez
Отправлено: 30 Января, 2011 - 15:44:27
Post Id



Гость


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


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




annihilus пишет:
Появляются только дети на свет , причем внезапно, так что вы хотите?)


Чтобы выводило просто ENG а не <?php echo "ENG"; ?> Недовольство, огорчение
 
 Top
annihilus
Отправлено: 30 Января, 2011 - 16:16:21
Post Id



Гость


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


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




span4ez пишет:
Чтобы выводило просто ENG а не <?php echo "ENG"; ?>

Ну так замените <?php echo "ENG"; ?> на ENG Улыбка

Я досих пор не могу поняться что вам надо сделать. Из предоставленой вами функции я могу опеределить только то, что вы заменяете мелку {.....} в переменной $this->tpl на содержмиое файла block.block.php.

--Что у вас в $this->tpl?
--Что написано в block.block.php?
--Каким образом и что(содержимое файла block.block.php либо его результат) должно "появиться" в index.tpl? вам надо записать это в определенное место в этом файле? или что то другое?
--Что и как должно выводить ENG а не <?php echo "ENG"; ?> ?
 
 Top
span4ez
Отправлено: 30 Января, 2011 - 16:33:38
Post Id



Гость


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


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




annihilus пишет:
--Что у вас в $this->tpl?
--Что написано в block.block.php?
--Каким образом и что(содержимое файла block.block.php либо его результат) должно "появиться" в index.tpl? вам надо записать это в определенное место в этом файле? или что то другое?
--Что и как должно выводить ENG а не <?php echo "ENG"; ?> ?


-- this->tpl этот объект выводит на экран
-- block.block.php написано <?php echo "ENG"; ?>
-- Должен вывести результат а именно ENG
-- при замене {...} надо вывести ENG из PHP файла в котором написано <?php echo "ENG"; ?>. А у меня выводит
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3.  
  4. <head>
  5.  
  6. <title>Проба</title>
  7.  
  8. </head>
  9.  
  10. <body>
  11.  
  12. RUS<?php
  13.  
  14. echo "ENG";
  15.  
  16. ?>
  17.  
  18. </body>
  19.  
  20. </html>
  21.  


Вот что я хочу.

(Отредактировано автором: 30 Января, 2011 - 16:39:54)

 
 Top
annihilus
Отправлено: 30 Января, 2011 - 17:20:20
Post Id



Гость


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


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




span4ez пишет:
А у меня выводит

Самый простой способ в вашем случае , написать в block.block.php просто ENG;

Если приведенный вами выше код находится в переменной , то можно воспользоваться функцией eval(): eval(" ?>".$code."<?php ");

Если находиться в файле , то просто подключите его с помощью include();

Еще можно написать в block.block.php: <?php $value="ENG" ?>
И переписать вашу функцию так:

PHP:
скопировать код в буфер обмена
  1. function tpl_block($nameblock){
  2.                 $str = "{".$nameblock."}";
  3.                 $path = "{$_SERVER['DOCUMENT_ROOT']}/engine/blocks/{$nameblock}.block.php";
  4.                 include($path);
  5.                 $this->tpl = str_replace($str,$value,$this->tpl);
  6.         }


Если все хотите оставить как есть , то подключайте ваш файл block.block.php с помощью include() и перехватывайте значение используя буферизацию.

Ну или что нибудь еще....
 
 Top
span4ez
Отправлено: 30 Января, 2011 - 17:45:03
Post Id



Гость


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


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




Это все хорошо но представить если за место echo "ENG"; будет написан например возьмем календарь он тоже нафиг пошлет Недовольство, огорчение
(Добавление)
изменил код
PHP:
скопировать код в буфер обмена
  1.  
  2. function tpl_block($nameblock){
  3.                 $str = "{".$nameblock."}";
  4.                 ob_start();
  5.                 include "blocks/".$nameblock.".block.php";
  6.                 $content = ob_clean();
  7.                 $this->tpl = str_replace($str,$content,$this->tpl);
  8.         }
  9.  


Все хорошо выводит но выводит не лучший результат а цифру 1 Радость

Что опять не то я сделал Улыбка
(Добавление)
Все исправлено код просто надо делать нормально Улыбка

это

надо заменит на это

и будет всем счастье Улыбка
 
 Top
annihilus
Отправлено: 30 Января, 2011 - 17:58:39
Post Id



Гость


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


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




ob_get_contents вместо ob_clean
 
 Top
span4ez
Отправлено: 30 Января, 2011 - 18:01:32
Post Id



Гость


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


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




annihilus пишет:
ob_get_contents вместо ob_clean

Уже написал исправление Улыбка
(Добавление)
Так приступил к реализации соединение с БД Улыбка

Возник один вопрос.

PHP:
скопировать код в буфер обмена
  1. functio sql_array($table){
  2.                 $data_array = mysql_query("SELECT * FROM ".$table."", $this->bd_connect);
  3.                 $data_array_row = mysql_fetch_array($data_array);
  4.         }


Метод разбивает вызванную таблицу в массив а как работать с ней после
PHP:
скопировать код в буфер обмена
  1. $obj = new connect();
  2. $obj->sql_array("table")


В вызванном файле.

Вот работа с ним без методов
PHP:
скопировать код в буфер обмена
  1.  $result = mysql_query("SELECT id, name FROM mytable");
  2. $row = mysql_fetch_array($result);
  3. $row[1];


Как так же работать с ней при вызове методом?

Если что не понятно пишите объяснить попробую конкретно

(Отредактировано автором: 30 Января, 2011 - 19:16:18)

 
 Top
annihilus
Отправлено: 30 Января, 2011 - 19:23:52
Post Id



Гость


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


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




span4ez пишет:
Как так же работать с ней при вызове методом?

Возвращать результат с помощью return например...
span4ez пишет:
Если что не понятно пишите объяснить попробую конкретно

Вы лучше сразу обьясняйте конкретно...

(Отредактировано автором: 30 Января, 2011 - 19:26:01)

 
 Top
span4ez
Отправлено: 30 Января, 2011 - 19:33:50
Post Id



Гость


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


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




PHP:
скопировать код в буфер обмена
  1. function sql_array($table){
  2.                 $data_array = mysql_query("SELECT * FROM ".$table."", $this->bd_connect);
  3.                 $data_array_row = mysql_fetch_array($data_array, MYSQL_ASSOC);
  4.                 return $data_array_row;
  5.         }


Вот так вывод происходит?
(Добавление)
Warning: mysql_query() expects parameter 2 to be resource, null given in Z:\home\CMS\www\engine\classes\mysql.class.php on line 37

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in Z:\home\CMS\www\engine\classes\mysql.class.php on line 38

Что ему не нравиться

Весь код mysql.class.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class connect{
  4.         var $host;
  5.         var $login;
  6.         var $pass;
  7.         var $bd;
  8.         var $bd_connect;
  9.         var $bd_select;
  10.        
  11.         //Данные БД
  12.         function __construct(){
  13.                 $this->host = "localhost";
  14.                 $this->login = "root";
  15.                 $this->pass = "";
  16.                 $this->bd = "CMS";
  17.         }
  18.        
  19.         //Соединение с БД
  20.         function sql_connect(){
  21.                 $this->bd_connect = mysql_connect($this->host,$this->login,$this->pass);
  22.                 if (!$this->bd_connect)
  23.                 {
  24.                         echo "Соединение не удачное проверте настройки.";
  25.                 }
  26.         }
  27.        
  28.         //Соединение с базой
  29.         function sql_select(){
  30.                 $this->bd_select = mysql_select_db($this->bd, $this->bd_connect);
  31.                 if (!$this->bd_select)
  32.                 {
  33.                         echo "Такой БД не существует";
  34.                 }
  35.         }
  36.         //Вывод значение из БД
  37.         function sql_array($table, $pole){
  38.                 $data_array = mysql_query("SELECT * FROM ".$table."", $this->bd_connect);
  39.                 $data_array_row = mysql_fetch_array($data_array, MYSQL_ASSOC);
  40.                 return $data_array_row[$pole];
  41.         }
  42. }
  43. ?>
  44.  


Подскажите пожалуйста все перевернул не чего не помогло...
 
 Top
Мелкий Супермодератор
Отправлено: 30 Января, 2011 - 21:21:21
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Не поверите! Что написано - то и не нравится.

Вторая ошибка - прямое следствие первой. А почему к mysql_query попал вторым параметром null - разбирайтесь. Прочтение phpfaq.ru/debug подскажет, как разбираться.


-----
PostgreSQL DBA
 
 Top
annihilus
Отправлено: 30 Января, 2011 - 21:26:06
Post Id



Гость


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


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




А как методы вызаваете?
нужно в таком порядке:
PHP:
скопировать код в буфер обмена
  1. $connect=new connect();
  2. $connect->sql_connect();
  3. $connect->sql_select();


а потом все остальное...

(Отредактировано автором: 30 Января, 2011 - 21:27:40)

 
 Top
span4ez
Отправлено: 30 Января, 2011 - 22:31:27
Post Id



Гость


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


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




Спасибо исправил Улыбка все получилось Улыбка
Теперь еще один вопрос:

есть два файла
index.tpl
index2.tpl

Как сделать чтобы index.tpl был основным файлом в шаблоне а index2.tpl подгружался в него например в блок {content} если на него переходя по cсылке http://CMS/index2[dot]tpl
 
 Top
Страниц (4): « 1 [2] 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB