|
|
|
| Все добавлялось как надо, но в один момент перестало добавляться и начала выводиться ошибка.
Вот структура БД:
CREATE TABLE `biograf_artpage` (
`id_artpage` int(10) NOT NULL auto_increment,
`name` text NOT NULL,
`id_site` int(4) default NULL,
`id_parent` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id_artpage`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
Вот файл, при вызове которого происходит ошибка:
<?php
// Соединяемся с базой данных
require_once("../config.php");
// Проверяем, заполнено ли поле name
if(empty($_POST['name'])) links("Введите название раздела.");
// Заменяем одинарные кавычки на обратные
$name = str_replace("'","`",$_POST['name']);
if(empty($_POST['id_parent']))$parent=0;
else $parent = $_POST['id_parent'];
// Формируем SQL-запрос на добавление нового раздела
$query = "INSERT INTO biograf_artpage VALUES (NULL, '$name', 0, '$parent');";
if(mysql_query($query))
{
// В случае успешного добавления переходим на главную страницу
// системы администрирования
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
</HEAD></HTML>";
}
else puterror("Ошибка при обращении к блоку статей");
// Функция вывода ошибки в окно браузера
function links($msg)
{
echo "<p>".$msg."</p>";
echo "<p><a href=# onClick='history.back()'>Вернуться к правке раздела</a></p>";
echo "<p><a href=index.php>Администрирование статей</a></p>";
exit();
}
?>
|
Ошибку выдает следущую:
Ошибка при обращении к блоку статей
|
Как мне кажется возможная ошибка - это неправильное указание типа поля (int(10)). Сейчас в таблице около 50 записей. Подскажите, пожалуйста, как решить проблему. | |
|
|
|
|
|
|
|
для: Dizels
(19.12.2007 в 20:24)
| | - | |
|
|
|
|
|
|
|
для: Dizels
(19.12.2007 в 20:24)
| |
$parent = (int) @$_POST['id_parent'];
puterror("Ошибка при обращении к блоку статей: " . mysql_error());
|
| |
|
|
|
|
|
|
|
для: bronenos
(19.12.2007 в 20:33)
| | выдало вот что:
Duplicate entry '127' for key 1
|
Вот тока я чего-то не пойму, что это значит? | |
|
|
|
|
|
|
|
для: Dizels
(19.12.2007 в 20:55)
| | Судя по ошибке у Вас 127 запись в id_artpage существует, и другую создать не возможно, так как это уникальный ключ. | |
|
|
|
|
|
|
|
для: Faraon
(19.12.2007 в 21:10)
| | ну а как тогда перейти на следующую? Я просто добавлял записи, все было как обычно, а потом ошибка :( | |
|
|
|
|
|
|
|
для: Dizels
(19.12.2007 в 21:30)
| | УВас точно поле
`id_artpage` int(10) NOT NULL auto_increment,
или tinyint ? | |
|
|
|
|
|
|
|
для: Faraon
(19.12.2007 в 21:46)
| | точно int(10) - возможно раньше было tinyint, так как подобная ошибка у меня уже была и тогда я как раз и менял tinyint на int | |
|
|
|
|
|
|
|
для: Dizels
(19.12.2007 в 21:58)
| | А как Вы меняли? Через какого клиента? | |
|
|
|
|
|
|
|
для: Faraon
(19.12.2007 в 22:11)
| | phpmyadmin | |
|
|
|
|
|
|
|
для: Dizels
(19.12.2007 в 22:31)
| | Попробуйт cделать запрос, можно и через PhpMyAdmin
ALTER TABLE `biograf_artpage` CHANGE `id_artpage` `id_artpage` INT(10) NOT NULL AUTO_INCREMENT
|
| |
|
|
|
|
|
|
|
для: Faraon
(19.12.2007 в 22:43)
| | запрос выполнен успешно.
Но проблема осталась.
Добавлено:
Чего-то тут вообще фигня какая-то - в базе я вижу только 50 записей, а на самом сайте около 120 :) как такое может быть? | |
|
|
|
|
|
|
|
для: Dizels
(19.12.2007 в 23:11)
| | Столбец типа AUTO_INCREMENT при удалении значения не пересчитывается и пробелов не заполняет (так быстрее получается) - в результате достаточно вам 120 раз выполнить INSERT-запрос и значение столбца, снабжённого атрибутом AUTO_INCREMENT достигает значения 120, даже если в таблице осталась одна единственная запись или вообще никаких записей не осталось. | |
|
|
|