parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Миша, я постарался максимально прокомментировать код

organic 09.09.2003 15:35

Миша, поверьте, я ни в коем случае не хочу отнимать Ваше время
тем более на такие мелочи

постарался максимально прокомментировать класс
если Вам и после этого покажется что я не последовательно излагаю свои мысли,
мне придется признать себя клиническим случаем









/xlinks/auto.p
@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>&nbsp^;</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[]
В конечном, итоге код вообще перестал работать...
Т.е. логика простая:
проверяем есть ли уже такая запись в таблице
- нет - добавляем новую
- да - сообщаем
Где нарушение?

Спасибо.