| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
organic 09.09.2003 15:35
Миша, поверьте, я ни в коем случае не хочу отнимать Ваше время@USE
/classes/gbook.p
@main[]
^body[]
@dbconnect[code]
^connect[$SQL.connect-string]{$code}
@body[]
$response:expires[^date::now[]]
<html>
<body>
^body_content[]
</body>
</html>/xlinks/index.html @body_content[] $gb[^gbook::load[]] ^gb.show_messages[]/xlinks/add.html
@body_content[] $gb[^gbook::load[]] ^gb.show_form[] ^gb.test_and_post_message[]/xlinks/delete.html
@body_content[] $gb[^gbook::load[]] ^gb.show_and_delete[]
@CLASS
xlinks
# инициализация
@load[]
^MAIN:dbconnect{
$external_links[^table::sql{
SELECT
id,
url,
title,
comment,
date
FROM
xlinks
ORDER BY
id
ASC
}
]
}
$date[^date::now[]]
# если существует переменная $external_links то отображаем все содержимое базы
# иначе Ссылок нет
# происходит сие в корневом документе:
# /xlinks/
# $xl[^xlinks::load[]]
# ^xl.show_links[]
#
@show_links[]
^if($external_links){
^external_links.menu{
<dl>
<dt>${external_links.id}. <a href="$external_links.url">$external_links.url</a></dt>
<dd>Название: <b>$external_links.title</b></dd>
<dd>Описание: $external_links.comment</dd>
</dl>
}[<hr>]
}{
Ссылок нет!
}
# показываем форму
# сам обрабатывающий скрипт в другом документе action="do.html"
# с целью не передавать повторно скрипту данные при релоаде страницы
# /xlinks/add.html
# $xl[^xlinks::load[]]
# ^xl.show_form[]
#
@show_form[]
$date[^date::now[]]
<table border="0" cellpadding="4" cellspacing="2">
<form method="POST" action="do.html">
<tr>
<td>URL (255 символов):</td> <td><input name="url" value="http://" size="50"></td>
</tr><tr>
<td>Заголовок (255 символов):</td> <td><input name="title" size="50"></td>
</tr><tr>
<td valign="top">Описание:</td> <td><textarea cols="50" name="comment" rows="5"></textarea></td>
</tr><tr>
<td><input type="submit" value="OK" name="post"> <input type="reset" value="Cancel"></td><td> ^;</td>
</tr>
</form>
</table>
# здесь начинаются извороты
#
#
#
#
#
#
@test_and_post_link[]
## Проверяем есть ли такой УРЛ?
# при существовании переменной $external_links нечинаем перебирать столбец из базы
# при совпадении значения из базы и передаваемого из формы
# зажигаем флаг (если правильно использую термин)
# $est[1] - есть запись в базе
# $est[0] - нет записи в базе
^if($external_links){
^external_links.menu{
^if("$external_links.url" eq "$form:url"){
$est[1]
}{
$est[0]
}
}
}
# При существовании передаваемых данных из формы, проверяем (косо и криво) заполнены ли поля
^if(def $form:post){
^if("$form:url" ne "http://" && "$form:title" ne ""){
# если переменная $est == 0 значит записи в базе нет
# соединяемся и вставляем ряд в таблицу
^if($est == 0){
^MAIN:dbconnect{
^void:sql{
INSERT INTO xlinks (
url,
title,
comment,
date
)
VALUES (
'$form:url',
'$form:title',
'$form:comment',
'${date.year}-${date.month}-${date.day}'
)}
}
# После добавления ряда в таблицу возвращаемся в корень
# где отображаются все записи из базы
$response:refresh[
$.value[0]
$.url[/xlinks/]
]
}{
# Если переменная $est не равна 0, предполагаем, что запись уже есть, о чем и сообщаем
Ссылка уже есть!
}
}{
# Если не заполнены поля - напоминаем
Поля <b>url</b> и <b>title</b> обязательны для заполнения!<br>
}
}
#
# Сие происходит в документе на который указывает action формы
# do.html
# $xl[^xlinks::load[]]
# ^xl.test_and_post_link[]В конечном, итоге код вообще перестал работать...