Помогите исправить скрипт

hipachka
На сайте с 25.08.2008
Offline
70
524

Ниже приведен код скрипта, движок самописный, писал не я. Знания в PHP на уровне прочитать поправить, но здесь моих знаний недостаточно. В скрипте был реализован функционал добавления контактов (8строк в БД) сортировка контактов идет по ID. В админке предусмотрена смена ID тремя способами:

1.Задать конкретно.

2.Поднять вверх.

3.Опустить вниз.

Но ни одна из этих функций не работает. Вроде скрипт исполняется правильно, т.е. ошибок не выдает, но своих функций не выполняет.

Задача исправить эти три функции и сделать их работоспособным.

<?

$text = "<center>Статус административной панели:<br><p style='{background-color: gray;}'>%system_message%</p></center>";
$system_message = "активно.";

$variables = array("act", "direction", "nid");


foreach ($variables as $thisvalue)
{
$$thisvalue = ($_GET[$thisvalue] != "") ? $_GET[$thisvalue] : $_POST[$thisvalue];
}

switch($act)
{
case "add":
mod_contacts_add();
mod_contacts_list();
break;
case "change":
mod_contacts_change();
mod_contacts_view();
break;
case "delete":
mod_contacts_delete();
mod_contacts_list();
break;
case "view":
mod_contacts_view();
break;
case "move":
mod_contacts_move();
mod_contacts_list();
break;
case "page":
mod_contacts_page_change();
default:
mod_contacts_list();
}
mod_contacts_page();

function mod_contacts_list()
{
global $text;
$contacts_query = mysql_query("select * from mod_contacts_list order by id");
$total = mysql_num_rows($contacts_query);
$contacts_list = "<HR>Список контактов<HR><TABLE width='100%'>";
$i=0;
while($contacts_row = mysql_fetch_array($contacts_query))
{
$contacts_list .= "<TR><TD>#" . $contacts_row['id'] . "</TD><TD width='85%' style='{border-bottom: black 1px solid;}'><A href='?action=admin&mod=contacts&act=view&id=" . $contacts_row['id'] . "'>" . $contacts_row['name'] . "</A></TD><TD width='9%'>";

if ($i > 0) {$contacts_list .= "<INPUT type='button' value='<' title='Поднять выше' onclick=\"javascript:document.location='admin.php?action=admin&mod=contacts&act=move&direction=up&id=" . $contacts_row['id'] . "';\" style='{cursor: hand;}'>";} else {$contacts_list .= "<INPUT type='button' value='<' title='Поднять выше: недоступно' disabled>";}
$contacts_list .= "<INPUT type='button' value='?' onclick=\"javascript:dest=prompt('Порядковый номер?', 0);window.parent.location.replace('admin.php?action=admin&mod=contacts&act=move&direction=target&id=" . $contacts_row['id'] . "&nid='+dest);\">";
if ($i < $total-1) {$contacts_list .= "<INPUT type='button' value='>' title='Опустить ниже' onclick=\"javascript:document.location='admin.php?action=admin&mod=contacts&act=move&direction=down&id=" . $contacts_row['id'] . "';\" style='{cursor: hand;}'>";} else {$contacts_list .= "<INPUT type='button' value='>' title='Опустить ниже: недоступно' disabled>";}

$contacts_list .= "</TD><TD width='1%'><INPUT type='button' value='x' onclick=\"window.parent.location.replace('admin.php?action=admin&mod=contacts&act=delete&id=" . $contacts_row['id'] . "');\"></TD></TR>";
$i++;

}

$contacts_list .= "</TABLE><HR>Новый контакт<HR><TABLE>
<FORM method='post' action='admin.php?action=admin&mod=contacts&act=add'>
<TR><TD>Имя:</TD><TD><INPUT type='text' name='vname' size='68'></TD></TR>
<TR><TD>Должность:</TD><TD><INPUT type='text' name='job' size='68'></TD></TR>
<TR><TD>Адрес:</TD><TD><INPUT type='text' name='addr' size='68'></TD></TR>
<TR><TD>Тел.:</TD><TD><INPUT type='text' name='phone' size='68'></TD></TR>
<TR><TD>Тел./Факс:</TD><TD><INPUT type='text' name='fax' size='68'></TD></TR>
<TR><TD>Сот.:</TD><TD><INPUT type='text' name='mobile' size='68'></TD></TR>
<TR><TD>E-mail:</TD><TD><INPUT type='text' name='mail' size='68'></TD></TR>
<TR><TD>ID:</TD><TD><INPUT type='text' name='id' size='68'></TD></TR>
<TR><TD colspan='2'><INPUT type='submit' value='добавить запись'></TD></TR>
</FORM>
</TABLE>";
$text .= $contacts_list;
}

function mod_contacts_add()
{
global $system_message;
$system_message = "Запись добавлена.";
$contacts_query = mysql_query("select * from mod_contacts_list order by id");
$i=0;
$cid_array=Array();
while($rows=mysql_fetch_array($contacts_query))
{
$cid_array[$i]=$rows['id'];
$i++;
}
$freeID = find_freeID($cid_array);
mysql_query("insert into mod_contacts_list values($freeID, \"" . $_POST['vname'] . "\", \"" . $_POST['job'] . "\", \"" . $_POST['addr'] . "\", \"" . $_POST['phone'] . "\", \"" . $_POST['fax'] . "\", \"" . $_POST['mobile'] . "\", \"" . $_POST['mail'] . "\")");
}

function mod_contacts_delete()
{
global $system_message;
$system_message = "Запись удалена.";
mysql_query("delete from mod_contacts_list where id=" . $_GET['id']);
}

function mod_contacts_change()
{
global $system_message;
$system_message = "Запись обновлена.";
mysql_query("update mod_contacts_list set name=\"" . $_POST['vname'] . "\",job=\"" . $_POST['job'] . "\",addr=\"" . $_POST['addr'] . "\",phone=\"" . $_POST['phone'] . "\",fax=\"" . $_POST['fax'] . "\",mobile=\"" . $_POST['mobile'] . "\",mail=\"" . $_POST['mail'] . "\" where id=" . $_GET['id']);
}

function mod_contacts_view()
{
global $text;
$contacts_query = mysql_query("select * from mod_contacts_list where id=" . $_GET['id']);
$contacts_row = mysql_fetch_array($contacts_query);
$text .= "
<A href='?action=admin&mod=contacts'>Вернуться назад</A><HR>
<TABLE>
<FORM method='post' action='admin.php?action=admin&mod=contacts&act=change&id=" . $_GET['id'] . "'>
<TR><TD>Имя:</TD><TD><INPUT type='text' name='vname' value=\"" . $contacts_row['name'] . "\" size='68'></TD></TR>
<TR><TD>Должность:</TD><TD><INPUT type='text' name='job' value=\"" . $contacts_row['job'] . "\" size='68'></TD></TR>
<TR><TD>Адрес:</TD><TD><INPUT type='text' name='addr' value=\"" . $contacts_row['addr'] . "\" size='68'></TD></TR>
<TR><TD>Тел.:</TD><TD><INPUT type='text' name='phone' value=\"" . $contacts_row['phone'] . "\" size='68'></TD></TR>
<TR><TD>Тел./Факс:</TD><TD><INPUT type='text' name='fax' value=\"" . $contacts_row['fax'] . "\" size='68'></TD></TR>
<TR><TD>Сот.:</TD><TD><INPUT type='text' name='mobile' value=\"" . $contacts_row['mobile'] . "\" size='68'></TD></TR>
<TR><TD>E-mail:</TD><TD><INPUT type='text' name='mail' value=\"" . $contacts_row['mail'] . "\" size='68'></TD></TR>
<TR><TD>ID:</TD><TD><INPUT type='text' name='id' value=\"" . $contacts_row['id'] . "\" size='68'></TD></TR>
<TR><TD colspan='2'><INPUT type='submit' value='сохранить изменения'></TD></TR>
</TABLE>
";
}

function mod_contacts_page()
{
global $text, $mods_folder;
$page_content = file_get_contents("$mods_folder/contacts/page_content.html");
$text .= "
<HR>Редактирование страницы<HR><FORM method='post' action='admin.php?action=admin&mod=contacts&act=page'>
<TEXTAREA name='page_content' cols='160' rows='50'>$page_content</TEXTAREA><BR>
<INPUT type='submit' value='сохранить изменения'>
</FORM>
";
}

function mod_contacts_page_change()
{
global $system_message, $mods_folder;
$system_message = "Изменения содержания страницы произведены.";
$file = fopen("$mods_folder/contacts/page_content.html", "w");
if (!get_magic_quotes_gpc())
{
fputs($file, $_POST['page_content']);
} else {
fputs($file, stripslashes($_POST['page_content']));
}
fclose($file);
}

function mod_contacts_move()
{
global $direction, $id, $system_message;
$system_message = "Запись перемещена.";
$contacts_query = mysql_query("select * from mod_contacts_list order by id");
$previous_id = "";
$next_id = "";
while($contacts_row = mysql_fetch_array($contacts_query))
{
if ($contacts_row['id'] == $id) {$contacts_row = mysql_fetch_array($contacts_query);$next_id=$contacts_row['id'];break;}
$previous_id = $contacts_row['id'];
}
if ($direction == "up")
{
$nid = $previous_id;
} else {
if ($direction == "target")
{
global $nid;
} else {
$nid = $next_id;
}
}

if ($direction == "target")
{
mysql_query("update mod_contacts_list set id=-1 where id=$id");
$contacts_query = mysql_query("select * from mod_contacts_list where id=$nid");
if (mysql_num_rows($contacts_query)>0)
{
mysql_query("update mod_contacts_list set id=id+1 where id>=$nid");
}
mysql_query("update mod_contacts_list set id=$nid where id=-1");
} else {
mysql_query("update mod_contacts_list set id=-1 where id=$id");
mysql_query("update mod_contacts_list set id=$id where id=$nid");
mysql_query("update mod_contacts_list set id=$nid where id=-1");
}
}

$text = str_replace("%system_message%", $system_message, $text);
$out_stream = str_replace("%body%", $text, $out_stream);
?>
ZiNTeR2001
На сайте с 28.05.2008
Offline
42
#1

Вероятно у вас нет соединения к Базе Данных.

В приведенном коде вопрос о соединении с БД не прописан.

Поскольку в коде автор не "сомневался" в отсутствии ошибок со стороны БД, система не смотрит на ответы от MySQL и не выдает ошибки в зависимости от ответа БД.

Чтобы видеть реальные ошибки БД, измените код следующим образом:

Каждый раз в записи

mysql_query(...);

Изменяем так:

mysql_query(...)or die(mysql_error());

В таком случае, если БД выдала ошибка, скрипт прерывает свое действие и отображает ошибку на экране.

На Морде так делать нельзя, но судя по вашему "коду" для админики как вариант пойдет.

НЕ хотелось бы напоминать что автору данной "CMS" вида 3 include, 2 if-else стоит либо много учиться нормальной разработке, либо сменить профессию - на готовом боевом решении это негодится.

Лабаю Медицинского центра "Евразия" (http://http://xn----7sbbhoobaglcj1a2c6o.xn--p1ai/) Плюс ещё Пытаюсь отреставрировать и воссоздать "сообщество любителей поиграть в футбол шаговой доступности" (http://www.kubgoal.ru)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий