PDA

View Full Version : دریافت اطلاعات بصورت جیسون



hharddy
جمعه 18 تیر 1395, 23:36 عصر
سلام من برای انجام کاری نیاز دارم که یک سری از اطلاعات دیتابیس وردپرس و بصورت جیسون دریافت کنم به php انچنان وارد نیستم ولی دست و پا شکسته یه چیزی طراحی کردم که نتیجش شد بصورت زیر:



{
"ads": [
{
"id": "1",
"post_title": "\u0633\u0644\u0627\u0645 \u062f\u0646\u06cc\u0627!",
"comment_status": "open"
},
{
"id": "4",
"post_title": "\u062c\u062f\u06cc\u062f",
"comment_status": "open"
},
{
"id": "6",
"post_title": "\u0627\u0644\u0627\u0627\u0644\u0627",
"comment_status": "open"
},
{
"id": "8",
"post_title": "\u0628\u0632\u0631",
"comment_status": "open"
},
{
"id": "10",
"post_title": "\u062a\u0648\u0631\u0648\u062e\u062f\u0627 \u06a9\u0627\u0631 \u06a9\u0646",
"comment_status": "open"
}
],
"success": 1
}




مشکلی که الان دارم میخوام در ادامه این لیست مثلا بعد از کامنت استاتوس ادرس تصویر شاخص هم نمایش بده که نمیدونم چجوری این کار و انجام بدم از دوستان اگر کسی راهنمایی کنن ممنون میشم.
سورس فایل صفحه:



<?php
header( "Content-type: application/json" );
include 'config.php';
$tbl_name = "wp_posts"; $order_by = "id";
$records_limit = 100; $connect = @mysqli_connect( $hostname , $username , $password , $database );



if( $connect ) { @mysqli_query( $connect , "SET names utf8;" );
$temp1 = @mysqli_query( $connect , "SELECT (*) FROM ".$tbl_name );
$temp2 = @mysqli_fetch_row( $temp1 );
$total_records = $temp2[0];
if( isset( $_GET['page'] ) ) { $page = $_GET['page']; $offset = $page * $records_limit; } else { $page = 0; $offset = 0; } $my_query = "SELECT * FROM wp_posts where post_status = 'publish' and post_type ='post' ";
$result = @mysqli_query( $connect , $my_query ); if($result) { $response['ads'] = array(); $response['success'] = 1; while( $row = @mysqli_fetch_array( $result ) ) { $ads = array(); $ads['id'] = $row['ID']; $ads['post_title'] = $row['post_title']; $ads['comment_status'] = $row['comment_status'];

array_push( $response['ads'] , $ads ); }
} else{ $response['success'] = 0; $response['message'] = "nothing";
} echo( json_encode( $response,JSON_PRETTY_PRINT ) ); @mysqli_close($connect); } ?>

hamid-poorhashemi
شنبه 19 تیر 1395, 02:28 صبح
با سلام
شما برای پیدا کردن تصویر باید اول ایدی عکس شاخص رو که تو جدول posts هست رو پیدا کنید .
برای این کار تو جدول postmeta باید رکوردی که post_id برابر پست شماست و meta_key اون برابر _thumbnail_id هست رو پیدا کنید و با استفاده از meta_value
که ایدی عکس شاخص هست پست با این ایدی رو از جدول پست ها انتخاب کنید و ادرس تصویر رو از سلول guid بگیرید .
خدمت شما :


SELECT * FROM 'tbr_postmeta' WHERE post_id=1 AND meta_key='_thumbnail_id'

امیدوارم موفق باشید .








طراحی و برنامه نویسی سایت
romakweb.com
رماک وب (http://romakweb.com)

hharddy
شنبه 19 تیر 1395, 15:07 عصر
مرسی دوست عزیز منم از چیزی شبیه به همین استفاده کردم ولی جواب نداد ، نمیدونم شاید به شکل درستی استفاده نکردم امکانش هست بگید کجا قرار بدم یا فایل و تکمیل کنید؟

hamid-poorhashemi
یک شنبه 20 تیر 1395, 03:07 صبح
خدمت شما دوست عزیز ... فقط حواستون باشه که نام جداول رو در متغییر هایی که گفته شده قرار دهید چون که ممکنه پیشوند جدول فرق داشته باشه

کاری که انجام شده همونه که تو پست قبلی خدمتتون عرض کردم .. دوتا جدول رو با هم پیوند دادم و با استفاده از ایدی پست ، ایدی تصویر رو به دست اورده و بعد هم لینک عکس رو از guid برداشتیم.





header( "Content-type: application/json" );
include 'config.php';$tbl_name = "wp_posts";
$order_by = "id";
$records_limit = 100;
$connect = @mysqli_connect( $hostname , $username , $password , $database );
if( $connect ) {
@mysqli_query($connect, "SET names utf8;");
$temp1 = @mysqli_query($connect, "SELECT (*) FROM " . $tbl_name);
$temp2 = @mysqli_fetch_row($temp1);
$total_records = $temp2[0];
if (isset($_GET['page'])) {
$page = $_GET['page'];
$offset = $page * $records_limit;
} else {
$page = 0; $offset = 0; }
$my_query = "SELECT * FROM wp_posts where post_status = 'publish' and post_type ='post' ";
$result = @mysqli_query($connect, $my_query);
if ($result) {
$response['ads'] = array();
$response['success'] = 1;
while ($row = @mysqli_fetch_array($result)) {
$ads = array();
$ads['id'] = $row['ID'];
$ads['post_title'] = $row['post_title'];
$ads['comment_status'] = $row['comment_status'];
/******here u r******/
$id=$row['ID'];
$tb_posts_name="tbr_posts";/*set your post table name here */


$tb_postmeta_name="tbr_postmeta"; /*set your postmeta table name in this variable*/

$my_query_thumb = "SELECT * FROM ". $tb_posts_name." a join ".$tb_postmeta_name." b on b.meta_value = a.ID AND b.meta_key = '_thumbnail_id' WHERE b.post_id='".$id."' ";
$result_thumb = @mysqli_query($connect, $my_query_thumb);
$ads['image_url']=$result_thumb[0]['guid'];
/************ end of new code********/
array_push($response['ads'], $ads); } } else { $response['success'] = 0; $response['message'] = "nothing"; } echo(json_encode($response, JSON_PRETTY_PRINT)); @mysqli_close($connect);}





من کد رو تست نکردم . اگه خطایی داشت بگید که تصحیح کنم .


طراحی و برنامه نویسی سایت
romakweb.com
رماک وب (http://romakweb.com/)

hharddy
یک شنبه 20 تیر 1395, 15:26 عصر
ممنون دوست عزیز نام جداول و تغییر دادم ولی صفحه سفید خالی نمایش داده میشه چیزی داخلش نیست داخل فایل ارور لاگ این و نوشته



PHP Fatal error: Cannot use object of type mysqli_result as array in /home/loxitir/public_html/blog/post.php on line 75


خط 75ام اینه


$ads['image_url']=$result_thumb[0]['guid'];

hharddy
چهارشنبه 23 تیر 1395, 12:00 عصر
دوستان کسی کمکی از دستش بر نمیاد؟

hamid-poorhashemi
جمعه 01 مرداد 1395, 04:05 صبح
امیدوارم درست شده باشه .
این دوخط رو جایگزین اون خط که گفتید خطا میده کنید


$resu= @mysqli_fetch_row($result_thumb);
$ads['image_url']=$resu[0]['guid'];






طراحی و برنامه نویسی سایت
romakweb.com




رماک وب (http://romakweb.com/)