Шаблоны, опять!!!
Есть пять файлов:
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 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");
?>
<?
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];
}
}
?>
<?
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>
<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>
<table>
<tr>
<td>Login</td>
<td>Password</td>
<td>Code</td>
</tr>
<tr>
<td>{login}</td>
<td>{pass}</td>
<td>{code}</td>
</tr>
</table>
Так вот, не хочет все это работать. Да и мне кажется, что я тут намудрил по самые не балуйся....Может кто-нибудь подсказать, как проще сделать этот шаблон и как вообще делать с шаблоном какие-нибудь нормальные монипуляции??? Полный СОС!!!