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

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

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

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

Q&A

解決済

1回答

1170閲覧

php データformタグでデータを移動

banianizm

総合スコア92

PHP

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

0グッド

0クリップ

投稿2018/10/14 08:03

イメージ図
お世話になります。
今カレンダーアプリ作成しています。
日付のボタンをクリックすることでリンクしているページ(./day.php)にformメソッドでクリックした日の日付のデータを送信したいと考えています。

今までに行なったこと

php

1echo "<a href = \"./day.php\"><button type='button' class='btn btn-primary btn-lg btn-block'>$d<br /></button></a>";

このbuttonタグをformタグでくくったりしたのですが、それでは画面遷移しませんでした。

全てのコードになります。

php

1<?php 2//データベース接続情報 3$dsn='mysql:dbname=green;host=localhost;charset=utf8'; 4$user='root'; 5$password='root'; 6 7//データベース接続開始 8$dbh = new PDO($dsn,$user,$password); 9$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 10 11 12//データベース選択 13$sql='SELECT * FROM schedule LEFT OUTER JOIN customer ON schedule.customer_id = customer.customer_id ORDER BY ID ASC'; 14$stmt=$dbh->prepare($sql); 15$stmt -> bindParam(':id', $id, PDO::PARAM_STR); 16$stmt->execute(); 17//fetchAllで全てのデータを配列化 18$data = $stmt->fetchAll(PDO::FETCH_ASSOC); 19/* 20print"<pre>"; 21print_r($data); 22print "</pre>"; 23*/ 24 25 26 $today = date('Y-m-d'); 27 28//print_r($id); 29 30 31?> 32<!doctype html> 33<html lang="ja"> 34 <head> 35 <!-- Required meta tags --> 36 <meta charset="utf-8"> 37 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 38 39 <!-- Bootstrap CSS --> 40 <link rel="stylesheet" href="../css/bootstrap.min.css" > 41 <link rel="stylesheet" href="../css/all.css"> 42 <link rel="stylesheet" href="style.css" > 43 44 <title>イグラングリーン 月間</title> 45 </head> 46<body> 47 48 49 50 <table border="1"> 51<?php 52 53// 上のコードは、次のコードと同じ意味です。 54$y = isset($_REQUEST['y']) ? $_REQUEST['y'] : date("Y"); 55$m = isset($_REQUEST['m']) ? $_REQUEST['m'] : date("m"); 56 57 58 59 60 61//受けとったrequestが現在の年、月、日と同じならば変数を代入する 62 63//print_r($today); 64//print_r($request); 65 // 1日の曜日を取得。mktimeは時・分・秒・月・日・年の順に表記 66 $wd1 = date("w", mktime(0, 0, 0, $m, 1, $y)); 67 68 // 年とりあえず同じ年 69 $prevY = $nextY = $y; 70 71 // 一ヶ月前。1より小さければ12にして1年下げる。 72 $prevM = $m - 1; 73 if($prevM < 1) { 74 $prevM = 12; 75 $prevY--; 76 } 77 // 一ヶ月後。12より大きければ1にして1年上げる。 78 $nextM = $m + 1; 79 if($nextM > 12) { 80 $nextM = 1; 81 $nextY++; 82 } 83 84 85 if($m < 12){ 86 $next = $m + 1; 87 } 88 else{ 89 $next = 1; 90 } 91 92 93//EOMはechoを非表示にする 94 print <<< EOM 95 96 97 <h1>{$y}{$m}<span class="arrow"><i class="fas fa-angle-left"></i><a href="?y={$prevY}&m={$prevM}" />&laquo;</a><i class="fas fa-angle-right"></i></span><a href="?y={$nextY}&m={$nextM}" />&raquo;</a></h1> 98 <table class="table table-bordered"> 99EOM; 100?> 101<thead> 102 <tr> 103 <th scope="col"></th> 104 <th scope="col"></th> 105 <th scope="col"></th> 106 <th scope="col"></th> 107 <th scope="col"></th> 108 <th scope="col"></th> 109 <th scope="col"></th> 110 </tr> 111 </thead> 112<?php 113 114// その数だけ空白を表示 115for ($i = 1; $i <= $wd1; $i++) { 116echo "<td> </td>"; 117} 118 119 120//日付に1を代入 121$d = 1; 122 123while (checkdate($m, $d, $y)) { 124 125 126 127 echo "<td>"; 128 129 130 //日付表示 131 echo "<a href = \"./day.php\"><button type='button' class='btn btn-primary btn-lg btn-block'>$d<br /></button></a>"; 132 foreach ($data as $value) { //入力回数分繰り返し 133 //echo $value['request']; // 多次元配列の扱い →(略) 134 $datetime = $value['request']; 135 $datetime1 = explode(' ', $datetime); 136 $date = explode('-', $datetime1[0]); 137 $year = $date[0]; 138 $month = $date[1]; 139 $day = $date[2]; 140 141 142 if ( $d == $day && $m == $month && $y == $year ) { 143 // カレンダー日付と入力値が一緒ならボタンを表示 144 echo "<a href = \"http://yahoo.co.jp\"><button>{$value['name']}</button></a><br />"; 145 146 147 } 148} 149 150echo "</td>"; 151 152 153 // 今日が土曜日の場合は… 154 if (date("w", mktime(0, 0, 0, $m, $d, $y)) == 6) { 155 // 週を終了 156 echo "</tr>"; 157 158 159 // 次の週がある場合は新たな行を準備 160 if (checkdate($m, $d + 1, $y)) { 161 echo "<tr>"; 162 } 163} 164 165 166//インクリメント 167$d++; 168} 169 170 171 172// 最後の週の土曜日まで移動 173$wdx = date("w", mktime(0, 0, 0, $m + 1, 0, $y)); 174for ($i = 1; $i < 7 - $wdx; $i++) { 175 echo "<td> </td>"; 176} 177 178?> 179 </tr> 180 </table> 181</body> 182</html>

同じような考えでなくても何とか次ページで、formでデータを受け取りたいのですが、どのような方法があるのでしょうか?

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ここを

php

1//日付表示 2 echo "<a href = \"./day.php\"><button type='button' class='btn btn-primary btn-lg btn-block'>$d<br /></button></a>";

下記のようにして

php

1//日付表示 2 echo "<a href = \"./day.php?year=$y&month=$m&day=$d\"><button type='button' class='btn btn-primary btn-lg btn-block'>$d<br /></button></a>";

day.phpでGETで受け取れるようになります。
↓ day.php

php

1<?php 2$array = $_GET; 3 4echo "<pre>\n"; 5print_r($array); 6echo "</pre>\n"; 7?>

投稿2018/10/14 08:22

colling

総合スコア798

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

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

banianizm

2018/10/14 08:54

ありがとうございます。 解決しました。 今後のために参考サイトなど教えていただけないでしょうか?
colling

2018/10/14 14:29

勉強熱心ですね(^^ 感心いたします。 やりたいことにたどり着くには、逆引き系のサイトなどはいかがでしょうか? http://www.7key.jp/program/php/php_use.html とか http://php-tips.elephantech.net/ とか、こういうサイトをいくつか探してブックマークしておくと便利です。 あと、本が一冊あれば便利です。 ↓これの前の前の版を持ってて、めっちゃ役に立ちました。 https://www.amazon.co.jp/%E6%94%B9%E8%A8%82%E7%AC%AC3%E7%89%88-PHP%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-%E5%A4%A7%E5%9E%A3-%E9%9D%96%E7%94%B7/dp/4774172294/ref=sr_1_1?ie=UTF8&qid=1539511272&sr=8-1&keywords=php%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問