如何在数据库中打印出所有特定的json数据?

时间:2013-10-04 03:21:07

标签: database json angle

我正在尝试的是我有一个页面,您可以输入3个天使整数并提交。 提交数据后,将使用json encode

将数据保存在数据库中
{"angle1":"60","angle2":"60","angle3":"90","submit":"Submit"}

以上是保存在行中的内容

我用过

<?php
$sql = "SELECT * FROM wp_options WHERE option_name LIKE 'angle%' ORDER BY option_name";
$options = $wpdb->get_results($sql);
foreach ( $options as $option )
{
    echo '<p><b>'.$option->option_name.'</b> = '
         .esc_attr($option->option_value).'</p>'.PHP_EOL;

    $line = json_decode($option->option_value, true);
}
echo '<span style="color:#f00;">'.'Angel 1 : '.$line['angle1'].'</span><br>';
echo '<span style="color:#0f0;">'.'Angel 2 : '.$line['angle2'].'</span><br>';
echo '<span style="color:#00f;">'.'Angel 3 : '.$line['angle3'].'</span><br>';

打印出天使1:##,其中##是输入的角度,依此类推。 我还制作了一个简单的2d饼图,显示了角度。

我遇到的问题是,如果我提交另外3个角度,那么即使数据库中有两个或更多,我的结果也会显示输入的最近角度。

例如在我的数据库中,我可以看到

{"angle1":"60","angle2":"60","angle3":"90","submit":"Submit"}
{"angle1":"60","angle2":"60","angle3":"180","submit":"Submit"}
{"angle1":"30","angle2":"60","angle3":"180","submit":"Submit"}

但结果只打印30 60和180而不是打印所有三个。 任何人都介意我如何打印所有三个数据或至少所有三组角度。我相信一旦我想出来,我就可以打印出所有角度的所有饼图,而不是现在只打印最近的角度和饼图。

非常感谢大家〜

P.S。

我是如此愚蠢我没有把这些回声放到foreach循环中但是我的另一个问题是我相信我需要将我的代码输入到foreach循环中但是有很多标签有一种方法可以将所有这些输入到foreach循环中,而不是做一些像echo canvas id =“piechart1”blah blah blah并一点一点地做的事情?

<canvas id="piechart1" width="100" height="100"></canvas>
<script src="<?php echo get_stylesheet_directory_uri().'/piechart.js'; ?>"></script>
<script>
    var chartId = "piechart1";
    var colours = ["#f00", "#0f0", "#00f"];
    var angles =  [<?php echo $line['comp2052_angle1'].','.
                              $line['comp2052_angle2'].','.
                              $line['comp2052_angle3'];
                   ?>];
    piechart(chartId, colours, angles);
</script>

1 个答案:

答案 0 :(得分:0)

它不会打印3个结果,因为您将它们排除在for范围之外。它只打印上一个$line,因为$line将替换每个for个循环。

修复它。

<?php
$sql = "SELECT * FROM wp_options WHERE option_name LIKE 'angle%' ORDER BY option_name";
$options = $wpdb->get_results($sql);
foreach ( $options as $option )
{
    echo '<p><b>'.$option->option_name.'</b> = '
         .esc_attr($option->option_value).'</p>'.PHP_EOL;

    $line = json_decode($option->option_value, true);

    // put the echo in for scope
    echo '<span style="color:#f00;">'.'Angel 1 : '.$line['angle1'].'</span><br>';
    echo '<span style="color:#0f0;">'.'Angel 2 : '.$line['angle2'].'</span><br>';
    echo '<span style="color:#00f;">'.'Angel 3 : '.$line['angle3'].'</span><br>';
    echo '<hr/>'; // to separate each data
} 

您可以将line存储到array,然后在需要时打印。例如。

<?php
$sql = "SELECT * FROM wp_options WHERE option_name LIKE 'angle%' ORDER BY option_name";
$options = $wpdb->get_results($sql);

// added to stored line
$line = array();
foreach ( $options as $option )
{
    echo '<p><b>'.$option->option_name.'</b> = '
         .esc_attr($option->option_value).'</p>'.PHP_EOL;

    $line[] = json_decode($option->option_value, true);
} 

然后。你可以用漂亮的方式混合html和php,如下面的代码。

<?php foreach($line as $i => $l): ?>
<canvas id="piechart<?php echo $i?>" width="100" height="100"></canvas>
<script>
    var chartId = "piechart<?php echo $i?>";
    var colours = ["#f00", "#0f0", "#00f"];
    var angles =  [<?php echo $l['angle1'].','.
                              $l['angle2'].','.
                              $l['angle3'];
                   ?>];
    piechart(chartId, colours, angles);
</script>
<?php endforeach; ?>

将它放在上面代码之前的html中的任何位置

<script src="<?php echo get_stylesheet_directory_uri().'/piechart.js'; ?>"></script>