parser

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

 

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

Ни то, ни другое

Dep 16.05.2004 07:28

То, что вы хотите, нужно выводить не после формы, а вместо оной.

Во-первых, форма может быть длинной и такой хитрый ответ просто не будет виден юзеру, особенно при 800x600 (ибо ПОСЛЕ формы он выводится, юзер же ни в жисть не догадается, что после сабмита появится какой-то ответ после формы - воистину неожиданно сие).
Во-вторых, после сабмита формы не происходит перезагрузка страницы (это фича такая), засим данные остаются старые.

Выход:

в начале делаем Unique ID, открываем hashfile:
$uid[^math:uid64[]]
$tmp[^hashfile::open[postok.dat]]
после записи в БД, добываем last_insert_id, сохраняем ассоциацию UniqueID -> last_insert_id
$tmp.$uid[$.value[$last_insert_id] $.expires(1)]
передаем Unique ID через куку или урл:
$cookie:post_ok[$uid]
$response:refresh[0]
    или
$response:location[http://mysite/post.html?post_ok=$uid]
А в начале, перед выводом формы проверяем: есть ли кука или параметр (ежели есть - кладем в $post_ok), берем из хешфайла id в базе:
$id[$tmp.$post_ok]
^if(^id.int(0)){
    тут мы знаем, что юзер уже запостил данные, достаем их по $id
    <p>Данные, которые отправили...</p>
}{
    нет id - юзер еще ничего не отправлял, выводим ему форму
}
Вот как-то так. Идея, надеюсь ясна.
Хешфайл, в принципе, заменяется чем угодно, table.save или SQL опять же - главное сохранить UID -> database_id, а потом передать UID через куку или параметр урл.

Post scriptum:
Сравните на досуге:
это
<td><input value="$news.author" SIZE=8 name="author"></td>
<td><TEXTAREA name=ptxt rows=10 cols=30>$news.ptxt</TEXTAREA></td>
с этим
<td><input type="text" name="author" value="$news.author" size="8" /></td>
<td><textarea name="ptxt" rows="10" cols="30">$news.ptxt</textarea></td>
сделайте, пожалуйста, выводы в пользу well-formed HTML.
И будет вам (и юзерам вашим) счастье.