0

日付のテキストボックスに入力しても、php の日付に問題があります。データベースでは空です。

ここに私のphpページがあります:

    <?php
session_start();
if (!array_key_exists("user", $_SESSION)) {
    header('Location: index.php');
    exit;
}
require_once("Includes/db.php");
$wisherID = WishDB::getInstance()->get_wisher_id_by_name($_SESSION['user']);

$wishDescriptionIsEmpty = false;
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (array_key_exists("back", $_POST)) {
        header('Location: editWishList.php');
        exit;
    } else
    if ($_POST['wish'] == "") {
        $wishDescriptionIsEmpty = true;
    } else if ($_POST["wishID"] == "") {
        WishDB::getInstance()->insert_wish($wisherID, $_POST["wish"], $_POST["dueDate"]);
        header('Location: editWishList.php');
        exit;
    } else if ($_POST["wishID"] != "") {
        WishDB::getInstance()->update_wish($_POST["wishID"], $_POST["wish"], $_POST["dueDate"]);
        header('Location: editWishList.php');
        exit;
    }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link type="text/css" href="jquery-ui-1.8.24.custom/css/smoothness/jquery-ui-1.8.24.custom.css" rel="stylesheet" />
        <script type="text/javascript" src="jquery-ui-1.8.24.custom/js/jquery-1.8.0.min.js"></script>
        <script type="text/javascript" src="jquery-ui-1.8.24.custom/js/jquery-ui-1.8.24.custom.min.js"></script>
        <script type="text/javascript" src="jquery-ui-1.8.24.custom\development-bundle\ui\i18n\jquery.ui.datepicker-fr.js"></script>
        <script type="text/javascript">
            $(function() {
        $.datepicker.setDefaults( $.datepicker.regional[ "" ] );
        $( "#datepicker" ).datepicker( $.datepicker.regional[ "fr" ] );

    });         
        </script>
    </head>
    <body>
        <?php
        if ($_SERVER["REQUEST_METHOD"] == "POST")
            $wish = array("id" => $_POST["wishID"], "description" => $_POST["wish"], "due_date" => $_POST["dueDate"]);
        else
        if (array_key_exists("wishID", $_GET))
            $wish = mysqli_fetch_array(WishDB::getInstance()->get_wish_by_wish_id($_GET["wishID"]));
        else
            $wish = array("id" => "", "description" => "", "due_date" => "");
        ?>
        <form name="editWish" action="editWish.php" method="POST">
            <input type="hidden" name="wishID" value="<?php echo $wish["id"]; ?>" />
            <table>
                <tr>
                    <td>Describe your wish:</td>
                    <td><input type="text" name="wish"  value="<?php echo $wish['description']; ?>" /></td>
                    <td><?php if ($wishDescriptionIsEmpty) echo "Please enter description"; ?></td>
                </tr>
                <tr>
                    <td>When do you want to get it?</td>

                    <td><input type="text" name="due_date" id="datepicker" value="<?php echo $wish['due_date']; ?>" /></td>
                </tr>                
            </table>
            <input type="submit" name="saveWish" value="Save Changes"/>
            <input type="submit" name="back" value="Back to the List"/>

        </form>
        je suis 
        </br>

    </body>
</html>

db.php の対応するメソッドは次のとおりです。

function insert_wish($wisherID, $description, $dueDate) {
    $description = $this->real_escape_string($description);
    if ($duedate == '') {
        $this->query("INSERT INTO wishes (wisher_id, description)" .
                " VALUES (" . $wisherID . ", '" . $description . "')");
    } else
        $this->query("INSERT INTO wishes (wisher_id, description, due_date)" .
                " VALUES (" . $wisherID . ", '" . $description . "', '" . $dueDate . "')");
}    

public function update_wish($wishID, $description, $duedate) {
    $description = $this->real_escape_string($description);
    if ($duedate == null) {
        $this->query("UPDATE wishes SET description = '" . $description . "', due_date = NULL WHERE id = " . $wishID);
    } else
        $this->query("UPDATE wishes SET description = '" . $description . "', due_date = '" . $duedate . "' WHERE id = " . $wishID);
}

日付にはdatepickerクエリコンポーネントを使用しています。エラーの場所を特定できますか?

4

1 に答える 1

1

入力要素に間違った名前を付けたと思います。下に差し替え

<input type="text" name="due_date" id="datepicker" 
       value="<?php echo $wish['due_date']; ?>" />

<input type="text" name="dueDate" id="datepicker" 
       value="<?php echo $wish['due_date']; ?>" />

日付値を取得するために使用$_POST["dueDate"]していますが、マークアップの名前が正しくありません。

編集 ::

@simonTifo がコメントで言ったように、「00-00-0000 のように保存されたデータベースのビットを正確な日付で返します」、 php で日付関数を使用するだけで、この問題を克服するためのフォーマット関連の問題が発生する可能性があります。したがって、コードは次のようになります。

WishDB::getInstance()->insert_wish($wisherID, $_POST["wish"], 
                              date('Y-m-d H:i:s', $_POST["dueDate"]));

その機能マニュアルを確認し、必要に応じて任意のフォーマットを設定してください。

これが役立つことを願っています!!

于 2012-10-06T11:25:57.147 に答える