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

Ваш аккаунт

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

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

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

Шаблоны, опять!!!

382
10 февраля 2004 года
dodger
164 / / 07.02.2003
Опять в голове кавардак. Сколько всего про эти шаблоны начитался, а ничего поянть не могу. Ниже приведу исходные тексты, а сейчас опишу суть.
Есть пять файлов:
form.htm - форма
form.php - скрипт-обработчик шаблона
reg.htm - то, что выводится после обработки формы
row.addresses - файл, включенный в reg.htm
form.class - сщбственно шаблон

Суть простая, заполняем форму, жмем submit, данные записываются в базу mysql, потом оттуда забираются и выводятся в формате reg.htm. Вот коды:
Код:
from.htm:
<form action="form.php" method="post">
<input type="hidden" name="seenform" value="y">
<table border="0">
<tr>
    <td class="tdleft">* Gender:</td>
    <td class="tdleft"><input type="radio" name="gender" value="male">Male<input type="radio" name="gender" value="female">Female</td>
</tr>
<tr>
    <td class="tdleft">* First Name:</td>
    <td><input type="text" name="f_name" class="txb"></td>
</tr>
<tr>
    <td class="tdleft">* Last Name:</td>
    <td><input type="text" name="l_name" class="txb"></td>
</tr>
<tr>
    <td class="tdleft">* Password:</td>
    <td><input type="password" name="pass" class="txb"></td>
</tr>
<tr>
    <td class="tdleft">* Confirm:</td>
    <td><input type="password" name="pass_confirm" class="txb"></td>
</tr>
<tr>
<td><input type="submit" name="Submit" class="txb"></td>
<td><input type="reset" name="Reset" class="txb"></td>
</tr>
</table>
</form>

Код:
form.php:
<?
include("form.class");

$form = new form;
$form->register_file("form","reg.htm");
$form->register_variables("form","login,pass,code");
$from->sql("form","row.addresses");
$form->file_parser("form");
$form->print_file("form");
?>

Код:
form.class:
<?
class form {

VAR $files = array();
VAR $variables = array();
VAR $opening_escape = '{';
VAR $closing_escape = '}';
VAR $host = "localhost";
VAR $user="dodger";
VAR $pswd="hardcore";
VAR $db="globosex_db";

function sql($file_id,$variable_name){
mysql_connect($this->host,$this->user,$this->pswd) or die("Couldn't connect to sever!");
mysql_select_db($this->db) or die("Couldn't select db!");

srand((double) microtime()*1000000);
$uniq_id=uniqid(rand());
$query="INSERT INTO users(login,pass,code) VALUES(\"$mail\",\"$pass\",\"$uniq_id\")";
$result=mysql_query($query);

$lastinsertid=mysql_insert_id();
$query="SELECT FROM users WHERE idUser=\"$lastinsertid\"";
$result=mysql_query($query);
$fh=fopen("$variable_name","r");
$file_contents=fread($fh,filesize("row.addresses"));
while($row=mysql_fetch_array($result)){
$new_row=$file_contents;
$new_row=str_replace($this->opening_escape."login".$this->closing_escape.$row["login"],$new_row);
$new_row=str_replace($this->opening_escape."pass".$this->closing_escape.$row["pass"],$new_row);
$new_row=str_replace($this->opening_escape."code".$this->closing_escape.$row["code"],$new_row);
$complete_table.=$new_row;
}
$sql_array_key=$variable_name;
$this->sql[$sql_array_key]=$complete_table;
$this->variables[$file_id][]=$variable_name;
fclose($fh);
}
// Функция: register_file()
// Назначение: сохранение в массиве содержимого файла,
// определяемого идентификатором $file_id

function register_file($file_id, $file_name) {

    // Открыть $file_name для чтения или завершить программу
    // с выдачей сообщения об ошибке.
    $fh = fopen($file_name, "r") or die("Couldn't open $file_name!");

    // Прочитать все содержимое файла $file_name в переменную.
    $file_contents = fread($fh, filesize($file_name));

    // Присвоить содержимое элементу массива
    // с ключом $file_id.
    $this->files[$file_id] = $file_contents;

    // Работа с файлом завершена, закрыть его.
    fclose($fh);
}

// Функция: register_variables()
// Назначение: сохранение переменных, переданных
// в параметре $variable_name, в массиве с ключом $file_id.

function register_variables($file_id, $variable_name) {

    // Попытаться создать массив,
    // содержащий переданные имена переменных
    $input_variables = explode(",", $variable_name);

    // Перебрать имена переменных
    while (list(,$value) = each($input_variables)) :

        // Присвоить значение очередному элементу массива $this->variables
        $this->variables[$file_id][] = $value;     

    endwhile;          

}

// Функция: file_parser()
// Назначение: замена всех зарегистрированных переменных
// в    файле с идентификатором $file_id

function file_parser($file_id) {

    // Сколько переменных зарегистрировано для данного файла?
    $varcount = count($this->variables[$file_id]);

    // Сколько файлов зарегистрировано?
    $keys = array_keys($this->files);

    // Если файл $file_id существует в массиве $this->files
    // и с ним связаны зарегистрированные переменные
    if ( (in_array($file_id, $keys)) && ($varcount > 0) ) :

        // Сбросить $x
        $x = 0;

        // Пока остаются переменные для обработки...
        while ($x < sizeof($this->variables[$file_id])) :

            // Получить имя очередной переменной
            $string = $this->variables[$file_id][$x];
           
            // Получить значение переменной. Обратите внимание:
            // для получения значения используется конструкция $$.
            // Полученное значение подставляется в файл вместо
            // указанного имени переменной.
            GLOBAL $$string;

            // Построить точный текст замены вместе с ограничителями
            $needle = $this->opening_escape.$string.$this->closing_escape;

            // Выполнить замену.
            $this->files[$file_id] = str_replace(
                                        $needle,
                                        $$string,
                                        $this->files[$file_id]);
            // Увеличить $x
            $x++;
        endwhile;
    endif;
}

// Функция: print_file()
// Назначение: вывод содержимого файла,
// определяемого параметром $file_Id

function print_file($file_id) {
    // Вывести содержимое файла с идентификатором $file_id
    print $this->files[$file_id];
}

}
?>

 
Код:
reg.htm:
<html>
<head>
    <title>Untitled</title>
</head>

<body>
{row.addresses}
</body>
</html>

Код:
row.addresses:
<table>
<tr>
    <td>Login</td>
    <td>Password</td>
    <td>Code</td>
</tr>
<tr>
    <td>{login}</td>
    <td>{pass}</td>
    <td>{code}</td>
</tr>
</table>

Так вот, не хочет все это работать. Да и мне кажется, что я тут намудрил по самые не балуйся....Может кто-нибудь подсказать, как проще сделать этот шаблон и как вообще делать с шаблоном какие-нибудь нормальные монипуляции??? Полный СОС!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог