parser

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

 

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

И еще

max_rip 13.09.2013 21:41

По поводу ошибки вам уже ответит Михаил. Но Я еще дополню, про нелогичность кода.
Во первых я бы разделил отображение формы и операции с данными.
Например
@auto[]
$hParam[$form:fields]
^switch[$form:action]{
		^case[update;insert]{
			^oSql.void{
				^if(def $hParam.id){UPDATE}{INSERT}
					arenda
				SET
					^forms:sqlString[$fields;$hParam;;1]
				^if(def $hParam.id){WHERE id = $hParam.id LIMIT 1}
			}
			^if(!def $hParam.id){$hParam.id[^oSql.last_insert_id[]]}
			$response:location[./arenda-edit.html?id=$hParam.id]
		}
		^case[edit;DEFAULT]{
			^if(def $hParam.id){
				$_hash[
					^oSql.hash{
					SELECT * FROM arenda WHERE id = $hParam.id
					}
				]
				$id[$hParam.id]
				$hParam[$_hash.[$hParam.id]]
				$hParam.id[$id]
			}
			^form[]
		}
	}

@form[]
	<form method="post" enctype="multipart/form-data" action="./arenda-edit.html" >
# Ваши инпуты, у меня небольшой класс который мне в этом помогает
		^forms:htmlOption[$fields;$hParam]
		^if(def $hParam.id){
			<button class="g-button" name="action" value="update">Обновить</button>
		}{
			<button class="g-button" name="action" value="insert">Добавить</button>
		}
	</form>
В итоге имеем разделение, после поста формы делается апдейт или инсерт и редирект на форму редактирования.
Почему так сделано, потому что есть один минус в $form это совмещение POST и GET, приходится каждый раз чистить GET перед постом, чтобы не было неразберихи.
^forms:sqlString просто делает строку вида fieldName='fieldValue'
^forms:htmlOption шаблонизирует элементы формы ;)