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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

Q&A

解決済

1回答

3226閲覧

$_GET?パラメータ?SELECT?

yutaishikawa_

総合スコア58

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

0グッド

1クリップ

投稿2015/07/15 07:26

タスクカレンダーを作る際に、INSERT文を書いてPHPからMySQLにデータをインサートします。
そこには、id[pri],日付[timestamp],タイトル[varchar]の3つのカラムをtasksという一つのテーブルに作成してあります。

index.phpにて、カレンダーの形作りを行いました。

PHP

1<?php 2require_once('dbconnect.php'); 3// 変数の判別、パラメータを出力。 4// 三項演算子 条件式 ? 式1: 式2; 5$ym = isset($_GET['ymd']) ? $_GET['ymd'] : date("Y-m-d"); 6// 現在の日時取得 7$timeStamp = strtotime($ym ,"-01"); 8// 比較演算子、(Y-m)を取得できないFALSEだった場合、TIME関数time() 9 if ($timeStamp === false) { 10 $timeStamp = time(); 11 } 12// 翌月、前月を取得 13$next = date("Y-m",mktime(0,0,0,date("m",$timeStamp)-1,1,date("Y",$timeStamp))); 14$prev = date("Y-m",mktime(0,0,0,date("m",$timeStamp)+1,1,date("Y",$timeStamp))); 15 16// 最終日の取得(月末を取得) 17$lastday = date("t",$timeStamp); 18// 1日の曜日番号の数だけ空白を出力(7月だと3つ) 19$youbi = date("w",mktime(0,0,0,date("m",$timeStamp),1,date("Y",$timeStamp))); 20// $weekを初期化 21$week = ""; 22// 結合代入演算子を使用して、<td>を取得。一週間(0~6の<td>)が完成。 23$week .= str_repeat('<td></td>', $youbi); 24// SQLで今月を取得する処理。先月の最終日と翌月の初日を不等号で期間を指定し、ANDで結ぶ。 25$lastMonth = date("Y-m-d",strtotime("last day of - 1 month",$timeStamp)); 26$nextMonth = date("Y-m-d",strtotime("first day of + 1 month",$timeStamp)); 27// PHP->MySQLtable 28$query = $mysqli->query("SELECT * FROM tasks WHERE task_date >'$lastMonth' AND task_date <'$nextMonth'"); 29// パラメータを送信する 30$parmeta = date("Y-m-d",$mysqli->query("SELECT * FROM tasks WHERE task_date",$timestamp)); 31// 配列を準備 32$userData = array(); 33// 連想配列で$rowを取得する 34while($row = $query->fetch_assoc()) { 35 $userData[date('j',strtotime($row['task_date']))] = array( 36 'id' => $row['id'], 37 'title' => $row['title'], 38 'task_date' => $row['task_date'], 39 'place' => $row['place'], 40 'memo' => $row['memo'] 41 ); 42} 43// 上記の定義で1日から31日までfor文で取得 44for ($day = 1; $day <= $lastday; $day++ ,$youbi++) { 45 // もし$userData[日付]の変数が 空の場合 46 if (isset($userData[$day])) { 47 // リンクをはる 48 $week .= '<td><a href="taskListDay.php">'.$day.'</a></td>'; 49 }else{ 50 // リンクをはらない 51 $week .= '<td class="youbi_'.($youbi % 7).'">'.$day.'</td>'; 52 } 53 // $youbiを7で割ったあまりが6。(土曜日) 54 if ($youbi % 7 == 6 OR $day == $lastday) { 55 // もし 1 = $lastdayだったとき、<tb>に$youbiを7で割ったものを6で引く 56 if($day == $lastday) { 57 $week .= str_repeat('<td></td>', 6 - ($youbi % 7)); 58 } 59 // 結果、<tr>は$week 60 $weeks[]='<tr>' .$week .'</tr>'; 61 // $weekを初期化する 62 $week = ''; 63 } 64 // week""を初期化し続ける処理によってカレンダー型を形成。 65} 66?> 67<!DOCTYPE html> 68<html> 69<title>カレンダー</title> 70<h1><?php echo date("Y",$timeStamp).'年'; ?></h1> 71<h2><?php echo date("m",$timeStamp).'月のカレンダー'; ?></h2> 72<meta charset="utf-8"> 73<table border="1"> 74 <tr> 75 <th><a href="?ym=<?php echo $next;?>">&laquo;</a></th> 76 <th><a href="?ym=<?php echo $prev;?>">&raquo;</a></th> 77 </tr> 78 <thead> 79 <tr> 80 <th></th> 81 <th></th> 82 <th></th> 83 <th></th> 84 <th></th> 85 <th></th> 86 <th></th> 87 </tr> 88 </thead> 89 <tbody> 90 <?php 91 foreach ($weeks as $week) { 92 echo $week; 93 } 94 ?> 95 </tbody> 96</table> 97<form action="edit_do.php" method="POST"> 98<p> 99 タイトル : <input type="text" name="title" size="20"> 100</p> 101<p> 102 日時 : <input type="date" name="task_date" min="2015-07-01"> 103</p> 104<p> 105 場所 : <input type="text" name="place" size="20"> 106</p> 107<p> 108 メモ : <textarea type="text" name="memo" rows="4" cols="40"></textarea> 109</p> 110<input type="submit" value="追加する"><input type="reset" value="リセット"> 111</form> 112</html>

index.phpには、INSERTするために別途ファイル(edit_do.php)を作成しました。

PHP

1<?php 2require_once('dbconnect.php'); 3// 実行するためのステートメントを準備する。ユーザが作成する箇所は?にしておく「。 4$stmt = $mysqli->prepare("INSERT INTO tasks (id,title,task_date,place,memo) VALUES (?,?,?,?,?)"); 5// 直前のクエリで使用した自動生成のIDを返す処理 6$query = "INSERT INTO tasks VALUES (NULL,'Stuttgart','DEU','Stuttagart',617000)"; 7$mysqli->query($query); 8// $_POST['name']に名前が、$_POST['message']に本文が格納されているとする 9// ? の位置に値を振り当てる。対応する変数の型はstring。 10$stmt->bind_param('sssss',$_POST['id'],$_POST['title'],$_POST['task_date'],$_POST['place'],$_POST['memo']); 11// 実行 12$stmt->execute(); 13?> 14<title>Add to Calender | 予定を追加しました。</title> 15<p>予定を追加しました。</p> 16<p><a href="index.php">カレンダーへ戻る</a></p> 17<p><a href="taskListDay.php">タスクの確認</a></p>

さらにこちらがリンク先のカレンダーのタスク情報となります。

PHP

1<?php 2require_once('dbconnect.php'); 3// 年月日のパラメータを取得する。 4$ymd = isset($_GET['ymd']) ? $_GET['ymd'] : date("Y-m-d"); 5// タスクの配列を準備 6$task = ""; 7$taskData = array(); 8// $pass = file_get_contents('edition.php'); 9// PHP->MySQLtable 10// タスクのパラメータを送れるようにする。 11$query = $mysqli->query(" SELECT * FROM tasks"); 12// エラー処理 13if (!$query) { 14 die('クエリーが失敗しました。'.mysql_error()); 15} 16while ($row = $query->fetch_assoc() { 17 // 各メンバ取得 18 $id = $row['id']; 19 $title = $row['title']; 20 $task_date = $row['task_date']; 21 $place = $row['place']; 22 $memo = $row['memo']; 23 $task .= "<tr><td><a href=?=ymd echo ${query}>${title}</a></td><td>${task_date}</td><td>${place}</td><td>${memo}</td></tr>"; 24} 25?> 26<!DOCTYPE html> 27<html lang="ja"> 28<meta charset="utf-8"> 29<title>Today | タスク一覧</title> 30<h1>タスク一覧</h1> 31<table border="1"> 32 <thead> 33 <tr> 34 <th>タイトル</th> 35 <th>日時</th> 36 <th>場所</th> 37 <th>メモ</th> 38 </tr> 39 </thead> 40 <tbody> 41 <tr> 42 <td><?php echo $task?></td> 43 </tr> 44 </tbody> 45</table> 46<form action="delete.php"> 47 <input type="submit" value="イベントを削除する"> 48</form> 49<form action="index.php"> 50 <input type="submit" value="トップページへ戻る"> 51</form> 52</html>

この二つのファイルを加味して、index.phpのパラメータの引き継ぎ先をtaskListDataにしようと考えてます。
例えば、1日にタスクを入れると、入力完了後にindex.phpから1日にリンク(taskListData.php)ができるようになり、taskListData.phpの情報が閲覧ようになるのですが、
1日のみのタスクを確認したい場合はどういう記述にすればいいでしょうか。
アドバイス、回答お願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

taskListData.phpのページで、
指定した1日の情報のみ取得したいという事で間違いございませんか?

それであれば、下記はいかがでしょうか。
ご自身のソースコードとdiffをとって確認してください。

PHP

1<?php 2require_once('dbconnect.php'); 3// 年月日のパラメータを取得する。 4$ymd = isset($_GET['ymd']) ? $_GET['ymd'] : null; 5 6// タスクの配列を準備 7$task = ""; 8$taskData = array(); 9// $pass = file_get_contents('edition.php'); 10// PHP->MySQLtable 11// タスクのパラメータを送れるようにする。 12$sql = "SELECT * FROM tasks"; 13if ($ymd) { 14 $ymd = mysql_real_escape_string($ymd); 15 $sql.= " WHERE FROM_UNIXTIME(task_date, '%Y-%m-%d') = '$ymd' "; 16} 17$query = $mysqli->query($sql); 18 19// エラー処理 20if (!$query) { 21 die('クエリーが失敗しました。'.mysql_error()); 22} 23while ($row = $query->fetch_assoc() { 24 // 各メンバ取得 25 $id = $row['id']; 26 $title = $row['title']; 27 $task_date = $row['task_date']; 28 $place = $row['place']; 29 $memo = $row['memo']; 30 $task .= "<tr><td><a href=?=ymd echo ${query}>${title}</a></td><td>${task_date}</td><td>${place}</td><td>${memo}</td></tr>"; 31} 32?> 33<!DOCTYPE html> 34<html lang="ja"> 35<meta charset="utf-8"> 36<title>Today | タスク一覧</title> 37<h1>タスク一覧</h1> 38<table border="1"> 39 <thead> 40 <tr> 41 <th>タイトル</th> 42 <th>日時</th> 43 <th>場所</th> 44 <th>メモ</th> 45 </tr> 46 </thead> 47 <tbody> 48 <tr> 49 <td><?php echo $task?></td> 50 </tr> 51 </tbody> 52</table> 53<form action="delete.php"> 54 <input type="submit" value="イベントを削除する"> 55</form> 56<form action="index.php"> 57 <input type="submit" value="トップページへ戻る"> 58</form> 59</html>

投稿2015/07/17 08:45

編集2015/07/17 08:50
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yutaishikawa_

2015/07/22 00:52

コメントありがとうございます。 無事、本案件は解決いたしました。 ご協力ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問