Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > не добавляется запись в Базу


Автор: marrisha 5.2.2007, 14:49
не могу разобраться вот в какой проблеме:
имеется БД в которой лежат 2 таблицы:
1) Структура таблицы `directories`

CREATE TABLE `directories` (
  `id` int(4) NOT NULL auto_increment,
  `name` tinytext NOT NULL,
  `parent` tinytext NOT NULL,
  `level` tinytext NOT NULL,
  `type` tinytext NOT NULL,
  `position` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
****************************************

2) CREATE TABLE `text` (
  `id` int(4) NOT NULL auto_increment,
  `title` tinytext NOT NULL,
  `text` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
  
) TYPE=MyISAM  ;


мне необходимо с помощбю инсерта добавить записи как в первую так и во вторую таблицу, происходит следующее, 1 запись добавляется под id=127, повторная операция не происходит, пишет ошибку что нельзя добавить запись(если же я удаляю запись под id=127, то инсерт происходит но опять таки под номером 127), почему так происходит???

Автор: Mal Hack 5.2.2007, 14:57
А запрос можно глянуть?

Автор: marrisha 5.2.2007, 15:12
вот сама форма:


Код

$string = "<form method=\"POST\" action=\"index.php\">\n
<p>директория <input type=\"text\" name=\"name\" size=\"20\" value=\"\"></p>\n
<p>Заглавие страницы <input type=\"text\" name=\"textname\" size=\"20\" value=\"\"></p>\n
<p>Текст страницы  <textarea rows=\"20\" name=\"texttext\" cols=\"60\"></textarea></p>\n";
while ($levelrow = mysql_fetch_array($result)) 

$string = $string . "</select></p>\n
<p><input type=\"hidden\" name=\"action\" value=\"donewdir\"></p>\n
<p><input type=\"hidden\" name=\"dir\" value=\"$dir\"></p>\n
<p>Тип директории: <select size=\"1\" name=\"type\">\n
<option value=\"main\">Обычная директория</option>\n";
if ($userlevel == 4) {
$string .= "<option value=\"gmakro\">Директория Госслужбы макроэкономики</option>\n";
}
$string .= "</select></p>
<p><input type=\"submit\" value=\"Отправить\" name=\"B1\"><input type=\"reset\" value=\"Очистить\" name=\"B2\"></p>\n
</form>\n";
} else {
$string = "У Вас недостаточно прав\n";
}

.
.
.
.
.
а вот и сам инсерт:
Код



if ($user = 4) {
$texttext = str_replace("\n", "<br>", $texttext);
$name = strtoupper($name);
srand ((double)microtime() * 10000);
$rand = rand();
$time = time();
$id = $time . $rand;
$query = "insert into directories values ('$id', '$name', '$dir', '$level', '$type', '0')";
if (mysql_query($query)) {
$string = "<p>Директория добавлена </p>\n";
} else {
$string = "<p>Директория не может быть добавлена </p>\n";
}

if ($type == "main") {
$query = "insert into text values ('$id', '$textname', '$texttext')";
if (mysql_query($query)) {
$string = $string . "<p>Информация записана</p>\n";
} else {
$string = $string . "<p>Информацияне может быть записана</p>\n";
}

Автор: PARROT 5.2.2007, 15:15
Ошибки есть? 
Код

 or die(mysql_error());

Автор: Mal Hack 5.2.2007, 15:18
Блин, ну ведь стоит же auto_increment, зачем надо указывать значение при вставке в БД?

Автор: marrisha 5.2.2007, 15:59
убрала, вобще ничего не добавляется

Автор: mishaSL 5.2.2007, 16:06
Замени строку:
Код

$query = "insert into directories values ('$id', '$name', '$dir', '$level', '$type', '0')";


на
Код

$query = "INSERT INTO `directories` VALUES ('', '".mysql_real_escape_string($_POST['name'])."', '".mysql_real_escape_string($_POST['dir'])."', '".mysql_real_escape_string($_POST['level'])."', '".mysql_real_escape_string($_POST['type'])."', '0')";


второй запрос аналогично сделай.

Автор: marrisha 5.2.2007, 16:22
да таже ерунда записывается только 1 запись и больше записи не добавляются...

Добавлено @ 16:25 
все проблема решена... спасибо 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)