2013-10-04 39 views
0

我在努力的是我有一个页面,您可以输入3个天使整数并提交。 后您提交的数据会使用JSON编码如何打印出数据库中的所有certian json数据?

{"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被保存在数据库:##其中##是输入的角度等。 我也做了一个简单的二维饼图,显示角度。

我遇到的问题是,如果我提交另外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> 

回答

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 
} 

可以存储linearray然后当你想要打印自己的。例如。

<?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> 
+0

OMG!为什么我有这个简单的错误!谢谢......但还有一件事是,我做的饼图是使用canvas和脚本html标签,我相信我需要将这些标签实现到for循环中,以便我的饼也可以打印出来。我怎样才能实现LOTS标签到PHP一次?我现在将发布我的脚本作为画布。 – WXR

+0

我刚更新了我的答案。请看一下。 – Chokchai

+0

这太棒了!啊....我从来没有新的,我可以把foreach循环放在一行,循环仍然会运行,直到你把'<?php endforeach; ?>'结束它。非常感谢〜!今天又学到了一件新事物。 – WXR