SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.01.2014 20:03:18

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

добавление данных в базу через форму на сайте

Помогите пожалуйста уже вся извелась а данные в базу не добавляются. Удаляються редактируються без проблем. а вод с добавлением проблема.
форма
<form action="admin.php?view=insert&t=news" method="post" enctype="multipart/form-data" id="add-edit" >
    <label><?=lang('title');?></label><input type="text" name="title" value="" size="60" /><br />
    <label><?=lang('ful_text');?></label><textarea name="ful_text" cols="55" rows="11"></textarea><br />
    <label><?=lang('keywords');?></label><textarea name="keywords" cols="44" rows="5"></textarea><br />
    <label><?=lang('description');?></label><textarea name="description" cols="44" rows="5"></textarea><br />
    <!--input type="file" name="img" /--><br /><br />
    <label><?=lang('date');?></label><input type="text" readonly="readonly" name="date" id="datepicker" value="<?=date('Y-m-d');?>" size="10" />
    <label><?=lang('time');?></label><input type="text" readonly="readonly" name="time" id="timepicker" value="<?=date('H:i');?>" size="10" /><br />
    <input type="hidden" name="lang" value="<?=$_SESSION['lang'];?>"/>
    <input type="submit" name="add" class="button" value="<?=lang('add');?>"  onclick="alert('Новость успешно добавлена!');" />
</form>

обработчик
switch($view)

case "insert":
{
        $table = $_GET['t'];
        $count = 0;
       
        foreach($_POST as $ArrKey => $ArrStr)
        {
            $row[$count] = $ArrKey;
            $data[$count] = "'".$_POST[$ArrKey]."'";
            $count++;
        }
        unset($row[$count-1]);
        unset($data[$count-1]);
       
        insert_data($table, $row, $data);
        header('Location: admin.php?view='.$table);
   
    break;
}
функция:
function insert_data($table, $row, $data)
    {
        $row = implode(',',$row);
        $data = implode(',',$data);
        db_connect();
       
        mysql_query("INSERT INTO $table ($row) VALUES($data) ");
    }

За рание благодарна.

Неактивен

 

#2 08.01.2014 20:46:54

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: добавление данных в базу через форму на сайте

Перед строкой
mysql_query("INSERT INTO $table ($row) VALUES($data) ");
добавьте строку
echo "INSERT INTO $table ($row) VALUES($data) ";
и покажите, что вывелось.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 08.01.2014 22:08:09

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

INSERT INTO news (title,ful_text,keywords,description,date,time,lang) VALUES('xxxxxxxxxxxxxxxxxxx','xxxxxxxxxxxxxxxxxxxxxxx','xxxxxxxxxxxxxxxxx','xxxxxxxxxxxxxxxxxxxxxxx','2014-01-08','20:00','ru')
Warning: Cannot modify header information - headers already sent by (output started at D:\AppServ\www\site_ayaz\database\admin_function.php:8) in D:\AppServ\www\site_ayaz\admin.php on line 92


вот что вышло все правельно но данные не добавляются

Неактивен

 

#4 08.01.2014 22:12:41

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: добавление данных в базу через форму на сайте

Да, запрос выглядит правдивым.
Что возвращает функция mysql_query, которая добавляет данные в базу с помощью этого запроса? И приведите результат запроса
SHOW CREATE TABLE `news`;


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 08.01.2014 22:27:36

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

INSERT INTO news (title,ful_text,keywords,description,date,time,lang) VALUES('nazvanie','text','kluchevie slova','meta','2014-01-08','20:25','ru')

Неактивен

 

#6 08.01.2014 22:29:50

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

может последовательнасть неправельная?

Неактивен

 

#7 08.01.2014 22:32:36

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: добавление данных в базу через форму на сайте

Последовательность чего может быть неправильной?
Приведите результат запроса
SHOW CREATE TABLE `news`;
и попробуйте продиагностировать по тому же принципу, который представлен здесь.
То есть проверяем на ошибки абсолютно все mysql-функции в php-скриптах, и если что-то
не проходит, то смотрим, что вернула функция mysql_error.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#8 08.01.2014 22:45:41

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

Table     Create Table
news     CREATE TABLE `news` (
`id` int(11) NOT NULL auto...

Неактивен

 

#9 08.01.2014 22:47:37

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

SHOW CREATE TABLE `news`;
выдала только это
Table     Create Table
news     CREATE TABLE `news` (
`id` int(11) NOT NULL auto...

Неактивен

 

#10 08.01.2014 22:48:22

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: добавление данных в базу через форму на сайте

Результат приведен не полностью. Структура таблицы не заканчивается многоточием smile.
А
describe `news`
что возвращает?
Ну и воспользуйтесь рекомендациями.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#11 08.01.2014 22:56:50

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

function db_connect()
    {
        $host = "localhost";
        $user = "svit";
        $pswd = "141414";
        $db = "ayaz";
       
        $connection = mysql_connect($host, $user, $pswd);
        mysql_query("SET NAMES 'utf8'") or die("Can't set charset");
        if(!$connection || !mysql_select_db($db, $connection))
        {
            return false;
        }
        return $connection;
    }

вот моё соединение с базой

Неактивен

 

#12 08.01.2014 22:59:39

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

да вы правы вот полностью
CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(100) NOT NULL,
`title_url` varchar(100) NOT NULL,
`ful_text` text NOT NULL,
`img` varchar(100) NOT NULL,
`keywords` text NOT NULL,
`description` varchar(160) NOT NULL,
`date` date NOT NULL,
`time` time NOT NULL,
`views` int(10) NOT NULL default '0',
`lang` varchar(2) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=utf8

Неактивен

 

#13 08.01.2014 23:02:05

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

describe 'news'

Развернутое отображение данных     Field     Type     Null     Key     Default     Extra
    Изменить         id     int(11)     NO     PRI     NULL     auto_increment
    Изменить         title     varchar(100)     NO           NULL     
    Изменить         title_url     varchar(100)     NO           NULL     
    Изменить         ful_text     text     NO           NULL     
    Изменить         img     varchar(100)     NO           NULL     
    Изменить         keywords     text     NO           NULL     
    Изменить         description     varchar(160)     NO           NULL     
    Изменить         date     date     NO           NULL     
    Изменить         time     time     NO           NULL     
    Изменить         views     int(10)     NO           0     
    Изменить         lang     varchar(2)     NO           NULL     

возратила .

Неактивен

 

#14 08.01.2014 23:11:35

svitlana
Участник
Зарегистрирован: 08.01.2014
Сообщений: 10

Re: добавление данных в базу через форму на сайте

просто добавление написала проблем нет добавляет. А в массивах по-чемуто  не хочит.
Я б на курсы пошла но живу в Турции Анталии а здесь все на турецком. Вот и занимаюсь самоизучением.

Неактивен

 

#15 09.01.2014 08:49:01

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: добавление данных в базу через форму на сайте

Уже ближе к истине!

В структуре таблицы есть поле title_url, при этом это поле NOT NULL, то есть оно обязательно должно принимать какое-то значение.

CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(100) NOT NULL,
`title_url` varchar(100) NOT NULL,
`ful_text` text NOT NULL,
`img` varchar(100) NOT NULL,
`keywords` text NOT NULL,
`description` varchar(160) NOT NULL,
`date` date NOT NULL,
`time` time NOT NULL,
`views` int(10) NOT NULL default '0',
`lang` varchar(2) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;

Вы же в запросе

INSERT INTO news (title,ful_text,keywords,description,date,time,lang) VALUES('nazvanie','text','kluchevie slova','meta','2014-01-08','20:25','ru');

его значение не указываете, поэтому MySQL совершенно справедливо на это ругается,
возвращая
Field 'title_url' doesn't have a default value

То есть Вам нужно в коде модифицировать запрос так, чтобы поле title_url задавалось.
Как-то так:

INSERT INTO news (title,title_url,ful_text,keywords,description,date,time,lang) VALUES('nazvanie','ЗДЕСЬ_ЗНАЧЕНИЕ_TITLE_URL','text','kluchevie slova','meta','2014-01-08','20:25','ru');

Также можно сделать это поле необязательным (убрать аттрибут NOT NULL), или задать ему значение по умолчанию - тогда запрос и в текущем виде должен проходить.

Для диагностики - рекомендую заменить строку
mysql_query("INSERT INTO $table ($row) VALUES($data) ");
на
mysql_query("INSERT INTO $table ($row) VALUES($data) ") or die (mysql_error());

Так сразу будете получать ошибку.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#16 09.01.2014 11:43:45

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: добавление данных в базу через форму на сайте

Рекомендую использовать Удобные функции PHP для работы с MySQL

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson