|
|
|
| Добрый день.
Помогите, пожалуйста, разобраться как работает скрипт.
есть сайт, для отображения содержимого есть два файла, index.php и desing.php
к этому сайту надо прикрутить форму отправки комментария.
саму форму я вывел на страницах.
в файле index.php файл отвечающий за форму прописывается так:
<?php
get_location();
//переменная $includ формирующая саму форму
list ($file,$add,$design,$INCLUD,$error404,$turl)=array(
"./data/content/$action.php",
"./data/tpl/add.php",
"./data/tpl/design.php",
"./comments/index.php",// путь к моему файлу с формой
)
// и далее для вывода формы на странице
if(file_exists($includ)) include $includ;
// всё, форма появилась
?>
|
в файле desing.php моя форма подключается так:
<?php
$content=<<<EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
// далее остальной html код
................................................
<div id="content">$content<br>$INCLUD</div> // вывод формы
..................................................
// продолжение html кода
// и завершение файла
</body>
</html>
EOF;
?>
|
для самой формы я создал отдельный файл в отдельной директории
скрипт с формой :
<?php
// обработчик формы
$error = array();
if(isset($_POST['sub'])){
// проверяем корректность заполнения формы
if(empty($_POST['name'])) $error[] = "нет имени";
if(empty($_POST['email'])) $error[] = "нет адреса";
// продолжаем проверять остальные поля
if(empty($error)){
// если массив с ошибками пустой, передаём данные в базу
}
}
// если массив с ошибками не пустой, то надо вывести сообщение пользователю
if(!empty($error)){
foreach($error as $err)
$err
}
// сама форма
$includ=<<<EOF
<form action="index.php" method="post">
Ваше имя :<br>
<input type="text" name="name" size="54"><br>
E-mail :<br>
<input type="text" name="email" size="54"><br>
Текст комментария :<br>
<textarea cols="40" rows="7" name="text"></textarea><br><br>
<input type="submit" name="sub" value="Добавить комментарий">
</form>
EOF;
?>
|
проблема в том, что при некорректном заполнении формы у меня не получается вывести сообщения, вернее, при всех не заполненых полях, выводится только одно сообщение из массива, самый последний элемент, остальные не выводятся.
<?php
if(!empty($error)){
foreach($error as $err)
echo $err
}
?>
|
если выводить сообщение через echo, то они появятся вверху всей станицы, а если попробовать присвоить какой то переменной значение $err или попробовать её саму вывести в файле index.php , то будет выводится только последний элемент массива, но как раз там где надо, над формой.
по идее, вывод сообщений об ошибка должен быть такой же как и самой формы, через какую то переменную
что то типа этого.
<?php
// в файле index.php
if(file_exists($err)) include $err;
// в файле desing.php
<div id="content">$content<br>$ERR<br>$includ</div>
?>
|
а вот как её сформировать не могу понять.
очень надеюсь на помошь форумчан
заранее благодарю
p.s. имена переменных $includ и $err в сообщении специально писал большими буквами, в скриптах они прописаны маленькими. | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.10.2009 в 17:47)
| | Попробуйте так, если я правильно понял, что вы просите
<?php
if(!empty($error)){
foreach($error as $err)
$err_mess[]= $err;
}
?>
|
// в файле desing.php
<div id="content">$content<br>implode("<br>",$err_mess)<br>$includ</div> | |
|
|
|
|
|
|
|
для: zavragnov
(15.10.2009 в 17:52)
| | не помогло.
в файле desing.php используется оператор "<<<" и внутри него код не выполняется, получается, что надо всё присвоить какой то переменной, а уж потом вставлять её в файл desing.php | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.10.2009 в 18:14)
| | Вы сформирвали массив ошибок, теперь его надо собрать воедино, как вариант можно попробовать
$x = ( count(error) ) ? implode("<br>",$error) : '';
$includ=<<<EOF
$x
<form ...
|
| |
|
|
|
|
|
|
|
для: Волки
(15.10.2009 в 18:26)
| | спасибо, Ваша подсказда помогла, теперь всё работает. | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.10.2009 в 17:47)
| | Опять потребовалась помощь форумчан, теперь уже с выводом самих комментариев.
создал отдельный файл для вывода комментарие, но опять же выводится только один.
вот содержание файла:
<?php
require_once("config/connect.php");
$query = "SELECT * FROM `comments` ORDER BY `data`";
$comm = mysql_query($query);
if(!$comm) echo "Ошибка при обращении к таблице комментариев<br><b>".mysql_error()."</b>";
if(mysql_num_rows($comm) > 0){
while($comm_all = mysql_fetch_assoc($comm)){
$text = "<div id='comm'>автор :".$comm_all['author']."<br>добавлено : ".$comm_all['data']." | e-mail : ".$comm_all['email']."<br>".$comm_all['text']."</div>";
$view=<<<EOF
Комментарии
<hr>
$text
EOF;
}
}
?>
|
подключал я его к общей куче как и файл с формой
<?php
// в файле index.php
// переменная $view
list ($file,$add,$design,$VIEW,$includ,$error404,$turl)=array(
............................................................
"./comments/view.php",
...........................................................
);
if(file_exists($view)) include $view;
// в файле desing.php
<div id="content">$content<br>$VIEW<br>$includ</div>
?>
|
но как я ни крутил, выводится только один комментарий.
если обратиться к файлу view.php на прямую, заменив $view= на просто print, то выводятся все комметарии.
пожалуйста, объясните, в чём моя ошибка? | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.10.2009 в 22:23)
| | ну хоть намекните как это сделать | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.10.2009 в 01:36)
| | | |
|
|
|
|
|
|
|
для: Николай2357
(16.10.2009 в 02:27)
| | не view
text | |
|
|
|
|
|
|
|
для: Trianon
(16.10.2009 в 08:29)
| | почему $text? | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.10.2009 в 08:55)
| | приведите реплику 15.10.2009 в 22:23 в порядок.
В теме невозможно отвечать. | |
|
|
|
|
|
|
|
для: Trianon
(16.10.2009 в 10:00)
| | а что в этой реплике не так? | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.10.2009 в 13:08)
| | Слишком длинные строки кода вызывают горизонтальный скроллинг. | |
|
|
|
|
|
|
|
для: Trianon
(16.10.2009 в 13:24)
| | не знаю почему у Вас высывает горизонтальный скролинг, у меня ни чего подобного в браузере не происходит. | |
|
|
|
|
|
|
|
для: Trianon
(16.10.2009 в 08:29)
| | >не view
text
Согласен, её и определить было бы не плохо еще. Но просили только намекнуть. :) | |
|
|
|
|
|
|
|
для: Trianon
(16.10.2009 в 08:29)
| | последовал Вашему совету - всё заработало, спасибо, но вот только не совсем понял почему именно так. если не сложно - объясните. | |
|
|
|
|
|
|
|
для: Николай2357
(16.10.2009 в 02:27)
| | спасибо, почти заработало.
выводит все комментарии, но в самом верху, над комментариями, появляется строка "./comments/view.php". | |
|
|
|