質問を短くする方法がわからないので、私の悪いタイトルで本当に申し訳ありません。今試していることで以前は少し助けられましたが、今はまた行き詰まり、箱から出られませんでした。誰かが私に手を差し伸べてくれると助かります。
コードは少し長すぎるので、文言だけでうまくいけば、私が何を望んでいるのかがわかると思います。
わかりましたので、左右のラジオボタンを付けてフォームを作成し、人々が選択して送信できるようにします。次に、投票数/投票の合計を使用して、円グラフに入力しました。次に、誰も左/右/上に投票しなかった場合、またはそのうちの1つがまだ投票されていない場合、データがdata.jsonファイルにさえないため、エラーが発生することに気付きました。
したがって、値/データがdata.jsonにまだない場合、特定のオプション(左/右/上)を0にするにはどうすればよいですか?
私の悪い英語で申し訳ありませんが、私が尋ねようとしていることを理解していただければ幸いです.....
これが私のコードです....もちろん、本文、htmlタグなどの投稿はスキップしました...
私のindex.phpで
<form action="store.php" method="post">
<?php
$music_type = array("pop", "rock", "metallic");
foreach($music_type as $type)
{
echo $type . '<input type="radio" name="type" value='. $type . '>' . '<br>' . PHP_EOL;
}
?>
私のstore.phpで
<?php
$file_handle = fopen('data.json', 'a');
if($file_handle) {
fwrite(
$file_handle,
json_encode($_POST).PHP_EOL
);
fclose($file_handle);
}
else {
echo 'Error opening data file.';
}
$file = file('data.json'); // each line gets added to the $file array
$votes = array(); // initiate $votes to an array
foreach($file as $line)
{
// json decode current line
$vote = json_decode($line, true);
// use the vote as the key
$key = $vote['type'];
// check if current vote exits. If it does increment vote by 1
if(isset($votes[ $key ]))
{
$votes[ $key ]++;
}
// vote doesn't exist yet. Add vote to votes (creates new key). Initiate vote with 1
else
{
$votes[ $key ] = 1;
}
}
echo "<h1>Vote Results</h1>";
foreach($votes as $vote => $count)
{
echo "<b>$vote</b> has $count votes<br />";
}
$sum = $votes['metallic'] + $votes['pop'] + $votes['rock'];
$circle_degree = 360;
$metallic_pie = $votes['metallic'] / $sum * $circle_degree;
$pop_pie = $votes['pop'] / $sum * $circle_degree;
$rock_pie = $votes['rock'] / $sum * $circle_degree;
?>
<canvas id="piechart1" width="400" height="400"></canvas>
<script>
piechart("piechart1", ["cyan", "yellow", "green"], [ <?php echo $metallic_pie;?>,
<?php echo $pop_pie;?>,
<?php echo $rock_pie;?>]);
</script>
私のdata.jsonだけで言ってみましょう
{"type":"rock"}
{"type":"metallic"}
{"type":"metallic"}
これは有効なjsonではないと言う人もいますが、以前の投稿から、チェックボックスなどの代わりにラジオを使用しているため、誰かが私に言ったと思いますが、私の本当の質問は、私のjsonにはこれらの {"type": "rock"} {"type":"metallic"} が存在し、{"type":"pop"} ではありません。値が 0 の pop を作成するにはどうすればよいですか。{"type":"pop"} がなくてもデータに存在します。 json php は json 内で何もリコールしていません。
私の質問が何であるかを理解していただければ幸いです。また、私の貧弱な説明と英語で本当に申し訳ありません