Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена сторок php кодом.
 
 автор: off   (28.08.2005 в 11:53)   письмо автору
 
 

Такая вот проблемка:
Есть файл 1.tpl:

<html>
<head>
<title>{Заголовок}</title>
</head>
<body>
{БЛОК 1}<br>
{БЛОК 2}<br>
{БЛОК 33}<br>
{БЛОК 1}
</body>
</html>



Есть 3 таблицы : news,articles и pages (пусть в каждой будет по 1 записи).

News (n_id, n_name,n_announce)
Articles (a_id, a_name, a_announce)
Pages (p_id, title)

Допустим пользователь выбрал, что

{БЛОК 1} - news
{БЛОК 2} - articles
{БЛОК 33} - articles

Тогда скрипт index.php открывает этот самый 1.tpl....
И дальше нужно, чтобы скрипт {ЗАГОЛОВОК} заменил на


<?
$sql 
"SELECT FROM pages WHERE p_id=1";
$res = @mysql_query($sql);
$row $mysql_fetch_array ($res);
echo 
$row['title'];
?>


Блок-1 заменил на

<?
$sql 
"SELECT FROM news WHERE n_id=1";
$res = @mysql_query($sql);
$row $mysql_fetch_array ($res);
echo 
$row['n_name'];
echo
"<br>";
echo 
$row['n_announce'];
?>


Блок 2,33 - заменил на


<?
$sql 
"SELECT FROM articles WHERE a_id=1";
$res = @mysql_query($sql);
$row $mysql_fetch_array ($res);
echo 
$row['a_name'];
echo 
"<br>";
echo 
$row['a_announce'];
?>


И все это дело отобразил на экране, только уже вместо {Заголовок}, {БЛОК-1,2,33....} отобразил данные из sql запросов.

Как это сделать? Помогите плиз!

   
 
 автор: cheops   (28.08.2005 в 11:58)   письмо автору
 
   для: off   (28.08.2005 в 11:53)
 

А скрипт index.php открывает файл как при помощи файловых функций? Т.е. читает содержимое файла или при помощи include?

   
 
 автор: off   (28.08.2005 в 12:00)   письмо автору
 
   для: cheops   (28.08.2005 в 11:58)
 

Оперативно работаете :) (спасибо за это!) Можно и через инклуд. Я вобще-то думал попробовать с fopen()

   
 
 автор: cheops   (28.08.2005 в 12:10)   письмо автору
 
   для: off   (28.08.2005 в 12:00)
 

Если через fopen(), то следует извлечь содержимое файла 1.tpl
<?php
  $fd 
fopen("1.tpl""r");
  
$content fread($fd,filesize("1.tpl"));
  
fclose($fd);
?>

А затем заменить содержимое файла $content при помощи строковых функций
<?
  $content 
str_replace('{Заголовок}',$title,$content);
  
$content str_replace('{БЛОК 1}',$n_announce,$content);
  
$content str_replace('{БЛОК 2}',$a_announce,$content);
  
$content str_replace('{БЛОК 33}',$a_announce,$content);
?>

После чего вывести исправленное содержимое в окно браузера
<?php
  
echo $content;
?>

   
 
 автор: off   (28.08.2005 в 12:14)   письмо автору
 
   для: cheops   (28.08.2005 в 12:10)
 

Спасибо! Будем пробовать...

   
 
 автор: off   (13.09.2005 в 23:36)   письмо автору
 
   для: off   (28.08.2005 в 12:14)
 

Еще возникла одна проблемка.

Есть файл index.html


<html> 
<head> 
<title>Заголовок</title> 
</head> 
<body> 
допустим <?$action=2?>
{БЛОК-1}<br> 

</body> 
</html> 



есть файл 2.inc


<?
$sql 
"SELECT * FROM c_news";
$res mysql_query($sql);

switch (
$action) {
    case 
"1":
    while (
$row_news mysql_fetch_array($res)){
    echo 
"<b>".$row_news['news_name']."</b><br>";
    echo
"<br>";
    echo 
$row_news['news_announce'];
    echo
"<br>";
    }
    break;
                     
case 
"2":
    while (
$row_news mysql_fetch_array($res)){
    echo 
"<b>".$row_news['news_name']."</b><br>";
    echo
"<br>";
    echo 
$row_news['news_announce'];
    echo
"<br>";
    }
    break;
}
?>


и есть файл index.php

<?
$file 
fopen("index.html","r");
$index fread($file,filesize("index.html"));
fclose($file);
echo 
$index;
?>


При выполнении кода index.php выводиться только содержимое файла Index.html.
Как сделать, чтобы при выводе содержимого файла index.html в том месте где написано {Блок-1} программа бы заменяла эту надпись {Блок-1} на результат выполнения кода из фала 2.inc ?

   
 
 автор: cheops   (14.09.2005 в 01:59)   письмо автору
 
   для: off   (13.09.2005 в 23:36)
 

Для этого необходимо помещать содержимое страниц в буффер и замещать шаблон в содержимом буфере в конце страницы. Подробности в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования