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

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

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

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

Q&A

3回答

392閲覧

スケジュール管理プログラムの開発エラー

xxxxxxx

総合スコア50

PHP

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

0グッド

0クリップ

投稿2018/11/12 02:55

PHP

1<?php 2error_reporting(E_ALL); 3//ini_set('display_errors','On'); 4 5session_cache_limiter("public"); 6session_start(); 7 8require "conf.php"; 9 10$prmarray = cnv_formstr($_POST); 11 12if(!chk_auth($prmarray)){ 13 $act = DEFSCR; 14} 15elseif (isset($prmarray["act"])){ 16 $act = $prmarray["act"]; 17} 18else{ 19 $act = DEFSCR; 20} 21date_default_timezone_set('Asia/Tokyo'); 22$dt = date("Y-m-d H:i:s"); 23?> 24 25<?php $conn = db_conn(); ?> 26<html lang="ja"> 27<head> 28<meta charset="utf-8" /> 29 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 30 <title><?=ADMINAPPNAME?></title> 31 <meta name="viewport" content="width=device-width, initial-scale=1"> 32</head> 33<body> 34<div align="center"> 35<?php 36call_user_func("screen_".$act,$prmarray); 37?> 38</div> 39</body> 40</html> 41<?php db_close($conn); ?> 42<?php 43function screen_log($array){ 44?> 45 <h3>ログイン画面</h3> 46 <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>"> 47 <table border="1"> 48 <tr> 49 <td>ログインID</td> 50 <td><input type="text" name="l_id"></td> 51 </tr> 52 <tr> 53 <td>パスワード</td> 54 <td><input type="password" name="l_pass"></td> 55 </tr> 56 <tr> 57 <td> </td> 58 <td><input type="submit" value="ログイン" name="sub1"></td> 59 </tr> 60 </table> 61 <input type="hidden" name="act" value="src"> 62 </form> 63<?php 64} 65 66function screen_src($array){ 67 $key = (isset($array["key"])) ? $array["key"] : ""; 68 $p = (isset($array["p"])) ? intval($array["p"]) :1; 69 $p =($p < 1) ? 1 : $p; 70?> 71 72 <?php disp_menu(); ?> 73 <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>"> 74 <table border="0"> 75 <tr> 76 <td><input type="text" name="key" value="<?=$key?>"></td> 77 <td><input type="submit" value="検索" name="sub1"></td> 78 </tr> 79 </table> 80 <input type="hidden" name="act" value="src"> 81 </form> 82 83 <?php disp_listdata($key, $p); ?> 84 85<?php 86} 87 88function screen_entconf($array){ 89 if(!chk_data($array)){ return; } 90 extract($array); 91?> 92 93 94<?php 95} 96 97function screen_dojob($array){ 98 $res_mes = db_update($array); 99?> 100 101 <p><?php disp_menu(); ?></p> 102 <h3>処理完了画面</h3> 103 104 <table border="0" bgcolor="pink"> 105 <tr> 106 <td>処理結果</td> 107 <td><?=$res_mes; ?></td> 108 </tr> 109 </table> 110<?php 111} 112 113function chk_auth($array){ 114 if(isset($_POST["l_id"]) and isset($_POST["l_pass"])){ 115 if($_POST["l_id"] == LOGINID and $_POST["l_pass"] == LOGINPASS){ 116 $_SESSION["auth"] = AUTHADMIN; 117 return TRUE; 118 }else{ 119 return FALSE; 120 } 121 }else{ 122 if(!isset($_SESSION["auth"])){ 123 return FALSE; 124 }else { 125 if($_SESSION["auth"] == AUTHADMIN){ 126 return TRUE; 127 }else{ 128 return FALSE; 129 } 130 } 131 } 132} 133 134function chk_data($array){ 135 136 $strerr = ""; 137 if($array["l_title"] == ""){ 138 echo "<p>タイトルが入力されていません"; 139 $strerr = "1"; 140 } 141 if($array["year"] == "" && $array["month"] == "" && $array["day"] == ""){ 142 echo "<p>日付が入力されていません"; 143 $strerr = "1"; 144 } 145 if($array["hour"] == "" && $array["minute"] == ""){ 146 echo "<p>時間が入力されていません"; 147 $strerr = "1"; 148 } 149 if($array["l_comment"] == ""){ 150 echo "<p>コメントが入力されていません"; 151 $strerr = "1"; 152 } 153 if($strerr == "1"){ 154 return FALSE; 155 } 156 else{ 157 return TRUE; 158 } 159} 160 161function cnv_formstr($array){ 162 foreach ($array as $k => $v) { 163 if(get_magic_quotes_gpc()){ 164 $v = stripslashes($v); 165 } 166 $v = htmlspecialchars($v); 167 $array[$k] = $v; 168 } 169 return $array; 170} 171 172function cnv_sqlstr($string){ 173 $det_enc = mb_detect_encoding($string,"UTF-8,EUC-JP,SJIS"); 174 if($det_enc and $det_enc != ENCDB){ 175 $string = mb_convert_encoding($string,ENCDB,$det_enc); 176 } 177 $string = addslashes($string); 178 return $string; 179} 180 181function cnv_dispstr($string){ 182 $det_enc = mb_detect_encoding($string,"UTF-8,EUC-JP,SJIS"); 183 if($det_enc and $det_enc != ENCDISP){ 184 return mb_convert_encoding($string,ENCDISP,$det_enc); 185 } 186 else{ 187 return $string; 188 } 189} 190 191function get_data($id){ 192 global $conn; 193 194 $sql = "SELECT * FROM scheduledata"; 195 $sql .= " WHERE (id = ".cnv_sqlstr($id).")"; 196 $res = db_query($sql,$conn) or die("データ抽出エラー"); 197 $row = mysqli_fetch_array($res,MYSQLI_ASSOC); 198 199 return $row; 200} 201 202function disp_listdata($key,$p){ 203 global $conn; 204 205 $st = ($p - 1) * intval(ADMINPAGESIZE); 206 207 $sql = "SELECT * FROM scheduledata"; 208 if(strlen($key) > 0){ 209 $sql .= " WHERE (year LIKE '%".cnv_sqlstr($key)."%')"; 210 $sql .= " OR (l_title LIKE '%".cnv_sqlstr($key)."%')"; 211 $sql .= " OR (month LIKE '%".cnv_sqlstr($key)."%')"; 212 $sql .= " OR (day LIKE '%".cnv_sqlstr($key)."%')"; 213 $sql .= " OR (hour LIKE '%".cnv_sqlstr($key)."%')"; 214 $sql .= " OR (minute LIKE '%".cnv_sqlstr($key)."%')"; 215 $sql .= " OR (l_comment LIKE '%".cnv_sqlstr($key)."%')"; 216 } 217 $sql .= " ORDER BY year,month,day,hour,minute ASC LIMIT $st,".intval(ADMINPAGESIZE); 218 $res = db_query($sql,$conn) or die("データ抽出エラー"); 219 if($res->num_rows <= 0){ 220 echo "<p>データは登録されていません"; 221 return; 222 } 223 224?> 225 <table border="1"> 226 <tr> 227 <td> </td> 228 <td>タイトル</td> 229 <td></td> 230 <td></td> 231 <td></td> 232 <td></td> 233 <td></td> 234 <td>コメント</td> 235 </tr> 236 <?php while ($row = $res->fetch_array(MYSQLI_ASSOC)) {?> 237 <tr> 238 <td> 239 <table> 240 <tr> 241 <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>"> 242 <td><input type="submit" value="更新"></td> 243 <input type="hidden" name="act" value="upd"> 244 <input type="hidden" name="id" value="<?=$row["id"]?>"> 245 </form> 246 <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>"> 247 <td width="50%"><input type="submit" value="削除"></td> 248 <input type="hidden" name="act" value="delconf"> 249 <input type="hidden" name="id" value="<?=$row["id"]?>"> 250 </form> 251 </tr> 252 </table> 253 </td> 254 <td><?=cnv_dispstr($row["l_title"])?></td> 255 <td><?=cnv_dispstr($row["year"])?></td> 256 <td><?=cnv_dispstr($row["month"])?></td> 257 <td><?=cnv_dispstr($row["day"])?></td> 258 <td><?=cnv_dispstr($row["hour"])?></td> 259 <td><?=cnv_dispstr($row["minute"])?></td> 260 <td><?=cnv_dispstr($row["l_comment"])?></td> 261 </tr> 262 <?php } ?> 263 </table> 264 265 <?php disp_pagenav($key,$p); ?> 266<?php 267} 268 269 270function disp_menu(){ 271?> 272 <table> 273 <tr> 274 <td><big><b><?=ADMINAPPNAME?></b></big></td> 275 <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>"> 276 <td><input type="submit" value="登録画面へ"></td> 277 <input type="hidden" name="act" value="ent"> 278 </form> 279 <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>"> 280 <td><input type="submit" value="スケジュール一覧画面へ"></td> 281 <input type="hidden" name="act" value="src"> 282 </form> 283 </tr> 284 </table> 285<?php 286} 287 288function disp_pagenav($key,$p = 1){ 289 global $conn; 290 291 $prev = $p - 1; 292 $prev = ($prev < 1) ? 1 : $prev; 293 $next = $p + 1; 294 295 $sql = "SELECT COUNT(*) AS cnt FROM scheduledata"; 296 if(isset($key)){ 297 if(strlen($key) > 0){ 298 $sql .= " WHERE (year LIKE '%".cnv_sqlstr($key)."%')"; 299 $sql .= " OR (month LIKE '%".cnv_sqlstr($key)."%')"; 300 $sql .= " OR (day LIKE '%".cnv_sqlstr($key)."%')"; 301 $sql .= " OR (hour LIKE '%".cnv_sqlstr($key)."%')"; 302 $sql .= " OR (minute LIKE '%".cnv_sqlstr($key)."%')"; 303 } 304 } 305 $res = db_query($sql,$conn) or die("データ抽出エラー"); 306 $row = $res->fetch_array(MYSQLI_ASSOC); 307 $recordcount = $row["cnt"]; 308 309?> 310 311function db_close($conn){ 312 $conn->close(); 313} 314?> 315

*文字数制限により一部抜粋
上記のコードを実行すると以下のようなエラーが出るのですが、logを見てもわからなかったので解決方法をご教授願います。
実行結果(ログイン後)

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

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

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

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

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

guest

回答3

0

sql 発行の部分が誤ってるまたは、何かエラーを検出してるんだと思います。
dbが入っているディレクトリにlogがでていると思います。(出てない場合には、環境設定(conf)ででるように設定してください)

投稿2018/11/12 08:47

akirafudo6

総合スコア341

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

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

xxxxxxx

2018/11/12 14:36

ありがとうございます。 試して見たいと思います。
guest

0

phpにXdebug拡張を組み合わせてのリモートデバッグをすれば、
ステップ実行(1行ずつの実行)ができて
エラー箇所の特定につながるので便利です。

例えばMacでMAMPなら
「php Xdebug mac MAMP」などとネット検索して
詳しい記事を探してください。
例えばこの記事とか。
osxのmampでxdebugを有効にする - Qiita

投稿2018/11/12 04:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

xxxxxxx

2018/11/12 14:36

ありがとうございます。 試して見たいと思います。
guest

0

dieで意図的にエラーメッセージだされてますよね。どのdieで引っ掛かったかデバッグされてはいかがでしょうか。

db_query()が失敗しているものと思われますが、もし独自実装されたものであれば、提示情報だけでは確かめようがないので、ご自身でデバッグを行ってもらうしかありません。

投稿2018/11/12 03:02

m.ts10806

総合スコア80852

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

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

xxxxxxx

2018/11/12 14:36

ありがとうございます。 試して見たいと思います。
m.ts10806

2018/11/12 20:57

解決となったのは良いのですが、結局どのように解決されたのでしょうか? teratailでは解決となったお礼と共に質問者さんがどのように理解し、解決できたのかをコメントすることが推奨されています(本当に解決に繋がってるか、理解は意図通りされたかわかりませんよね)
xxxxxxx

2018/11/13 13:32

あまりサイトの仕組みがわからず申し訳ございませんでした。 今現在取り掛かっているところですのでまたコメントさせていただきます
m.ts10806

2018/11/13 14:24

私より長くされてる方でそこそこの回数質問されてるのでそのあたりは勝手知ってるものかと思ってましたが… 解決済みを急に取り消すのも戸惑いがうまれるので慎重にされた方がよいかと
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問