(PERL) Удаление выбранной строки

Anna85
Дата: 25.08.2006 11:01:22
Здравствуйте еще раз, помоги пожалуйста, не работает скрипт.
В таблице состоящей из 21 столбца, в каждой строке есть ссылка редактировать или удалить, по нажатию на нее нчего не происходит и еще htmlка не возвращает значение value="$NUMSS", то есть в само delete она даже не попадает.

foreach $i (1..1)
{
print "<TR>";


foreach $j (1..1)
{


$sth = $dbh->prepare("SELECT * FROM document ORDER BY NUM") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();
while ( $row = $sth->fetchrow_hashref)

{
$NUM = $Query->param( "NUM" );
print <<"EOT";

<td>
<OPTION><A HREF="#" onClick="mainform.target='_self';mainform.direction.value='redakt';mainform.NUM_DOC.value=$NUM;mainform.submit();return false;"><B>Редактировать</B></A></OPTION>


</td>

EOT
print <<"EOT";

<td>
<OPTION><A HREF="#" onClick="mainform.target='_self';mainform.NUM.value='del';mainform.NUM_DOC.value=$NUMSS;mainform.submit();return false;"><B>Удалить</B></A></OPTION>
</td>

EOT



$t = $row->{'NUM'};
print <<"EOT";

<td>
<OPTION>$t</OPTION>
</td>

EOT


Вот сама функция delete


$sth = $dbh->prepare("DELETE * FROM document WHERE NUM='$NUM'") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();


Заранее спасибо!
Аня
Black
Дата: 25.08.2006 11:16:04
это какие-то огрызки кода ... ничего из выше сказанно не понятно ...
где разветвление, когда должна срабатывать функция delete() ?

p.s. рекомендую назвать функцию не delete(), т.к. это зарезервированное слово!
Anna85
Дата: 25.08.2006 11:27:29
Прикрепляю файл по удалению строки, буду благодарна за любые мысли по этому поводу.
Anna85
Дата: 25.08.2006 11:41:36
Функция кстати названа не delete просто я ее так обозвала
Anna85
Дата: 25.08.2006 13:33:47
Рябята помогите пожалуйста, у меня уже хвост горит с этой прогой....
Black
Дата: 25.08.2006 13:48:35
в 500 строках кода, к сожалению, разбираться, у меня времени и желания нет.
while ( $row = $sth->fetchrow_hashref)

{
$NUM = $Query->param( "NUM" );
print <<"EOT";

<td>
<OPTION><A HREF="#" onClick="mainform.target='_self';mainform.direction.value='redakt';mainform.NUM_DOC.value=$NUM;mainform.submit();return false;"><B>Редактировать</B></A></OPTION>
наверно следует заменить $NUM = $Query->param( "NUM" ); на $NUM = $row->{'NUM'}; ?

p.s. почитайте пожалуйста книгу где описывается стиль программирования, читать Ваш код не возможно ...
Anna85
Дата: 25.08.2006 14:36:20
Спасибо большое значение поля value теперь определяется- с этим все замечательно, но удалять строку он не удаляет, он даже не попадаетв то место где описана сама функция del . А на счет форматирования - я пишу в Far у меня все скобки нормально друг под ругом расположены, а при копировании на форум происходит смещение, извините это не по моей вине.
Может я не так прописываю переменную перед вызыванием функции удаления



$d = $Query->param( "NUM" );

if( defined $d )
{



$NUM = $Query->param( "NUM" );
$INPUT_NUM_DOC = $Query->param( "INPUT_NUM_DOC" );
$DATE_POST = $Query->param( "DATE_POST" );
$NUM_DOC = $Query->param( "NUM_DOC" );
$NUM_DOC_IN_EERD = $Query->param( "NUM_DOC_IN_EERD" );
$INN = $Query->param( "INN" );
$PREDMET = $Query->param( "PREDMET" );
$SROK = $Query->param( "SROK" );
$YSLOV_AF_PROLONG = $Query->param( "YSLOV_AF_PROLONG" );
$SROK_PROLONG = $Query->param( "SROK_PROLONG" );
$PROTOKOL = $Query->param( "PROTOKOL" );
$DOLZHNOST = $Query->param( "DOLZHNOST" );
$TYPE_DOC = $Query->param( "TYPE_DOC" );
$VID_DOC = $Query->param( "VID_DOC" );
$PLANE_PLATEZHEI = $Query->param( "PLANE_PLATEZHEI" );
$PRICE_DOC = $Query->param( "PRICE_DOC" );
$NUM_DOPOLNIT_SOGL = $Query->param( "NUM_DOPOLNIT_SOGL" );
$STATYS_DOC = $Query->param( "STATYS_DOC" );
$PRIMECHANIE = $Query->param( "PRIMECHANIE" );



$sth = $dbh->prepare("DELETE * FROM document WHERE NUM='$NUM'") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();

и т. д. наверное как всегда что-то забыла?
Black
Дата: 25.08.2006 14:46:09
$d = $Query->param( "NUM" );
...
$NUM = $Query->param( "NUM" );
помоймо поле у Вас называется NUM_DOC, замените на
$d = $Query->param( "NUM_DOC" );

if( defined $d )
{ 

$sth = $dbh->prepare("DELETE * FROM document WHERE NUM='$d") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();
Anna85
Дата: 25.08.2006 15:01:50
Логику поняла, спасибо, а программа пишет выполнено с ошибками на странице и все равно ничего не удаляет. Даже не выдает, то что в принтах написано.



$d = $Query->param( "NUM_DOC" );

if( defined $d )
{
print <<"EOT";
opipoiooip
EOT



$sth = $dbh->prepare("DELETE * FROM document WHERE NUM='$d'") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();



Может в ссылках что не так раз он туда даже не обращается?




$sth = $dbh->prepare("SELECT * FROM document ORDER BY NUM") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();
while ( $row = $sth->fetchrow_hashref)

{
$NUM = $row->{'NUM'};
print <<"EOT";

<td>
<OPTION><A HREF="#" onClick="mainform.target='_self';mainform.direction.value='redakt';mainform.NUM_DOC.value=$NUM;mainform.submit();return false;"><B>Редактировать</B></A></OPTION>


</td>

EOT
print <<"EOT";

<td>
<OPTION><A HREF="#" onClick="mainform.target='_self';mainform.NUM.value='del';mainform.NUM_DOC.value=$NUM;mainform.submit();return false;"><B>Удалить</B></A></OPTION>
</td>

EOT
Black
Дата: 25.08.2006 15:06:25
Модератор:
пока Вы не научитесь выделять код тэгом src ( между прочим, если Вы его не используете, нарушаете правила форума ), я отвечать не буду, зрение дороже