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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

HTML

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

Q&A

解決済

1回答

418閲覧

POSTフォームによるcheckboxの配列受け渡し

DaisukeKusakari

総合スコア16

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

HTML

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

0グッド

1クリップ

投稿2018/07/28 00:28

いつもお世話になっております。閲覧ありがとうございます。

HTML内のnew_subject[]を配列としてPHPで受け取りチャックされた項目の値の和を求めるプログラムを記述したいのですが、何をチェックしても関数 get_post('new_subject')がNULLで返ってきます。一方、 get_post('new_message')は反映されて返ってくるので、関数は機能していると思います。

お手数をおかけしますが、何卒ご教示いただけますようよろしくお願いいたします。

php

1<?php 2require_once('config.php'); 3require_once('./functions/db_helper.php'); 4require_once('./functions/extra_helper.php'); 5 6session_start(); 7 8if (empty($_SESSION['member'])){ 9 header('Location: '.SITE_URL.'login.php'); 10 exit; 11} 12 13$member = $_SESSION['member']; 14$profile = $_SESSION['profile']; 15$id = $member['id']; 16$name1 = $member['name1']; 17$role = $member['role']; 18$active = $profile['active']; 19$cur_subject = $profile['subject']; 20$cur_message = $profile['message']; 21 22$str_cur_subject = check_subject($cur_subject); 23$new_message = get_post('new_message'); 24$subject = array(); 25$subject = get_post('new_subject'); 26$new_subject = var_dump($new_message); 27 28// $new_subject = array_sum($subject); 29// $str_new_subject = check_subject($new_subject); 30$dbh = get_db_connect(); 31$errs = array(); 32 33if($_SERVER['REQUEST_METHOD']==='POST'){ 34 if ($new_subject == 0){ 35 $set_subject = $cur_subject; 36 }else{ 37 $set_subject = $new_subject; 38 } 39 40 if (!empty($new_message)){ 41 if(!check_words_length($new_message, 200)){ 42 $errs['message'] = '一言メッセージは200字以内で入力してください'; 43 }else{ 44 $set_message = $new_message; 45 } 46 }else{ 47 $set_message = $cur_message; 48 } 49 50 if (empty($new_message)){ 51 $errs['empty'] = '入力なし'; 52 } 53 54 if(empty($errs)){ 55 if(update_profile($dbh, $id, $active, $set_subject, $set_message)){ 56 header('Location: '.SITE_URL.'prof_regist_complete.php'); 57 exit; 58 } 59 $errs['regis'] = '設定変更に失敗しました'; 60 } 61} 62?> 63 64<!DOCTYPE html> 65<html lang="ja"> 66<head> 67<meta charset="utf-8" /> 68<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 69<title>浜子屋 | 地域に根ざす現代の寺子屋</title> 70<meta name="Description" content="浜子屋(はまこや) | 地域に根ざす現代の寺子屋~真の教育機会の平等を目指す~" /> 71<meta name="Keywords" content="浜松,学習支援,ボランティア,浜子屋,学習塾,塾" /> 72<link rel="icon" href="images/logo_icon.ico" type="image/vnd.microsoft.icon"/> 73<link rel="shortcut icon" href="images/logo_icon.ico" type="image/vnd.microsoft.icon"/> 74<link rel="stylesheet" href="css/style.css"> 75<link href='https://fonts.googleapis.com/css?family=Berkshire+Swash|Lobster' rel='stylesheet' type='text/css'><!--googlewebフォント--> 76<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"><!--アイコンwebフォント--> 77<link rel="stylesheet" href="css/vertical-responsive-menu.css" /><!--レスポンシブメニュー--> 78<link rel="stylesheet" href="css/twilight.css"><!--スライドショー--> 79<!--[if lt IE 9]> 80<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 81<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> 82<![endif]--> 83</head> 84 85 <div class="form"> 86 <p>担当教科と一言メッセージを変更できます。変更しない場合は未選択、空欄のままにしてください。<br> 87 生徒さんが先生を検索したり、個別授業を予約したりするときにプロフィールとして表示されます。</p> 88 <form action="prof_regist.php" method="POST"> 89 <dl class="clearfix"> 90 <dt>現在の担当教科</dt> 91 <dd> 92 <?php echo html_escape($new_subject);?> 93 </dd> 94 </dl> 95 <dl class="clearfix"> 96 <dt>新しい担当教科<br>(複数選択可)</dt> 97 <dd> 98 <ul class="chra"> 99 <label> 100 <input type="checkbox" name="new_subject[]" value="64" /> 101 国語(小学校) 102 </label> 103 <label> 104 <input type="checkbox" name="new_subject[]" value="32" /> 105 算数(小学校) 106 </label> 107 <br> 108 <label> 109 <input type="checkbox" name="new_subject[]" value="16" /> 110 国語(中学校) 111 </label> 112 <label> 113 <input type="checkbox" name="new_subject[]" value="8" /> 114 数学(中学校) 115 </label> 116 <label> 117 <input type="checkbox" name="new_subject[]" value="4" /> 118 理科(中学校) 119 </label> 120 <label> 121 <input type="checkbox" name="new_subject[]" value="2" /> 122 社会(中学校) 123 </label> 124 <label> 125 <input type="checkbox" name="new_subject[]" value="1" /> 126 英語(中学校) 127 </label> 128 </ul> 129 </dd> 130 </dl> 131 <dl class="clearfix"> 132 <dt>現在の一言メッセージ</dt> 133 <dd> 134 <?php echo html_escape($cur_message);?> 135 </dd> 136 </dl> 137 <dl class="clearfix"> 138 <dt>新しい一言メッセージ</dt> 139 <dd> 140 <textarea name="new_message" rows="5" /></textarea> 141 <?php echo html_escape($errs['message']); ?> 142 </dd> 143 </dl> 144 <p class="kakunin"> 145 <input type="submit" value="変更" class="btn_submit"> 146 <?php echo html_escape($errs['regis']); ?> 147 </p> 148 </form> 149 </div> 150 </section> 151 </article> 152 <!-- / .content --> 153 </div> 154 <!-- / .wrapper --> 155</div> 156 157<!--javascript設定--> 158<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <!--googleのCDN(ネットワーク経由でコンテンツを提供するサービス)よりjqueryをロード--> 159<script src="js/vertical-responsive-menu.min.js" ></script> <!--レスポンシブメニュー--> 160<script> 161 $(function() { 162 $('input').iCheck({ 163 checkboxClass: 'icheckbox_minimal-grey', 164 radioClass: 'iradio_minimal-grey', 165 }); 166 }); 167</script> 168<script src="js/jquery.customSelect.min.js"></script> <!--セレクトメニューの装飾--> 169<script> 170 $(function() { 171 $('.ctSelect').customSelect() 172 }); 173</script> 174<script src="js/scrolltopcontrol.js"></script> <!--スクロールしながらページのトップに戻る--> 175 176</body> 177</html> 178

関数 extra_helper.php

php

1<?php 2 3//POSTデータ取得用 4function get_post($key){ 5 // NULL 以外の値-->TRUE、NULL-->FALSE 6 //emptyは「0」を空だと判断する 7 if(isset($_POST[$key])){ 8 //文字列の先頭および末尾にあるホワイトスペースを取り除く 9 $var = trim($_POST[$key]); 10 return $var; 11 } 12} 13コード

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

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

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

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

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

m.ts10806

2018/07/28 01:13

これは何をしたいのでしょうか? → $new_subject = var_dump($new_message);
DaisukeKusakari

2018/07/28 01:17

デバック用に値を表示したかっただけです。すいません。
m.ts10806

2018/07/28 01:22

ざっとしか読んでませんが、var_dumpの結果を$new_subjectで受け取っていることでその後の処理がおかしくなってませんか?
guest

回答1

0

自己解決

php

1$new_subject_post = $_POST['new_subject'];

自作関数get_post()関数を使用するのが間違いでした。

php

1//POSTデータ取得用 2function get_post($key){ 3 // NULL 以外の値-->TRUE、NULL-->FALSE 4 //emptyは「0」を空だと判断する 5 if(isset($_POST[$key])){ 6 //文字列の先頭および末尾にあるホワイトスペースを取り除く 7 $var = trim($_POST[$key]); 8 return $var; 9 } 10}

投稿2018/08/23 21:41

DaisukeKusakari

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問