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

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

ただいまの
回答率

88.64%

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

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 818

xxxxxxx

score 50

<?php
error_reporting(E_ALL);
//ini_set('display_errors','On');

session_cache_limiter("public");
session_start();

require "conf.php";

$prmarray = cnv_formstr($_POST);

if(!chk_auth($prmarray)){
    $act = DEFSCR;
}
elseif (isset($prmarray["act"])){
    $act = $prmarray["act"];
}
else{
    $act = DEFSCR;
}
date_default_timezone_set('Asia/Tokyo');
$dt = date("Y-m-d H:i:s");
?>

<?php $conn = db_conn(); ?>
<html lang="ja">
<head>
<meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title><?=ADMINAPPNAME?></title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div align="center">
<?php
call_user_func("screen_".$act,$prmarray);
?>
</div>
</body>
</html>
<?php db_close($conn); ?>
<?php
function screen_log($array){
?>
    <h3>ログイン画面</h3>
    <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>">
        <table border="1">
        <tr>
        <td>ログインID</td>
        <td><input type="text" name="l_id"></td>
        </tr>
        <tr>
        <td>パスワード</td>
        <td><input type="password" name="l_pass"></td>
        </tr>
        <tr>
        <td> </td>
        <td><input type="submit" value="ログイン" name="sub1"></td>
        </tr>
        </table>
        <input type="hidden" name="act" value="src">
    </form>
<?php
}

function screen_src($array){
    $key = (isset($array["key"])) ? $array["key"] : "";
    $p = (isset($array["p"])) ? intval($array["p"]) :1;
    $p =($p < 1) ? 1 : $p;
?>

    <?php disp_menu(); ?>
    <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>">
        <table border="0">
        <tr>
        <td><input type="text" name="key" value="<?=$key?>"></td>
        <td><input type="submit" value="検索" name="sub1"></td>
        </tr>
        </table>
        <input type="hidden" name="act" value="src">
    </form>

    <?php disp_listdata($key, $p); ?>

<?php
}

function screen_entconf($array){
    if(!chk_data($array)){ return; }
    extract($array);
?>


<?php
}

function screen_dojob($array){
    $res_mes = db_update($array);
?>

    <p><?php disp_menu(); ?></p>
    <h3>処理完了画面</h3>

    <table border="0" bgcolor="pink">
    <tr>
    <td>処理結果</td>
    <td><?=$res_mes; ?></td>
    </tr>
    </table>
<?php
}

function chk_auth($array){
    if(isset($_POST["l_id"]) and isset($_POST["l_pass"])){
        if($_POST["l_id"] == LOGINID and $_POST["l_pass"] == LOGINPASS){
            $_SESSION["auth"] = AUTHADMIN;
            return TRUE;
        }else{
            return FALSE;
        }
    }else{
        if(!isset($_SESSION["auth"])){
            return FALSE;
        }else {
            if($_SESSION["auth"] == AUTHADMIN){
                return TRUE;
            }else{
                return FALSE;
            }
        }
    }
}

function chk_data($array){

    $strerr = "";
    if($array["l_title"] == ""){
        echo "<p>タイトルが入力されていません";
        $strerr = "1";
    }
    if($array["year"] == "" && $array["month"] == "" && $array["day"] == ""){
        echo "<p>日付が入力されていません";
        $strerr = "1";
    }
    if($array["hour"] == "" && $array["minute"] == ""){
        echo "<p>時間が入力されていません";
        $strerr = "1";
    }
    if($array["l_comment"] == ""){
        echo "<p>コメントが入力されていません";
        $strerr = "1";
    }
    if($strerr == "1"){
        return FALSE;
    }
    else{
        return TRUE;
    }
}

function cnv_formstr($array){
    foreach ($array as $k => $v) {
        if(get_magic_quotes_gpc()){
            $v = stripslashes($v);
        }
        $v = htmlspecialchars($v);
        $array[$k] = $v;
    }
    return $array;
}

function cnv_sqlstr($string){
    $det_enc = mb_detect_encoding($string,"UTF-8,EUC-JP,SJIS");
    if($det_enc and $det_enc != ENCDB){
        $string = mb_convert_encoding($string,ENCDB,$det_enc);
    }
    $string = addslashes($string);
    return $string;
}

function cnv_dispstr($string){
    $det_enc = mb_detect_encoding($string,"UTF-8,EUC-JP,SJIS");
    if($det_enc and $det_enc != ENCDISP){
        return mb_convert_encoding($string,ENCDISP,$det_enc);
    }
    else{
        return $string;
    }
}

function get_data($id){
    global $conn;

    $sql = "SELECT * FROM scheduledata";
    $sql .= " WHERE (id = ".cnv_sqlstr($id).")";
    $res = db_query($sql,$conn) or die("データ抽出エラー");
    $row = mysqli_fetch_array($res,MYSQLI_ASSOC);

    return $row;
}

function disp_listdata($key,$p){
    global $conn;

    $st = ($p - 1) * intval(ADMINPAGESIZE);

    $sql = "SELECT * FROM scheduledata";
    if(strlen($key) > 0){
        $sql .= " WHERE (year LIKE '%".cnv_sqlstr($key)."%')";
        $sql .= " OR (l_title LIKE '%".cnv_sqlstr($key)."%')";
        $sql .= " OR (month LIKE '%".cnv_sqlstr($key)."%')";
        $sql .= " OR (day LIKE '%".cnv_sqlstr($key)."%')";
        $sql .= " OR (hour LIKE '%".cnv_sqlstr($key)."%')";
        $sql .= " OR (minute LIKE '%".cnv_sqlstr($key)."%')";
        $sql .= " OR (l_comment LIKE '%".cnv_sqlstr($key)."%')";
    }
  $sql .= " ORDER BY year,month,day,hour,minute ASC LIMIT $st,".intval(ADMINPAGESIZE);
    $res = db_query($sql,$conn) or die("データ抽出エラー");
    if($res->num_rows <= 0){
        echo "<p>データは登録されていません";
        return;
    }

?>
    <table border="1">
        <tr>
            <td> </td>
            <td>タイトル</td>
            <td>年</td>
            <td>月</td>
            <td>日</td>
            <td>時</td>
            <td>分</td>
            <td>コメント</td>
        </tr>
    <?php while ($row = $res->fetch_array(MYSQLI_ASSOC)) {?>
    <tr>
        <td>
            <table>
                <tr>
                    <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>">
                        <td><input type="submit" value="更新"></td>
                        <input type="hidden" name="act" value="upd">
                        <input type="hidden" name="id" value="<?=$row["id"]?>">
                    </form>
                    <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>">
                        <td width="50%"><input type="submit" value="削除"></td>
                        <input type="hidden" name="act" value="delconf">
                        <input type="hidden" name="id" value="<?=$row["id"]?>">
                    </form>
                </tr>
        </table>
    </td>
    <td><?=cnv_dispstr($row["l_title"])?></td>
    <td><?=cnv_dispstr($row["year"])?></td>
    <td><?=cnv_dispstr($row["month"])?></td>
    <td><?=cnv_dispstr($row["day"])?></td>
    <td><?=cnv_dispstr($row["hour"])?></td>
    <td><?=cnv_dispstr($row["minute"])?></td>
    <td><?=cnv_dispstr($row["l_comment"])?></td>
    </tr>
    <?php } ?>
    </table>

    <?php disp_pagenav($key,$p); ?>
<?php
}


function disp_menu(){
?>
    <table>
        <tr>
            <td><big><b><?=ADMINAPPNAME?></b></big></td>
            <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>">
                <td><input type="submit" value="登録画面へ"></td>
                <input type="hidden" name="act" value="ent">
            </form>
            <form method="POST" action="<?=$_SERVER["SCRIPT_NAME"]?>">
                <td><input type="submit" value="スケジュール一覧画面へ"></td>
                <input type="hidden" name="act" value="src">
            </form>
        </tr>
    </table>
<?php
}

function disp_pagenav($key,$p = 1){
    global $conn;

    $prev = $p - 1;
    $prev = ($prev < 1) ? 1 : $prev;
    $next = $p + 1;

    $sql = "SELECT COUNT(*) AS cnt FROM scheduledata";
    if(isset($key)){
        if(strlen($key) > 0){
            $sql .= " WHERE (year LIKE '%".cnv_sqlstr($key)."%')";
            $sql .= " OR (month LIKE '%".cnv_sqlstr($key)."%')";
            $sql .= " OR (day LIKE '%".cnv_sqlstr($key)."%')";
            $sql .= " OR (hour LIKE '%".cnv_sqlstr($key)."%')";
            $sql .= " OR (minute LIKE '%".cnv_sqlstr($key)."%')";
        }
    }
    $res = db_query($sql,$conn) or die("データ抽出エラー");
    $row = $res->fetch_array(MYSQLI_ASSOC);
    $recordcount = $row["cnt"];

?>

function db_close($conn){
    $conn->close();
}
?>


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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/12 23:36

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

    キャンセル

  • 2018/11/13 05:57

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

    キャンセル

  • 2018/11/13 22:32

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

    キャンセル

  • 2018/11/13 23:24

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

    キャンセル

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/12 23:36

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/12 23:36

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

    キャンセル

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

  • ただいまの回答率 88.64%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る