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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

Q&A

解決済

3回答

2254閲覧

PHP JavaScript 非表示の状態からプルダウンメニューで選択し、 内容を表示させたい

hiro0208

総合スコア75

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

0グッド

0クリップ

投稿2017/02/19 09:51

編集2017/02/20 03:13

イメージ説明
画像1

イメージ説明
画像2

php

1 2画像1.画像2のように非表示の状態からプルダウンメニューで選択し、 3javascriptを使い内容を表示させたいです。 4 5 6送信ボタンに関数をあてがいましたが上手くいきませんでした。。。 7初歩的な質問で申し訳ないですが、ご親切な方おりましたらご教授いただけないでしょうか?よろしくお願いいたします。 8 9 10 11<?php 12$d = date('Y/m'); 13list($year, $month) = explode('/', $d); 14$thisYear=$year; 15 16if(isset($_POST['year'])) $year = $_POST['year'];//isset変数:有true無false 17if(isset($_POST['month'])) $month = $_POST['month']; 18 19$optionYear = ""; 20for ($i=($thisYear-10); $i<=($thisYear+10); $i++) { 21 $selected = ($i == $year)?" selected":"";//真:selected 偽:""空 //三項演算子 22 $optionYear .= '<option value="' . $i . '"' . $selected . '>' . $i . '</option>' . "\n"; 23} 24$optionMonth=""; 25for($i=1;$i<=12; $i++) { 26 $selected=($i==$month)?" selected":""; 27 $optionMonth .= '<option value="' . $i . '"' . $selected . '>' . $i . '</option>' . "\n"; 28} 29$weekday = array ('日' ,'月' ,'火' ,'水' ,'木' ,'金' ,'土' ); 30 31$s = '<table border="1"><tr>'; 32for($i = mktime(0 ,0 , 0, $month, 1,$year);$i<mktime(0, 0, 0, $month+1 ,1 ,$year);$i+=60*60*24) {//タイムスタンプmktime,加算代入 33 $s .= "<td>".date('Y/m/d',$i)."</td><td>".$weekday[date('w',$i)]."</td></tr>"; 34} 35$s .= "</table>"; 36//var_dump($s); 37?> 38<!doctype html> 39<html> 40<head> 41<meta charset="UTF-8"> 42<title>日付曜日</title> 43</head> 44<h2>日付(選択出力)</h2> 45<form method="post"> 46<select name="year"><?php echo $optionYear; ?></select>47<select name="month"><?php echo $optionMonth; ?></select>48<input type="submit" name="btn" value="送信" onClick="show"> 49</form> 50<p id= "disp" class="hyoji" <?php echo $s; ?></p> 51</body> 52<style> 53.hyoji { 54display: none; 55} 56</style> 57 58<script type="text/javascript"> 59function show() { 60 //alert('A'); 61 document.getElementById("disp").style.display="block"; 62} 63</script> 64</html> 65コード

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

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

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

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

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

kei344

2017/02/19 10:18

JavaScriptの記述がありませんが、どのようなコードを書かれているかを追記されたほうが回答を得やすいと思います。
hiro0208

2017/02/20 02:03 編集

ありがとうございます。<style>タグの下にJavaScriptの記述しました。ただ、、アラートも出せなく記述自体が間違っているので消していました。
guest

回答3

0

とりあえずシングルクォーテーションで変数を囲んでも
展開されないのでそれなりの処理が必要

'<option value="' . $i . '"$selected>'
↓↓↓
'<option value="' . $i .'"'. $selected.'>'

もともとダブルクォーテーションでやるように回答したと
思いますが・・・

追記

まず、テーブルの上のレベルで表示をdisplay:noneにしてしまうと、
表示させようがありません。意味のないクラスなのでやめてください。
そもそも考え方が間違っています、出力して表示しないのではなくて
出力しないことが妥当でしょう

$sの出力条件を追加(とりあえず$_POST["year"]だけチェックしていますが
厳密にやりたいならmonthやそれぞれの有効値のチェックまで必要になります)

PHP

1$s =""; 2if(isset($_POST["year"])){ 3$s.= '<table border="1"><tr>'; 4for($i = mktime(0 ,0 , 0, $month, 1,$year);$i<mktime(0, 0, 0, $month+1 ,1 ,$year);$i+=60*60*24) {//タイムスタンプmktime,加算代入 5 $s .= "<td>".date('Y/m/d',$i)."</td><td>".$weekday[date('w',$i)]."</td></tr>"; 6} 7$s .= "</table>"; 8

投稿2017/02/20 00:43

編集2017/02/20 04:27
yambejp

総合スコア114585

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

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

hiro0208

2017/02/20 02:24

変数がいきていいないですね。。。
yambejp

2017/02/20 04:22

とりあえず .hyoji {display: none;} をやめてください。 $sの出力条件をつければよいでしょう。 追記しておきます
guest

0

自己解決

<?php $array_week = array('日', '月', '火', '水', '木', '金', '土'); $year = date('Y'); $month = date('n'); $start = $year - 10; $end = $year + 10; //年のプルダウン for ($i = $start; $i <= $end; $i++) { $option_year .= '<option value="' . $i . '">' . $i . '</option>' . "\n"; } //月のプルダウン for ($i = 1; $i <= 12; $i++) { $option_month .= '<option value="' . $i . '">' . $i . '</option>' . "\n"; } ?> <form action="" method="post"> <select name="year"> <?php echo $option_year; ?> </select>年 <select name="month"> <?php echo $option_month; ?> </select>月 <input type="submit" name="btn" value="送信"> </form> <?php if (isset($_POST['btn'])) { $year = $_POST['year']; $month = $_POST['month']; //プルダウンで選択された年・月の日数のタイムスタンプを取得 $timestamp = mktime(0, 0, 0, $month, 1, $year); //日数を取得(繰り返す日数) $days = date('t', $timestamp); echo '<table border="1">' . "\n"; for ($i = 1; $i <= $days; $i++) { //選択年の月の日数(月末)のタイムスタンプ $timestamp = mktime(0, 0, 0, $month, $i, $year); //タイムスタンプから日付を取得 $date = date('m/d', $timestamp); //タイムスタンプから曜日の取得 $week = date('w', $timestamp); echo '<tr>' . "\n" . '<td>' . $date . '</td>' . "\n" . '<td>' . $array_week[$week] . '</td>' . "\n" . '</tr>' . "\n"; } echo '</table>' . "\n"; } ?>

投稿2017/04/25 13:07

hiro0208

総合スコア75

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

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

0

送信ボタンに関数をあてがいましたが上手くいきませんでした

書くなら onClick="show()" ですが、関数が実行されたとしてもすぐページが変わってしまい(=Formを送信する動作)意味は有りません。

PHPからしか取得できない情報なのであれば、JavaScriptを介さずにPHPだけで機能を作成されたほうが良いですし、そうで無いのであればプルダウンのchangeイベントを拾ってJavaScriptでテーブルを組むのが良いでしょう。

【セレクトボックスの日付を切り替え | JavaScript逆引き | Webサイト制作支援 | ShanaBrian Website】
http://shanabrian.com/web/javascript/change-day.php

【簡単にHTMLの年月日のプルダウンを作る方法 - ITS】
https://its-office.jp/blog/js/2016/03/08/ymd-html.html

投稿2017/02/22 17:35

kei344

総合スコア69366

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問