Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скрипт не правильно определяет нужное поле, для редактирования и удаления. 
:(
    Опции темы
Enya
  Дата 12.9.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Привет! Вот достался мне скриптик, по Добавлению/Удалению/Редактированию таблички списка вакансий. Но в нём ошибка. Он удаляет или редактирует посленюю запись, а не ту у которой кликаешь изменить.
Код

<?
require_once '../_constants.php';
print_head('Администрирование вакансий');
permission_check('vacancies');

print_vakan_admin_links();

if (isset($_POST['submit_add'])) process_add_data();
if (isset($_POST['delete_vacan'])) delete_vacancy();
if (isset($_POST['edit_vacan'])) print_edit_form();
if (isset($_POST['update_vacan'])) update_vacancy();


if (isset($_GET['type']))
   {
   $type=addslashes($_GET['type']);
   if ($type==1) print_vacan_form();
   }
   else if (!isset($_POST['edit_vacan'])) print_vacan_list();

//===============================================================================

function print_edit_form()
{
$sql='select * from vacancies where id='.$_POST['vacan_id'];
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);

echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<input type="hidden" name="vacan_id" value="'.$_POST['vacan_id'].'">';
?>
<table>
<col valign="top">
<tr><td>Должность:</td><td><input type="text" name="job_title" style="width:300;" value="<?echo $row['title'];?>"></td></tr>
<tr><td>Должностные<br> обязанности:</td><td><textarea name="functions" class="vacan_add_text"><?echo $row['functions'];?></textarea></td></tr>
<tr><td>Требования <br>к кандидату:</td><td><textarea name="requirements" class="vacan_add_text"><?echo $row['requirements'];?></textarea></td></tr>
<tr><td>Мы предлагаем:</td><td><textarea name="offers" class="vacan_add_text"><?echo $row['offers'];?></textarea></td></tr>
<tr><td></td><td><input type="submit" name="update_vacan" value="Подтвердить"></td></tr>
</table>
</form>
<?
}


//===============================================================================

function update_vacancy()
{
$title=addslashes($_POST['job_title']);
$functions=addslashes($_POST['functions']);
$requirements=addslashes($_POST['requirements']);
$offers=addslashes($_POST['offers']);
$sql='update vacancies set title="'.$title.'", requirements="'.$requirements.'",offers="'.$offers.'" where id='.$_POST['vacan_id'];
$result=mysql_query($sql) or die($sql);
}

//===============================================================================

function delete_vacancy()
{
$sql='update vacancies set show_order=-1 where id='.$_POST['vacan_id'];
$result=mysql_query($sql);
}

//===============================================================================

function print_vacan_list()
{
$sql='select * from vacancies where show_order>=0 order by show_order desc';
$result=mysql_query($sql);
?>
<table border="1">
<?
while ($row=mysql_fetch_assoc($result))
   {
   ?>
   <tr>
   <?
   echo '<td valign="top">'.$row['title'].'</td>';
   echo '<td valign="top">'.nl2br($row['functions']).'</td>';
   echo '<td valign="top">'.nl2br($row['requirements']).'</td>';
   echo '<td valign="top">'.nl2br($row['offers']).'</td>';
   echo '<td valign="top"><form action="'.$_SERVER['PHP_SELF'].'" method="post">';
   echo '<input type="hidden" name="vacan_id" value='.$row['id'].'>';
   echo '<input type="submit" name="delete_vacan" value=" Удалить  "><br><br>';
   echo '<input type="submit" name="edit_vacan" value="Изменить">';
   ?>
   </tr>
   <?
   }
?>
</table>
<?
}

//===============================================================================

function print_vakan_admin_links()
{
if (isset($_GET['type'])) $type=addslashes($_GET['type']);
if (!isset($type) or $type!=1) echo '<a class="blacklink" href="'.$_SERVER['PHP_SELF'].'?type=1">Добавить вакансию</a><br>';
if (isset($type)) echo '<a class="blacklink" href="'.$_SERVER['PHP_SELF'].'">Список вакансий</a><br>';
?>
<br>
<?
}

//===============================================================================

function print_vacan_form()
{
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
?>
<table>
<col valign="top">
<tr><td>Должность:</td><td><input type="text" name="job_title" style="width:300;"></td></tr>
<tr><td>Должностные<br> обязанности:</td><td><textarea name="functions" class="vacan_add_text"></textarea></td></tr>
<tr><td>Требования <br>к кандидату:</td><td><textarea name="requirements" class="vacan_add_text"></textarea></td></tr>
<tr><td>Мы предлагаем:</td><td><textarea name="offers" class="vacan_add_text"></textarea></td></tr>
<tr><td></td><td><input type="submit" name="submit_add" value="Добавить"></td></tr>
</table>
</form>
<?
}

//===============================================================================

function process_add_data()
{
$title=addslashes($_POST['job_title']);
$functions=addslashes($_POST['functions']);
$requirements=addslashes($_POST['requirements']);
$offers=addslashes($_POST['offers']);
$sql='insert into vacancies (title,functions,requirements,offers) values("'.$title.'","'.$functions.'","'.$requirements.'","'.$offers.'")';
$result=mysql_query($sql) or die($sql);
}
?>
Спасибо всем кто обратит своё внимание и поможет советом.


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 12.9.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



1. В СУРБД нет понятия последняя запись.
2. Логика скрипта и используемые значения - верные.
PM ICQ   Вверх
Enya
Дата 12.9.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Цитата(Mal Hack @  12.9.2006,  12:28 Найти цитируемый пост)
1. В СУРБД нет понятия последняя запись.
Не спорю, возможно я не так выразилась. Кликаешь допусти там на третьей вакансии, а он выдаёт данные для редактирования самую последнюю вакансию, то есть не то что нужно.
И тоже самое с удалением(точнее со скрытием там меняется значение переменно для отображения),  клиешь на одно, а скрывается со всем другое. smile 



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
BuShaRt
Дата 12.9.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



 smile Что то с id напутал... 
PM MAIL   Вверх
ZlojEzh
Дата 12.9.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 10
Всего: 15



есть подозрение, что после строки 86 надо закрывать форму
PM MAIL ICQ   Вверх
Enya
Дата 12.9.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Цитата(BuShaRt @ 12.9.2006,  13:31)
smile Что то с id напутал...

Ну у меня есть точно такие же догодки, но этим мы и отличаемся, что я могу только догадываться, а вы знать где конкретно.


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 12.9.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Enya, делай отладку программы посредством вывода значений переменных и массивов.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Enya
Дата 12.9.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Цитата(-=Ustas=- @  12.9.2006,  16:30 Найти цитируемый пост)
Enya, делай отладку программы посредством вывода значений переменных и массивов. 
А я такого никогда не делала, это как? smile 



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 12.9.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Код

echo '<pre>';
print_r($_POST);


Перед выводом формы, и посмотри что тебе приходит.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
ZlojEzh
Дата 12.9.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 10
Всего: 15



а все же: форму закрывать не пробовали?
из-за этого, скорее всего, и передается айдишник последней записи:
значения предыдущих хайден-полей перекрываются последним

PM MAIL ICQ   Вверх
skyboy
Дата 12.9.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



 smile 
рекомендация: под FireFox есть плагины, которые позволяют отлаживать javascript - код без установки дополнительного ПО. Будет намного проще искать ошибки. Посему - ставь FireFox, какой-нить плагин(например, FireBug) и будет тебе счастье smile
PM MAIL   Вверх
Enya
Дата 13.9.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



-=Ustas=-, я вставил кусочек кода, который вы указали
Код

<?
require_once '../_constants.php';
print_head('Администрирование вакансий');
permission_check('vacancies');

print_vakan_admin_links();

if (isset($_POST['submit_add'])) process_add_data();
if (isset($_POST['delete_vacan'])) delete_vacancy();
if (isset($_POST['edit_vacan'])) print_edit_form();
if (isset($_POST['update_vacan'])) update_vacancy();


if (isset($_GET['type']))
   {
   $type=addslashes($_GET['type']);
   if ($type==1) print_vacan_form();
   }
   else if (!isset($_POST['edit_vacan'])){
 // кусочек кода от -=Ustas=-
   echo '<pre>';
   print_r($_POST);
 //----------------------
   print_vacan_list();

   }

.....


Вот что получил в результате.
Цитата

Array
(
    [job_title] => Должность
    [functions] => Здесь обязанности
    [requirements] => Здесь тебования
    [offers] => Здесь предложения
    [submit_add] => Добавить
)



Добавлено @ 09:25 
-=Ustas=-, вроде всё нормально как должно так и приходит? smile

Добавлено @ 09:27 
а вот, что приходит после того как редактирую.
Цитата

Array
(
    [vacan_id] => 32
    [job_title] => Должность
    [functions] => Здесь обязанности изменить
    [requirements] => Здесь тебования изменить
    [offers] => Здесь предложения изменить
    [update_vacan] => Подтвердить
)

Хотя кликал совершенно по другой вакансии, а данные предоставил скрипт для редактирования, тестовую вакансию которую я сам забил. Вот. smile

Добавлено @ 09:30 
Вот данные которые приходят после клика на удалить
Цитата

Array
(
    [vacan_id] => 32
    [delete_vacan] =>  Удалить  
)




--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
BuShaRt
Дата 13.9.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Enya, 
Да я тоже не знаю, где ошибка=)) 

Цитата

вроде всё нормально как должно так и приходит? 

А ты сам не знаешь, что должно приходить? )

А вообше, если он в данном случае выводит не верный ID, значит и пре генерации формы он не верный (посмотри исходный код HTML).
Т.е. ошибка скорей всего начинаеться с этого места:

Код

echo '<input type="hidden" name="vacan_id" value='.$row['id'].'>';


Дальше ошибок не видно.. НО! 

У тебя данные выводяться отсортированными, не по ID, а по show_order т.е. их позиция в табличке твоей и в бд (отсортированной стандартно по ID) будут разные... Врочем записи отсаються одинаоковые. Но возможно ты просто в спешке этого не заметил=) 
PM MAIL   Вверх
-=Ustas=-
Дата 13.9.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Блин, сразу не досмотрел... smile 
ZlojEzh, правильно сказал:

Цитата(ZlojEzh @  12.9.2006,  18:24 Найти цитируемый пост)
а все же: форму закрывать не пробовали?
из-за этого, скорее всего, и передается айдишник последней записи:
значения предыдущих хайден-полей перекрываются последним


Добавлено @ 10:13 
Закрой форму и все smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Enya
Дата 13.9.2006, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Ребята, в самом деле в двух местах не закрыт тег <form>, не уже ли это так влияло?! smile 
СПАСИБО! Девчёнки из рекламного отдела дарят вам свои воздушные поцелуи! smile  smile 


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.