質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1000閲覧

htmlのphp部分からPOSTで受け取った配列をjsに格納する際に思うように動作しません。

daiki__1019

総合スコア17

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/01/10 17:20

前提・実現したいこと

htmlの入力フォームから外部のjsファイルに配列を受け渡しはできるのですが、思うような動作をしてくれません。

該当のソースコード

html

1<?php 2if(isset($_POST['num_parts'])){ 3 $nps = $_POST['nums_parts']; 4 $np = $_POST['num_part']; 5 include('./RaderChart.php'); 6} 7 ?> 8<form action="test.php" method="post"> 9 <div class="movie_title1"> 10 <input type="checkbox" name="nums_parts[]" value="0">0 11 <input type="checkbox" name="nums_parts[]" value="1">1 12 <input type="checkbox" name="nums_parts[]" value="2">2 13 <input type="checkbox" name="nums_parts[]" value="3">3 14 <input type="checkbox" name="nums_parts[]" value="4">4 15 <div class="movie_janle1"> 16 <input type="checkbox" name="num_part[]" value="0">国語 17 <input type="checkbox" name="num_part[]" value="1">理科 18 <input type="checkbox" name="num_part[]" value="2">社会 19 <input type="checkbox" name="num_part[]" value="3">音楽 20  <input type="checkbox" name="num_part[]" value="4">体育 21 <input type="submit" value="送信する"> 22</form>

js

1<canvas id="myRaderChart"></canvas> 2<!-- CDN --> 3<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.js"></script> 4<script> 5 var ctx = document.getElementById("myRaderChart"); 6 var myRadarChart = new Chart(ctx, { 7 type: 'radar', 8 data: { 9<!-- labels: ["英語", "数学", "国語", "理科", "社会"]元のプログラム --> 10 labels: ["<?php 11 foreach($np as $nps){ 12 echo "$nps"; 13 echo ","; 14 } 15 ?>"], 16 datasets: [{ 17 label: '<?php echo $nps[0] ?>', 18 data: [92, 72, 86, 74, 86], 19 backgroundColor: 'RGBA(225,95,150, 0.5)', 20 borderColor: 'RGBA(225,95,150, 1)', 21 borderWidth: 1, 22 pointBackgroundColor: 'RGB(46,106,177)' 23 }, { 24 label: 'Bさん', 25 data: [73, 95, 80, 87, 79], 26 backgroundColor: 'RGBA(115,255,25, 0.5)', 27 borderColor: 'RGBA(115,255,25, 1)', 28 borderWidth: 1, 29 pointBackgroundColor: 'RGB(46,106,177)' 30 }] 31 }, 32 options: { 33 title: { 34 display: true, 35 text: '試験成績' 36 }, 37 scale: { 38 ticks: { 39 suggestedMin: 0, 40 suggestedMax: 100, 41 stepSize: 10, 42 callback: function(value, index, values) { 43 return value + '点' 44 } 45 } 46 } 47 } 48 }); 49</script>

試したこと

参考サイト
https://qiita.com/Haruka-Ogawa/items/59facd24f2a8bdb6d369

参考サイトのように五角形のレーダーチャートを描きたいのですが、配列を回して表示させても1つの文字として認識されてしまうためうまくいきません。

補足情報(FW/ツールのバージョンなど)

うまく説明できてない部分があるかと思いますが、協力いただければ幸いです。

現状の状態と理想を添付します。
![イメージ説明]![イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

手元で試さずにざっくりみただけですがこれだと

["英語,数学,国語,理科,社会,"]

とならないでしょうか?

labels: [<?php foreach($np as $nps){ echo '"$nps"'; echo ','; } ?>],

にしたらどうなるでしょう。

あと、別件になりますがFormで受け取った値をそのままJavaScriptに渡してしますとXSSなどの重大なセキュリティホールとなりますので、絶対にしない方がいいです。htmlspecialchars関数を使って対策するとか、Laravelなどのフレームワークなどを利用するなどを検討された方が良いかと思います。

投稿2021/01/10 17:38

編集2021/01/10 17:46
AbeTakashi

総合スコア4556

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daiki__1019

2021/01/10 17:49

回答ありがとうございます。 自分で色々試していたところ ``` labels: [<?php foreach($np as $nps){ echo '"$nps,"'; } ?>], ``` 当該コードで改善できました XSSの件忠告ありがとうございます。
guest

0

JavaScriptのオブジェクトって往々にしてJSON形式なので、
json_encode()でいいのでは。

php

1 2<?php 3$t = []; 4$t[] = "a"; 5$t[] = "b"; 6$t[] = "c"; 7$t[] = "d"; 8echo json_encode($t); 9// ["a","b","c","d"]

投稿2021/01/10 23:44

m.ts10806

総合スコア80852

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問