0

私がしようとしているのは、3 つのエンジェル整数を入力して送信できるページがあることです。送信後、データは 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>';

これにより、angel 1 : ## が出力されます。ここで、## は入力された角度などです。また、角度を示す単純な 2D 円グラフも作成しました。

私が抱えている問題は、別の 3 つの角度を送信すると、データベースに 2 つ以上ある場合でも、入力された最新の角度のみが結果に表示されることです。

たとえば、私のデータベースでは見ることができます

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

しかし、結果は3つすべてを印刷するのではなく、30 60と180のみを印刷します。3つのデータすべて、または少なくとも3つの角度セットすべてを印刷する方法を教えてください。すべての円グラフをすべての角度で印刷できることがわかったら、現在は最新の角度と円グラフだけが印刷されると思います。

ありがとうございました〜

PS

私は非常に愚かで、これらのエコーを foreach ループに入れませんでしたが、他の質問は、以下のコードを foreach ループに入力する必要があると思いますが、タグが非常に多いため、それらすべてを入力する方法はありますか? echo canvas id="piechart1" 何とか何とか何とか何とかして少しずつ行うのではなく、foreachループに入れますか?

<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>
4

1 に答える 1

0

for3 つの結果は範囲外にあるため、出力されません。すべてのループを置き換える$lineため、最後のもののみを出力します。$linefor

それを修正しました。

<?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>
于 2013-10-04T03:36:30.567 に答える