X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Добавление данных в БД
Banan4ik57
Banan4ik57
Topic Starter сообщение 23.7.2016, 2:52; Ответить: Banan4ik57
Сообщение #1


Доброе время суток! Есть таблица в базе данных. Я сделал добавление новой строки в таблицу, но по какой-то причине не работает. Выручайте!) Весь код ниже.
Таблица:
CREATE TABLE IF NOT EXISTS `search` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cat_id` int(11) NOT NULL, //номер категории
`name` varchar(255) NOT NULL,
`img` varchar(255) NOT NULL,
`desc` text NOT NULL,
`url` text NOT NULL, //ссылка
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Форма ввода новых данных:
<form name="post news" method="post" action="add.php">
<p align="center"><font size="2" face="Verdana">Имя:<br>
<input type="text" name="name">
<br>
Описание:<br>
<input name="desc" type="text" >
<br>
Номер категории:<br>
<input name="cat_id" type="text" > <br>

<p align="center"><font size="2" face="Verdana">
<input type="submit" name="Submit" value="Добавить">
</font> </p>
</form>


Исполняемы файл add.php :
[PHP]
<?php
include "config.php";
$db = mysql_connect($db_host,$db_username,$db_password);
mysql_select_db ($db_name) or die ("Cannot connect to database");
$query = "INSERT INTO search (name, desc, cat_id)
VALUES('".$_POST['name']."','".$_POST['desc']."','".$_POST['cat_id']."')";

mysql_query($query);
echo "Новость добавлена!";
mysql_close($db);
?>
[/PHP]

config.php :
[PHP]
<?php
mysql_connect("Хост", "Имя", "Пароль")
or die("<p>Ошибка подключения к базе данных! " . mysql_error() . "</p>");

mysql_select_db("База данных") or die("<p>Ошибка выбора базы данных! ". mysql_error() . "</p>");
?>
[/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 23.7.2016, 4:08; Ответить: Den1xxx
Сообщение #2


(Banan4ik57 @ 23.7.2016, 04:52) *
mysql_connect("Хост", "Имя", "Пароль")


(Banan4ik57 @ 23.7.2016, 04:52) *
mysql_select_db("База данных")

В конфиге должны быть определены параметры подключения к БД и ничего больше:
[PHP]<?
$db_host = "localhost";
$db_username = "root";
$db_password = "";
$db_name = "test"
?>[/PHP]
Параметры подключения нужно заменить на реальные,естественно.
В остальном код вроде правильный.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banan4ik57
Banan4ik57
Topic Starter сообщение 23.7.2016, 14:28; Ответить: Banan4ik57
Сообщение #3


Не выходит( Показывает "Новость добавлена", но в таблице не происходит никаких изменений. Не понимаю в чем проблема.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 23.7.2016, 20:02; Ответить: miketomlin
Сообщение #4


(Banan4ik57 @ 23.7.2016, 16:28) *
Показывает "Новость добавлена", но в таблице не происходит никаких изменений.
Тут без вариантов, ветвлений-то никаких. Сами себе наврали в выводимом сообщении и поверили в свое вранье :rolleyes:

Если говорить в общем, основной причиной ошибок добавления записей является появление дублирующихся ключей или юников.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banan4ik57
Banan4ik57
Topic Starter сообщение 23.7.2016, 20:23; Ответить: Banan4ik57
Сообщение #5


Окей, с этим разберусь) А какой дописать код в add.php , что бы новой строке в таблице присваивалась своя уникальная ссылка типа index.php/id22 ?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 25.7.2016, 11:17; Ответить: Degradator
Сообщение #6


Ну давай смотреть
CREATE TABLE IF NOT EXISTS `search` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cat_id` int(11) NOT NULL, //номер категории
`name` varchar(255) NOT NULL,
`img` varchar(255) NOT NULL,
`desc` text NOT NULL,
`url` text NOT NULL, //ссылка
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Так, тут у нас таблица с not null полями. А что же дальше?
"INSERT INTO search (name, desc, cat_id)

Хм, чему же будет равно img и url? Очевидно что NULL. Но ведь в описании таблицы написано что это not null.

Как лечить -
Убедится в том что проблема именно в этом, выводим сообщение о ошибке при помощи mysql_error().

Добавляем в запрос другие not-null и not-autoincrement поля, и скорее всего должно работать. Если не работает - смотрим связи в таблице базы данных, может быть cat_id это какой-то идентификатор другой таблицы, и он должен как-то относится к данным из другой таблицы

ps если вдруг окажется что ты ничего не можешь сделать, но программировать очень хочется, то специально для тебя есть такой запрос - set sql_mode = ''; который позволяет пропускать null значения not-null поля
pps на самом деле не позволяет, а приводит к типу.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banan4ik57
Banan4ik57
Topic Starter сообщение 26.7.2016, 15:01; Ответить: Banan4ik57
Сообщение #7


(Degradator @ 25.7.2016, 14:17) *
Если не работает - смотрим связи в таблице базы данных, может быть cat_id это какой-то идентификатор другой таблицы, и он должен как-то относится к данным из другой таблицы

Да, так и есть.
CREATE TABLE IF NOT EXISTS `categories` (
`cid` int(11) NOT NULL AUTO_INCREMENT,
`cat_name` varchar(255) NOT NULL,
`cat_url` text NOT NULL,
PRIMARY KEY (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Как можно справиться с этой проблемой?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 26.7.2016, 17:36; Ответить: Degradator
Сообщение #8


Ну как, делаешь выборку по своим категориям, подставляешь нужный ID. По нормальному, у тебя должен быть клиент с дропдауном или аутокомплитом, где человек будет выбирать нужную ему опцию. Или сделай например дефолтную категорию с идентификатором 1, и юзай ее если другая не установлена

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
14 yaroslav89 6630 13.3.2024, 23:16
автор: spoyer_ru
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3801 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Базы данных, различной тематики, выкладываем тут.
Делимся, обмениваемся, заказываем, парсим.
12 InfoObmen 15182 4.9.2022, 2:32
автор: Галецкая
Открытая тема (нет новых ответов) Сбор Данных Услуг И Специалистов Яндекс.Услуги
2 zkalinin 2352 26.5.2022, 17:10
автор: zkalinin
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыДобавление RSS-ленты на новостные агрегаторы и блоги
4 agency 4818 14.5.2020, 15:53
автор: agency


 



RSS Текстовая версия Сейчас: 29.3.2024, 13:42
Дизайн