|
|
|
| Запрос на обновление записи в таблице:
$query = "UPDATE enterprise SET
id='$id',
..................
ch_bithday='$ch_bithday',
...................
WHERE id_catalog='$id_catalog'";
|
Выдает ошибку:
Duplicate entry '2' for key 1
|
Переменная $ch_bithday имеет 2 значения: show и hide (описывает checkbox).
Вот структура колонки ch_bithday:
`ch_bithday` enum('show','hide') NOT NULL default 'show',
|
Подскажите что за ошибка(что она означает) и как ее исправить | |
|
|
|
|
|
|
|
для: Dizels
(27.11.2007 в 20:01)
| | а что такое многоточие? | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2007 в 20:30)
| | ну там другие запросы идут, полностью выглядит вот так:
$query = "UPDATE enterprise SET
id='$id',
name='$name',
form='$form',
leader='$leader',
bithday_leader='$l_bithday',
ch_bithday='$ch_bithday',
activity='$activity',
rewards='$rewards',
adress='$adress',
sity='$sity',
phone='$phone',
fax='$fax',
email='$email',
site='$site',
additionally='$dopolnitelno'
WHERE id_catalog='$id_catalog'";
|
Решил поставить многоточие, чтобы много текста не было) | |
|
|
|
|
|
|
|
для: Dizels
(27.11.2007 в 20:51)
| | ругань у Вас идет на duplicate entry 2 , то есть на поле name . На нем, похоже , стоит уникальный ключ, а Вы пытаетесь засунуть в таблицу две строки с одним и тем же name. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2007 в 20:56)
| | Сейчас все перепроверю, но добавлена в код одна строка:
ch_bithday='$ch_bithday',
|
До этого код работал исправно. | |
|
|
|
|
|
|
|
для: Dizels
(27.11.2007 в 21:09)
| | Вот код где я определяю переменную:
// Определяем, нужно ли скрывать
if($_POST['ch_bithday'] == "on") $ch_bithday = "hide";
else $ch_bithday = "show";
|
| |
|
|
|
|
|
|
|
для: Dizels
(27.11.2007 в 21:09)
| | Если Вы полагаете, что знаете в которой строке проблема, какой смысл спрашивать, что происходит?
Если полагаете , что не знаете, почему не слушаете то, что Вам говорят? | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2007 в 21:15)
| | Извините:)
Видимо я чего-то не догоняю:)
>Вы пытаетесь засунуть в таблицу две строки с одним и тем же name.
Не пойму это как? | |
|
|
|
|
|
|
|
для: Dizels
(27.11.2007 в 21:31)
| | видимо, уже одна такая строка там есть. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2007 в 21:36)
| |
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
// Проверяем, переданы ли скрытые поля формы
if(empty($id)) { echo "Не передана переменная предприятия";
exit;
}
if(empty($id_catalog)) { echo "Не передана переменная каталога";
exit;
}
// Проверяем, заполнены ли поля
if(empty($_POST['name'])) links("Введите название предприятия.");
if(empty($_POST['leader'])) links("Введите ФИО руководителя.");
if(empty($_POST['activity'])) links("Введите виды деятельности.");
// Получаем переменные и где надо заменяем одинарные кавычки на обратные
$form = $_POST['form'];
$name = str_replace("'","`",$_POST['name']);
$leader = str_replace("'","`",$_POST['leader']);
$l_day = $_POST['l_day'];
$l_month = $_POST['l_month'];
$l_year = $_POST['l_year'];
$l_bithday = $l_day.".".$l_month.".".$l_year;
// Определяем, скрыт параграф или нет
if($_POST['ch_bithday'] == "on") $ch_bithday = "hide";
else $ch_bithday = "show";
$activity = str_replace("'","`",$_POST['activity']);
$rewards = str_replace("'","`",$_POST['rewards']);
$adress = str_replace("'","`",$_POST['adress']);
$sity = str_replace("'","`",$_POST['sity']);
$phone = str_replace("'","`",$_POST['phone']);
$fax = str_replace("'","`",$_POST['fax']);
$email = str_replace("'","`",$_POST['email']);
$site = str_replace("'","`",$_POST['site']);
$dopolnitelno = str_replace("'","`",$_POST['dopolnitelno']);
if(empty($_POST['id_catalog']))$parent=0;
else $parent = $_POST['id_catalog'];
// Формируем и осуществляем SQL-запрос на исправление страны
$query = "UPDATE enterprise SET
id='$id',
name='$name',
form='$form',
leader='$leader',
bithday_leader='$l_bithday',
ch_bithday='$ch_bithday',
activity='$activity',
rewards='$rewards',
adress='$adress',
sity='$sity',
phone='$phone',
fax='$fax',
email='$email',
site='$site',
additionally='$dopolnitelno'
WHERE id_catalog='$id_catalog'";
if(mysql_query($query))
{
// В случае успеха, осуществляем автоматический переход на
// страницу стран
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
</HEAD></HTML>";
}
else
echo mysql_error();
?>
|
Вот весь код, вроде нету еще одной такой строки. | |
|
|
|
|
|
|
|
для: Dizels
(27.11.2007 в 22:03)
| | речь идет о строке (о записи) в таблице БД, а не о строке в коде. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2007 в 22:26)
| | может тогда имеется ввиду, что по умолчанию в столбец ch_bithday подставляется "show" и при редактировании опять в переменной $ch_bithday параметр show ? | |
|
|
|
|
|
|
|
для: Dizels
(27.11.2007 в 23:22)
| | чем гадать на кофейной гуще, замените строку
echo mysql_error();
на строку
echo "Error in <br> $query <br>".mysql_error();
|
и поглядите полный текст сформировавшегося запроса.
Заодно посмотрите, какой в таблице первый индекс. | |
|
|
|
|
|
|
|
для: Dizels
(27.11.2007 в 22:03)
| | .возможно, дело не в name, а в id. Если id- первичный ключ - даже вероятно.
Кстати, я вообще не понял, откуда берется значение в переменной $id. | |
|
|
|