Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как подключить и вывести доп поля?

Как подключить и вывести доп поля?


     24.09.2016    Общие вопросы по PHP, MySQL    351

вопрос
Друзья, пытаюсь разобраться с JSON и MySQL
Есть файл post.php с вот таким содержанием:

<?php

$response = array();

require 'db_connect.php';

$db = new DB_CONNECT();

$result = mysql_query("SELECT *FROM dle_post") or die(mysql_error());

if (mysql_num_rows($result) > 0) {
    $response["dle_post"] = array();

    while ($row = mysql_fetch_array($result)) {
        $dle_post = array();
            $dle_post["id"] = $result["id"];
            $dle_post["title"] = $result["title"];
            $dle_post["autor"] = $result["autor"];
            $dle_post["autor"] = $result["autor"]; ---------- ВОТ ЗДЕСЬ НУЖНО ВЫВЕСТИ ДОП ПОЛЕ "poster"
            $dle_post["autor"] = $result["autor"]; ---------- ВОТ ЗДЕСЬ НУЖНО ВЫВЕСТИ ДОП ПОЛЕ "poster2"
            $dle_post["autor"] = $result["autor"]; ---------- ВОТ ЗДЕСЬ НУЖНО ВЫВЕСТИ ДОП ПОЛЕ "poster3"
            $dle_post["short_story"] = $result["short_story"];

        array_push($response["dle_post"], $dle_post);
    }
    $response["success"] = 1;

    echo json_encode($response);
} else {
    $response["success"] = 0;
    $response["message"] = "No dle_post found";

    echo json_encode($response);
}
?>

сразу хочу сказать что файл находится на поддомене
Скрипт выводит данные с БД в формате JSON

Как подключить сюда доп поля и вывести их?

Ответил: Gameer


<?php
class PDODB extends PDO
{
    private $count_row = 0;
    
    // Конструктор
    // Принимает массив данных для подключения к базе через PDO
    public function __construct($data)
    {
        $dns = $data["engine"].':dbname='.$data["dbname"].";host=".$data["host"];
        try
        {
            parent::__construct($dns, $data["user"], $data["password"]);
        }
        catch(PDOException $ex)
        {
            echo $ex->getMessage();
            die();
        }
    }
    
    // Функция возвращает количество затронутых строк
    public function r_count_row()
    {
        return intval($this->count_row);
    }
    
    // @$sql - строка запроса
    // @$params - массив данных
    // Функция возвращает последний AUTO_INCREMENT
    public function insert($sql, array $params = array())
    {
        $pdo_p = $this->prepare($sql);
        if($pdo_p->execute($params)) return $this->lastInsertId();
        return null;
    }
    
    // @$sql - строка запроса
    // @$params - массив данных
    // Функция возвращает количество затронутых строк
    public function update($sql, array $params = array())
    {
        $pdo_p = $this->prepare($sql);
        if($pdo_p->execute($params)) return $pdo_p->rowCount();
        return null;
    }
    
    // @$sql - строка запроса
    // @$params - массив данных
    // Функция возвращает массивы в ассоциативном виде
    public function select($sql, array $params = array())
    {
        $pdo_p = $this->prepare($sql);
        if($pdo_p->execute($params))
        {
            $this->count_row = $pdo_p->rowCount();
            return $pdo_p->fetchAll(parent::FETCH_ASSOC);
        }
        return null;
    }
    
    // @$sql - строка запроса
    // @$params - массив данных
    // Функция возвращает массив в ассоциативном виде
    public function select_one($sql, array $params = array())
    {
        $pdo_p = $this->prepare($sql);
        if($pdo_p->execute($params))
        {
            $this->count_row = $pdo_p->rowCount();
            return $pdo_p->fetch(parent::FETCH_ASSOC);
        }
        return null;
    }
}
function xfieldsdataload($id) {
    
    if( $id == "" ) return false;
    
    $xfieldsdata = explode( "||", $id );
    foreach ( $xfieldsdata as $xfielddata ) {
        list ( $xfielddataname, $xfielddatavalue ) = explode( "|", $xfielddata );
        $xfielddataname = str_replace( "&#124;", "|", $xfielddataname );
        $xfielddataname = str_replace( "__NEWL__", "\r\n", $xfielddataname );
        $xfielddatavalue = str_replace( "&#124;", "|", $xfielddatavalue );
        $xfielddatavalue = str_replace( "__NEWL__", "\r\n", $xfielddatavalue );
        $data[$xfielddataname] = $xfielddatavalue;
    }
    return $data;
}
$pdo = new PDODB(array("engine" => "mysql", "dbname" => "work", "host" => "localhost", "user" => "root", "password" => ""));
$response = array();
$result = $pdo->select("SELECT * FROM dle_post");
if ($result !== null) {
    $response["dle_post"] = array();
    foreach($result as $row)
    {
        $xf = xfieldsdataload($row["xfields"]);
        $product = array();
        $product["id"] = $row["id"];
        $product["title"] = $row["title"];
        $product["poster"] = $xf["poster"]; //--------------------------------------- Сюда доп поле
        $product["updated_at"] = $row["updated_at"];
        $response["dle_post"][] = $product;
    }
    $response["success"] = 1;
    echo json_encode($response);
} else {
    $response["success"] = 0;
    $response["message"] = "No products found";
    echo json_encode($response);
}
?>

Комментарии пользователей (2)

Ferrum_NST
36 | 6

Ferrum_NST - 24 сентября 2016 18:59 - Юзер

Ребята, помогите. очень нужно

Ferrum_NST
36 | 6

Ferrum_NST - 25 сентября 2016 11:42 - Юзер

Спасибо, работает

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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