@AFI19

Скрипт не добавляет новость в БД, в чем проблема?

Добрый день! Написал скрипт для добавление новостей в БД, но он не работает и ошибки не отображает. Подключение к БД работает, в пост данные передаются и их можно вывести.Помогите пожалуйста.

Скрипт
<?php
include ("db.php");

class News extends DB {
	public $title;
	public $content;
	public $res_link;
	public $res_name;
	public $date;
	public $category;
	public $try_connect;
	public $update;

	public function __construct(Array $a) {
		$this->title = $a['title'];
		$this->content = $a['content'];
		$this->category = $a['category'];
		$this->res_link = $a['resource_link'];
		$this->res_name = $a['resource_name'];
		$this->date = ('Y-m-d');
		$this->try_connect = self::obj()->connect();

	}

	public function addNews() {
		$new_news = "INSERT INTO `news` VALUES ('', '$this->title', '$this->content','$this->category', '$this->date', '$this->res_name', '$this->res_link')";
		$this->update = $this->try_connect->exec($new_news);
	}
	
	public static function getNews($id) {
		$cat_news = "SELECT * FROM `news` WHERE `news`.`category` = $id";
		$getnews = DB::obj()->connect()->query($cat_news);
			if(is_null($getnews)) {
				return [];
			}
		return $getnews->fetchALL(PDO::FETCH_ASSOC);
	}

	public static function getNewsById($id) {
		$id_news = "SELECT * FROM `news` WHERE `news`.`id` = $id";
		$getnews_id =DB::obj()->connect()->query($id_news);
			if(is_null($getnews)) {
				return [];
			}
		return $getnews->fetchALL(PDO::FETCH_ASSOC);
	}
}
$new= new News($_POST);
$new->addNews();
//header("Location: http://site.loc/add_news_form.html");


Форма ввода
<div class="wrap-admin">
<div class="addnews">
<form action="add_news_script.php" method="POST">
	<p>Введите заголовок</p>
	<input name="title" type="text" size="60">
	<p>Введите ссылку на источник</p>
	<input name="resource_link" type="text" size="60">
	<p>Введите название сайта-источника</p>
	<input name="resource_name" type="text" size="60">
	<p>Введите название рубрики</p>
	<select name="category">
		<option value="1">Политика</option>
		<option value="2">Экономика</option>
		<option value="3">Культура</option>
		<option value="4">Спорт</option>
	</select>
	<p>Введите текст новости</p>
	<textarea name="content" cols="60" rows="40"></textarea>
	
	<input type="submit" value="Опубликовать новость">
</form>
</div>
<div class="addnews">
	<form action="#" method="POST">
		<p>Введите название рубрики</p>
		<input name="category" type="text">
		<input type="submit" value="Создать рубрику">
	</form>
</div>
</div>
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 3
dimonchik2013
@dimonchik2013
non progredi est regredi
заполни значениями

public function __construct(Array $a) {
    $this->title = $a['title'];
    $this->content = $a['content'];
    $this->category = $a['category'];
    $this->res_link = $a['resource_link'];
    $this->res_name = $a['resource_name'];
    $this->date = ('Y-m-d');
    $this->try_connect = self::obj()->connect();

  }


типа

public function __construct(Array $a) {
    $this->title = 'ебаный';
    $this->content = 'скрипт';
    $this->category = 'который';
    $this->res_link = 'нихуя';
    $this->res_name = 'не работает';
    $this->date = ('Y-m-d');
    $this->try_connect = self::obj()->connect();

  }


и выполни

попадет в базу?
Ответ написан
INSERT INTO `news` (title,content,category,date, res_name, res_link) VALUES ('', '$this->title', '$this->content','$this->category', '$this->date', '$this->res_name', '$this->res_link')


В первых скобках название полей, во вторых сама инфа, в которая будет записываться в перечисленные поля. важно соблюдать последовательность
Ответ написан
Комментировать
mahoho
@mahoho
Full stack certified PHP developer.
Если я все правильно понимаю, то $stmt = DB::obj()->connect()->query($query);
Возвращает объект PDOStatement. Выполните INSERT через этот метод, а потом посмотрите, что будет лежать в $stmt->errorInfo()[2]. Если INSERT не срабатывает, то значит в запросе ошибка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы