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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

1回答

875閲覧

データベースの値を連想配列で全てWeb上で表示させたい

boron

総合スコア11

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2020/11/04 10:12

編集2020/11/05 02:08

データベースに保存してある
イメージ説明
の値を全てWeb上で表示したいのですが
イメージ説明
このようにrrrしか表示されません
ソースコードはこのようになっています。

PHP

1<?php 2require("nav-admin.php"); 3require('dbconnect.php'); 4$reservations = $db->query('select * from reservation'); 5?> 6 7<!DOCTYPE html> 8<html><head> 9<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10<title>スケジュール編集</title> 11<style> 12 .sun{color: red;} 13 .sat{color: blue;} 14 #content{ 15 padding: 20px; 16 width: 720px; 17 min-height: 490px; 18 margin: 0 auto; 19 margin-bottom: 10px; 20 font-size: 153.9%; 21} 22 23 24</style> 25</head> 26<body> 27 28<?php 29$year = date('Y'); 30$month = date('m'); 31while($reservation = $reservations->fetch()){ 32 $monthly = array( 33 ($reservation['day'])=>array( 34 [($reservation['time1']), ($reservation['time2']),($reservation['g_name'])], 35 ), 36); 37} 38 39// 一か月分の日付を曜日付きで出力する 40$lastd = 31;//$yearと$monthから計算して求める 41$time = mktime(0, 0, 0, $month + 1, 0, $year); 42$lastd = date('d',$time); 43//時区間分割を実現する 44$divided=[]; 45for ($d=1; $d<= $lastd; $d++){ 46 if (array_key_exists($d, $monthly)){ 47 //配列のキーが存在するか調べる(キー、対象の配列) 48 //この日に予定があれば、分割していく 49 $intv = [[9,21,'']]; 50 foreach ($monthly[$d] as $yotei){//(対象配列 as その中身)、$yoteiは[x,y,z] 51 $intv= div($intv, $yotei); 52 } 53 $divided[$d] = $intv;//=[x,y,z] 54 }else{ 55 $divided[$d] = [[9,21,'']]; 56 } 57} 58 59//print_r($divided); 60//exit; 61echo '<div id="content">'; 62echo '<table border=1>'; 63echo '<h2>スケジュール編集</h2> '; 64echo '<ul class="nav nav-tabs" role="tablist"> 65 <li class="nav-item"> 66 <a class="nav-link active" id="item1-tab" data-toggle="tab" href="#item1" role="tab" aria-controls="item1" aria-selected="true">野球場</a> 67 </li> 68 <li class="nav-item"> 69 <a class="nav-link" id="item2-tab" data-toggle="tab" href="#item2" role="tab" aria-controls="item2" aria-selected="false">テニスコート</a> 70 </li> 71 </ul>'; 72echo "<h3>{$year}{$month}月</h3>"; 73echo "<button type=\"button\" onclick=\"location.href='#'\">前月</button>"; 74echo "<button type=\"button\" onclick=\"location.href='#'\">次月</button>"; 75echo '<input type="text" name="sname" size="2"/>年<input type="text" name="sname" size="2"/>月'; 76echo "<button type=\"button\" onclick=\"location.href='#'\">検索</button>"; 77echo "<button type=\"button\" onclick=\"location.href='#'\">編集</button>"; 78echo "<button type=\"button\" onclick=\"location.href='#'\">引き継ぐ</button>"; 79echo '<tr><td></td>'; 80for ($h=9; $h<22; $h++){ 81 echo '<td >', $h, '</td>'; 82} 83echo '</tr>'; 84for ($d=1; $d<=$lastd; $d++){ 85 $time = mktime(0, 0, 0, $month, $d, $year); 86 $w = date('w',$time); 87 $wdays = array('日','月','火','水','木','金','土',); 88 $class = ''; 89 if ($w==0) $class='sun'; 90 if ($w==6) $class='sat'; 91 echo '<tr>'; 92 echo '<td><span class="'.$class.'">', $d,'('. $wdays[$w].')</span>'. '</td>'; 93 $yotei = $divided[$d]; 94 foreach ($yotei as $y){//$yotei=$divided[$d]=[x,y,z] 95 $y1 = $y[0];//[x,y,z]のx 96 $y2 = $y[1];//[x,y,z]のy 97 $y3 = $y[2];//[x,y,z]のz 98 $colspan=$y2-$y1+1; 99 if(!empty($y3)){ 100 echo '<td colspan="'. $colspan . '">'.$y3.'</td>'; 101 }else{ 102 echo '<td colspan="'. $colspan . '"><a href="reservation.php?y='.$year.'&m='.$month.'&d='.$d.'&w='.$wdays[$w].'&t1='.$y1.'&t2='.$y2.'">○</a></td>'; 103 } 104 105 } 106 echo '</tr>'; 107} 108echo '</table>'; 109echo '</div>'; 110?> 111</body> 112</html> 113<?php 114//div.phpからコピーしたもの 115 function div($intv, $a){ 116 // $a=[11,12,''] =(div)=> $intv=[[9,10,''],[11,12,'試合'],[13,21,'']] 117 $a1 = $a[0]; 118 $a2 = $a[1]; 119 $a3 = $a[2];//追加 120 $out = []; 121 for ($i=0; $i<count($intv); $i++){ 122 $b1 = $intv[$i][0]; 123 $b2 = $intv[$i][1]; 124 $b3 = $intv[$i][2];//追加 125 126 if ($a1 >= $b1 and $a2 <= $b2){ 127 if ($b1<=$a1-1) 128 $out[]=[$b1, $a1-1, $b3]; //$b3を追加 129 $out[]=[$a1, $a2, $a3]; //$a3を追加 130 if ($a2+1<=$b2) 131 $out[]=[$a2+1,$b2, $b3]; //$b3を追加 132 }else{ 133 $out[] = $intv[$i]; 134 } 135 } 136 return $out; 137 } 138?>

個人的にはwhile文を使えば全て表示することができると考えていたのですが$monthlyの中の配列の書き方が悪いのでしょうか?
汚いコードだとは思いますが何卒、ご教授宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

$monthlyの中の配列の書き方が悪いのでしょうか?

問題の箇所は以下です。

php

1 $monthly = array( 2 ($reservation['day'])=>array( 3 [($reservation['time1']), ($reservation['time2']),($reservation['g_name'])], 4 ),

while のループ毎に上書きしてしまっています。
上書きではなく、$reservation['day']で「追加」されるように記述を変更してあげると良いです。

投稿2020/11/04 23:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/11/04 23:06

配列の上書きと追加の仕方は、私も結構躓いた覚えがあります。 マニュアル読みながら、試行錯誤してみると良いですよ。
boron

2020/11/05 01:04

返信ありがとうございます。 追加のやり方として調べて次のように考えたのですが正しいでしょうか? while($reservation = $reservations->fetch()){ $monthly = array($reservation['day']); array_push($monthly,$reservation['time1'],$reservation['time2'],$reservation['g_name']); }
boron

2020/11/09 07:27

なんとか上書きと追加の違いが分かり問題を解決することができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問