parser

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

 

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

Ну и понятно, что не работает

Никита Козин 12.02.2005 08:07

Парсер - это вам не яваскрипт, это серверный язык, т.е. выполняется на сервере, а не у клиента. Когда вы нажимаете на ссылку - уходит запрос к серверу, тот в свою очередь выполняет какие-то, вами определенные, действия, соответствующие запросу клиента.
^connect[$connect_string]{
	$links[^table::sql{SELECT * FROM links ORDER BY `id`}]

# вместо звездочки - указывайте все нужные поля чтобы
# в будущем код был понятен и вам и может быть еще кому

	^if($links){
	    ^links.menu{
			<a href="$links[^table::sql{DELETE FROM `links` WHERE `id`=124}] "><nobr>Удалить</nobr></a>

# тут все самое интересное и начинается:

# 1. зачем выбирать ВСЕ поля таблицы, если вы их
# не используете?

# 2. table::sql - возвращает таблицу, вам же
# не нужно ничего возвращать, нужно всего лишь
# удалить запись из базы. используйте void:sql

# 3. когда вы пишете явное значение id - удаление
# происходит при загрузке страницы, а не при нажатии
# на ссылку. Если вы посмотрите код откртой странички
# (view source) - то увидите: <a href=" "><nobr>Удалить</nobr></a>

		}[]

# Если вы не используете разделить, то и скобки
# писать не нужно

	}{Удалять нечего}
}&nbsp;</td>
А теперь примерно как должно быть:
...
^if($links){
	<ul>
	^links.menu{
		<li>$links.title (<a href="?do=delete&id=$links.id">удалить</a>)</li>
	}
	</ul>
}
...
^if($def $form:do && $form:do eq 'delete' && ^form:id.int[]){
	^void:sql{DELETE FROM links WHERE id = $form:id}
}