0

I'm trying to pull in the JSON data from my API, and get the data out of each key to display nicely in HTML/CSS. Right now having trouble getting the data.

This is my db object:

[ { "_id":"54bd5fbb646174009a450001", "productname":"Product 1", "overview":"Overview Title", "benefits": [ "List item 1", "List item 2", "List item 3" ] } ] 

I found this answer here, and the var_dump is working, it displays my db object on the page. This is my updated wordpress php plugin:

<?php add_shortcode('mis', function($atts, $data) { $service_url = 'http://local.web.tt.com:8615/api/users'; // Initiate curl $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,$service_url); $result=curl_exec($ch); curl_close($ch); // Will dump a beauty json :3 // var_dump(json_decode($result, true)); $data = (json_decode($result, true)); var_dump($data); $data = add_shortcode ( array( 'name' => 'name', 'overview' => 'overview', 'benefits' => 'benefits' ), $data ); extract($data); $content .=' <style>li { margin-left: 20px; }</style> <h2>$name</h2> <p>$overview</p> <ul> <li>$data["benefits"][0]</li> <li>$data["benefits"][2]</li> </ul>'; return $content; }); 

However I'm having trouble getting the data out:

enter image description here

This is where my problem is:

$data = (json_decode($result, true)); var_dump($data); $data = add_shortcode ( array( 'name' => 'name', 'overview' => 'overview', 'benefits' => 'benefits' ), $data ); extract($data); $content .=' <style>li { margin-left: 20px; }</style> <h2>$name</h2> <p>$overview</p> <ul> <li>$data["benefits"][0]</li> <li>$data["benefits"][1]</li> </ul>'; return $content; 

How do I get the data from the var_dump, into the right keys/vars in my $content variable?

1 Answer 1

3

This section of code is quite strange - what is it intended to do?

$data = add_shortcode ( array( 'name' => 'name', 'overview' => 'overview', 'benefits' => 'benefits' ), $data ); extract($data); 

To access your data you can simply do

$data[0]['productname'] 

You also have your output variables inside a string (inside ''). To bring your data in to the output try:

$data = (json_decode($result, true)); var_dump($data); $product = $data[0]; $content = '<style>li { margin-left: 20px; }</style>'; $content .='<h2>' . $product['productname'] . '</h2> <p>' . $product['overview'] . '</p> <ul> <li>' . $product["benefits"][0] . '</li> <li>' . $product["benefits"][1] . '</li> </ul>'; 

Or with a loop:

$data = (json_decode($result, true)); $content = '<style>li { margin-left: 20px; }</style>'; foreach($data as $product) { $content .='<h2>' . $product['productname'] . '</h2> <p>' . $product['overview'] . '</p> <ul>'; foreach($product['benefits'] as $benefit) { $content .= '<li>' . $benefit . '</li>'; } $content .= '</ul>'; } 
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks LOL! This is the most PHP code I've touched before :D

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.