Форма не постится

Zigs

Guest
Форма не постится

Не пойму, что происходит. Нуж занести в БД текст с кавычками, тегами. Есть форма. Скрипт примерно такого содержания:

PHP:
if (isset($do) ):
  // insert или update
  echo "изменения сохранены";
  exit;
endif;
<form>
.....
<textarea name="content"><?echo $content?></textarea>
<input type="hidden" name="do" value="1">
<input type="submit">
</form>

Форма сабмитится сама на себя, но при наличии текста в textarea, input do игнорируется. Почему так происходит? Кто-нить сталкивался с подобной проблемой? Надеюсь я ее доступно описал.
 

Zigs

Guest
В догонку...

А после сабмита вываливается форма, где текст в $content неожиданно обрывается знаком %
 

RomikChef

Guest
<textarea name="content"><?echo htmlspecialchars($content?)></textarea>
а по поводу do - открой фак.
 

Zigs

Guest
Если вы имеете ввиду вопрос в факе о том почему не передаются переменные, то это не подходит, потому что у меня пхп 4.0.
Кроме do после textarea есть еще несколько скрытых параметров, которые тоже обрубаются.

Если вести простой текст, то все нормально передается.
 

Zigs

Guest
Да обычных хтмл, там тегов только strong, br, ul и все.
да сам передаваемый текст обрезается почему то на полуслове знаком %
 

Zigs

Guest
передается постом. Да и текст не такой большой.
 

RomikChef

Guest
В начале скрипта напиши вот это
echo "<pre>";
while (list ($key, $val) = each ($HTTP_POST_VARS)) {
echo "$key => htmlspecialchars($val)<br />\n";
}
echo "</pre>";
отправь себе форму и посмотри, что выводит.
 

Zigs

Guest
я смотрю эту информацию через phpinfo

php версии 4.0.6
апач - 1.3.9

Вот настоящий код

PHP:
if (intval($do) == 1) {
		// add/edit article
		$visible = $visible == '+' ? '+' : '-';
		$sql = $id > 0 ? "update artic set name='".addslashes ($name)."', header='".addslashes ($header)."', content='". addslashes ($content)."', brief='".addslashes ($brief)."', num=".intval ($num).", visible='$visible' where id=$id" : "insert into artic (sec_id, name, header, content, brief, num, visible) values ($sec_id, '".addslashes($name)."', '".addslashes($header)."', '".addslashes($content)."', '".addslashes($brief)."', ".intval ($num).", '$visible')";
		//echo $sql."<br>";
		mysql_query ($sql) or die($sql);
<h3>параметры статьи сохранены</h3><br>
<br>
<a href="bo/artic.phtml?id=<? echo $sec_id ?>">список статей</a>
PHP:
		exit;
	}
	
	if ($id > 0) {
		$r = mysql_fetch_array (mysql_query ("select * from artic where id = $id"));
		$name    = quotReplace	(	stripslashes 	(	$r["name"]	)	);
		$header  = stripslashes ($r["header"]);
		$brief   = stripslashes ($r["brief"]);
		$content = stripslashes ($r["content"]);
		//$url     = deslash ($r["url"]);
		$num     = $r["num"];
		$visible = $r["visible"];
	} else {
		$num = "10";
	}
<h3>параметры статьи</h3>


<form action=bo/artic_edit.phtml method=post onsubmit="return (confirm ('сохранить изменения?'));">
<input type=hidden name=id value=<? echo $id ?>>
<input type=hidden name=sec_id value=<? echo $sec_id ?>>
<input type=hidden name=do value=1>
<table cellspacing=0 cellpadding=2 border=0>
<tr><td align=right>название:&nbsp;</td><td><input name=name size=77 maxlength=128 value='<? echo $name ?>'></td></tr>
<tr><td align=right valign=top>заголовок:&nbsp;</td><td><textarea name=header rows=3 cols=60><? echo $header ?></textarea></td></tr>
<tr><td align=right valign=top>аннотация (в html):&nbsp;</td><td><textarea name=brief rows=5 cols=60><? echo $brief ?></textarea></td></tr>
<tr><td align=right valign=top>контент (в html):&nbsp;</td><td>
<textarea name=content rows=20 cols=120><? echo $content ?></textarea></td></tr>
<!-- tr><td align=right>url ссылки:&nbsp;</td><td><input name=url size=77 maxlength=256 value='<? echo $url ?>'></td></tr -->
<tr><td align=right>приоритет (*):&nbsp;</td><td><input name=num size=3 maxlength=5 value='<? echo $num ?>'></td></tr>
<tr><td align=right>показывать на сайте:&nbsp;</td><td><input type=checkbox name=visible value='+'<? echo $visible == '-' ? '' : " checked" ?>></td></tr>
<tr><td>&nbsp;</td><td>
<br><input type=submit value="сохранить">
<input type=button value="отменить" onclick="document.location='cat.phtml'">
</td></tr></table>
</form>
 

Demiurg

Guest
>action=bo/artic_edit.phtml
это называется форма сабмититься сама на себя ?
 

Crazy

Developer
В HTML-коде страницы фрагмент '<input type=hidden name=sec_id value=> ' не встречается?
 

RomikChef

Guest
stripslashes при получении данных из базы делать не надо

Вместо всей ботвы visible = $r["visible"];
можно написать extract($r) с тем же самым эффектом.

Это не относится к вопросу, это просто замечания по ходу
 

RomikChef

Guest
это не ее имя, а имя формы, лежащей в каталоге bo, находящемся в текущем каталоге
 

Demiurg

Guest
>это и есть ее имя
не понял...
если форма в файле http://site/path/artic_edit.phtml
то при submit она пойдет на http://site/path/bo/artic_edit.phtml
 

Zigs

Guest
2RomikChef это понятно. Изначально не я писал этот скрипт. Возможно это связано с тем, что он работает в фрейме или дело в каких то настройках. но во всех скриптах кот. работают в этом фрейме используется имя формы вместе с директорией.

2Demiurg форма лежит в http://site/path/bo/artic_edit.phtml

Это, кстати, еще одна загадка :)
 
Сверху