0

投稿を検索して回答を探しましたが、最も近い回答は「trying-to-post-date-via-php-with-mysql-need-help」というトピックからのものでした。

2つの入力フィールドを持つフォームがあります。ユーザーはhtml5ポップアップカレンダーピッカーから日付を選択し、時刻を入力して、フォームをmysqlデータベースに送信します。検証/データベースへのアップロードする日付と時刻のフィールドを取得するのに問題があります。

私のMySQLデータベースには、DATE型のcurdateという列を持つappointmentsというテーブルがあります。別の列は、タイプがTIMEのcurtimeと呼ばれます。

私のPHPファイルでは、ファイルの上部にPHP検証アクションとSQLアクションがあり、下部にスティッキーhtmlフォームがあります。フォームはフォームの送信に使用します

コードは次のとおりです。

$td = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $td );
if(isset($_POST['submitted'])) {
    require_once('mysqli_connect.php');
    $errors=array();
if(empty($_POST['curdate'])) {
            $errors[]='Your date did not match';
        } else {
            $td=mysqli_real_escape_string($dbc,trim($_POST['curdate']));
    }

    if(empty($_POST['curtime'])) {
            $errors[]='Your time is empty';
    } else {
        $tt=$_POST['curtime'];
    }
if(empty($errors)) {
    $q="INSERT INTO users (first_name,last_name,email,curdate,curtime,physician,reason) VALUES ('$fn','$ln','$e','$td','$tt','$phys','$reason')";
    $r=@mysqli_query($dbc,$q);

    if($r) {
        echo '<h1>Thanks</h1>
        <p>You are now registered</p><p><br/></p>';
    } else {
        echo '<h1>System Error</h1>
        <p class="error">You could not be registered</p>';
        echo '<p>'.mysqli_error($dbc).'<br/><br/>Query:'.$q.'</p>';
    }

    mysqli_close();
    include('includes/footer.html');
    exit();
    } else {
    echo '<h1>Error</h1>
    <p class="error">The following errors occurred:<br/>';
    foreach ($errors as $msg) {
        echo "-$msg<br/>\n";
    }
    echo '</p><p> Please try again</p><p><br/></p>';
    }
    mysqli_close($dbc);
}
4

2 に答える 2

2

MysqlまたはMysqliは「yyyy-mm-dd」として日付形式をサポートしているため、DBに挿入する前に日付と時刻を適切な形式に変換する必要があります

ユーザーがフォームを送信するときに現在の日時を挿入する場合は、次のクエリを使用します

    INSERT INTOユーザー(first_name、last_name、email、curdate、curtime、physician、reason)
               値('$ fn'、'$ ln'、'$ e'、CURDATE()、CURTIME()、'$ phys'、'$ reason')

ただし、フォームフィールドから日付を挿入する場合は、次のようにします。

    $ td = $ _ POST ['curdate'];
    $ tt = $ _ POST ['curtime'];

    $ td = date('Ymd'、strtotime($ td)); //日付をmysqlに受け入れられる「yyyy-mm-dd」に変換します
    $ tt = date('H:i:s'、strtotime($ tt)); //時間をHH:mm:ssに変換します

    //クエリを次のように適用します
     INSERT INTOユーザー(first_name、last_name、email、curdate、curtime、physician、reason)
               値('$ fn'、'$ ln'、'$ e'、'$ td'、'$ tt'、'$ phys'、'$ reason')
于 2012-11-02T04:37:15.513 に答える
0

mysqlでその行をテーブルの日付と時刻のタイプにした場合、問題が発生する可能性があります。その場合、そのように格納することはできません。そのようにしたい場合は、textまたはvarcharを使用してください...。

DATE-日付値をYYYY-MM-DDの形式で格納します。たとえば、2008-10-23。DATETIME-YYYY-MM-DD HH:MM:SSの形式の日付と時刻の値を格納します。たとえば、2008-10-2310:37:22。サポートされている日付と時刻の範囲は、1000-01-0100:00:00から9999-12-3123:59:59までです。TIMESTAMP-DATETIMEに似ていますが、MySQLのバージョンとモードによっていくつかの違いがあります。サーバーが実行されている場所。

于 2013-02-04T17:54:40.363 に答える