Задавайте вопросы, мы ответим
Вы не зашли.
Помогите пожалуйста уже вся извелась а данные в базу не добавляются. Удаляються редактируються без проблем. а вод с добавлением проблема.
форма
<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) ");
}
За рание благодарна.
Неактивен
Перед строкой
mysql_query("INSERT INTO $table ($row) VALUES($data) ");
добавьте строку
echo "INSERT INTO $table ($row) VALUES($data) ";
и покажите, что вывелось.
Неактивен
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
вот что вышло все правельно но данные не добавляются
Неактивен
Да, запрос выглядит правдивым.
Что возвращает функция mysql_query, которая добавляет данные в базу с помощью этого запроса? И приведите результат запроса
SHOW CREATE TABLE `news`;
Неактивен
INSERT INTO news (title,ful_text,keywords,description,date,time,lang) VALUES('nazvanie','text','kluchevie slova','meta','2014-01-08','20:25','ru')
Неактивен
может последовательнасть неправельная?
Неактивен
Последовательность чего может быть неправильной?
Приведите результат запроса
SHOW CREATE TABLE `news`;
и попробуйте продиагностировать по тому же принципу, который представлен здесь.
То есть проверяем на ошибки абсолютно все mysql-функции в php-скриптах, и если что-то
не проходит, то смотрим, что вернула функция mysql_error.
Неактивен
Table Create Table
news CREATE TABLE `news` (
`id` int(11) NOT NULL auto...
Неактивен
SHOW CREATE TABLE `news`;
выдала только это
Table Create Table
news CREATE TABLE `news` (
`id` int(11) NOT NULL auto...
Неактивен
Результат приведен не полностью. Структура таблицы не заканчивается многоточием .
А
describe `news`
что возвращает?
Ну и воспользуйтесь рекомендациями.
Неактивен
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;
}
вот моё соединение с базой
Неактивен
да вы правы вот полностью
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
Неактивен
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
возратила .
Неактивен
просто добавление написала проблем нет добавляет. А в массивах по-чемуто не хочит.
Я б на курсы пошла но живу в Турции Анталии а здесь все на турецком. Вот и занимаюсь самоизучением.
Неактивен
Уже ближе к истине!
В структуре таблицы есть поле 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());
Так сразу будете получать ошибку.
Неактивен
Рекомендую использовать Удобные функции PHP для работы с MySQL
Неактивен