@AFI19

Не передается переменная в метод, в чем проблема?

Добрый день! Мне нужно вывести данные(новости) с бд по id, который передается из вне( при переборе масива с другой таблицы(категории)). На странице результат данные таблицы выводятся, но после id не передается в метод. И вылазит ошибка . В чем проблема?

Fatal error: Call to a member function fetchALL() on boolean in C:\OpenServer\OpenServer\domains\site.loc\add_news_script.php on line 32
html форма
<!DOCTYPE html>
<html>
<head>
    <title>My blog</title>
    <meta charset="utf-8">
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
    <div class="header">
        <div class="container">
            <div class="logo">
               <!--<img src="css/images/logo.svg" height="210" width="50">-->
            </div>
            <div class="search">
                <form class="search-form">
                    <input type="text" placeholder="Search NewsRoom">
                    <button type="submit" class="search-btn">Search</button>
                </form>
            </div>
            <div class="vxod">
                <form name="authentication" method="POST" action="authentication_script.php">
                    <input type="text" name="login" placeholder="LOGIN">
                    <input type="password" name="password">
                    <input type="submit" value="Войти">
                </form>
            </div>
            <div class="reg">
                <button><a href="registration_form.html">Регистрация</a></button>
            </div>
        </div>
    </div>
    <div class="nav">
        <div class="menu">
            <ul class="category">
                <?php

include ("add_category_script.php");


$r = Category::getCategory();

foreach ($r as $v) {
    echo "<li>";
    echo $v['title'];
    echo "</li>";
} 
?>
            </ul>
        </div>
    </div>
    <div class="main">
        <div class="container">
            <?

include("add_news_script.php");

foreach ($r as $v) {
echo "<div class=rubrik><h2>".$v['title']."</h2></div>";
    //var_dump($v);

    $n = News::getNews($v['id']);
    foreach ($n as $k) {
    //var_dump($n);
    //var_dump($k);
    echo "<div class=title>";
        echo "<a href={$k['resource_link']} target=_blank><h3>{$k['title']}</h3></a>";
        echo 
            "<div class=part-content>".mb_substr($k['content'],0,80)."<a href=news.php?id={$k['id']}><span class=readmore>...Читать на сайте и комментировать...</span></a>
            </div>";
        echo "";
    echo "</div>";
    }

}

?>
        </div>
    </div>
</body>
</html>


пхп часть

<?php
include_once ("db.php");

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

	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 = date ('Y-m-d');
	}

	public function addNews() {                    
		$new_news = "INSERT INTO `news` (`id`, `title`, `content`, `category_id`, `date`, `resource_name`, `resource_link`) VALUES ('', '$this->title', '$this->content','$this->category', '$this->date', '$this->res_name', '$this->res_link')";
		$update = self::obj()->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");
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
mendler
@mendler
Senior Web Developer
Возможно не возвращается id в методе $r = Category::getCategory();, а только title.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы