-3

私のウェブサイトには、「expiry_date」列を自動表示するCREATE TABLEクエリ、INSERT INTO、およびFORMがあります。私は初心者なので、フォーム、特にデータベースにデータを送信するための「expiry_date」フィールドの作成方法がわかりません。
"Expiry_date" フォーム フィールドを SQL QUERY に接続する方法を教えてください。すでに行ったことを示す 3 つの部分があります。

第一部

SQL クエリ:

CREATE TABLE `expirydate_table` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `firstname` VARCHAR( 45 ) NOT NULL ,
    `lastname` VARCHAR( 45 ) NOT NULL ,
    `email` VARCHAR( 45 ) NOT NULL ,
    `password` VARCHAR( 12 ) NOT NULL ,
    `signup_date` TIMESTAMP ON UPDATE 
    CURRENT_TIMESTAMP DEFAULT 
    CURRENT_TIMESTAMP NOT NULL ,
    `expiry_date` DATE NOT NULL ,
    PRIMARY KEY ( `id` ) ,
    UNIQUE (
    `email`
    )
    ) TYPE = MYISAM CHARACTER SET utf8 COLLATE 

    utf8_unicode_ci;

第二部

INSERT INTO `expirydate_table` ( `id` , `firstname` , `lastname` , `email` , `password` , `signup_date` , `expiry_date` ) 
VALUES (
'', 'pp', 'wiraj', 'pp@hotmail.com', 'test2009', NOW( ) , DATE_ADD(CURDATE( ) , INTERVAL 30 DAY ))

第3部

<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table align="center">
  <tr valign="baseline">
    <td nowrap align="right">Firstname:</td>
    <td><input type="text" name="firstname" value="" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Lastname:</td>
    <td><input type="text" name="lastname" value="" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Email:</td>
    <td><input type="text" name="email" value="" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Password:</td>
    <td><input type="text" name="password" value="" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Signup_date:</td>
    <td><input type="text" name="signup_date" size="32"></td>
  </tr>
  <tr valign="baseline">
    <td nowrap align="right">Expiry_date:</td>
    <td><input name="expiry_date" type="text" size="32"></td>
  </tr>
  
  <tr valign="baseline">
    <td nowrap align="right">&nbsp;</td>
    <td><input type="submit" value="Register"></td>
  </tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>
4

2 に答える 2

0

まず第一に、クライアントから日付を送信するのではなく、コードで日付を処理できる可能性があります。signup_dateそして最も重要なのは、すべての更新で変更したくないということです。したがって、テーブルスキーマを少し調整する必要があります。

CREATE TABLE `expirydate_table` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `firstname` VARCHAR( 45 ) NOT NULL ,
    `lastname` VARCHAR( 45 ) NOT NULL ,
    `email` VARCHAR( 45 ) NOT NULL ,
    `password` VARCHAR( 12 ) NOT NULL ,
    `signup_date` DATETIME NOT NULL,
    `expiry_date` DATETIME NOT NULL,
    PRIMARY KEY (`id`) ,
    UNIQUE (`email`)
)

そうは言っても、フォーム内のフィールドを削除することができsignup_upますexpiry_date

次に、送信された値を処理するアクションphpスクリプトを作成する必要があります。次のようになります。

<?php
//make sure that everything has been submitted
if (isset($_POST['firstname']) &&
    isset($_POST['lastname']) &&
    isset($_POST['email']) &&
    isset($_POST['password'])) {

    //do your cleanup and checks here
    $firstname = trim($_POST['firstname']);
    $lastname = trim($_POST['lastname']);
    $email = trim($_POST['email']);
    $password = $_POST['password'];

    //construct an INSERT statement
    $qry = 'INSERT INTO `expirydate_table` (`firstname` , `lastname` , `email` , `password` , `signup_date` , `expiry_date` ) VALUES ('; 

    $qry .= '"' . $firstname . '", ';
    $qry .= '"' . $lastname . '", ';
    $qry .= '"' . $email . '", ';
    $qry .= '"' . $password . '", ';
    $qry .= 'NOW(), ';
    $qry .= 'DATE_ADD(NOW(), INTERVAL 30 DAY))';

    //open connection to db
    $db = new mysqli('db_host', 'db_user', 'db_pwd', 'db_name');

    //execute your INSERT statement
    if ($db->query($qry) == TRUE) {     
        if ($db->insert_id) {
            $id = $db->insert_id;
        }
    } else {
        //add your error handling here
    }

    //render your page, use $id if you need to
}
?>

それは間違いなくあなたがそれを正しく行うために必要なすべてではありません。少なくとも、あなたのほうがいいです。

  • クライアントで入力検証を行う
  • サーバー側でユーザー入力を適切にチェック、検証、サニタイズする
  • プリペアドステートメントを使用する
  • 適切なエラー処理を実装する
于 2012-12-23T19:16:07.313 に答える
0

フォームから送信されたクエリを実行することを考えていますか?そうであれば、使用する必要があります

PHP

$_POST['nameofform'] を使用して投稿データにアクセスできます。'nameofform' はフォームの名前です。php の拡​​張機能を使用して、mysql クエリmysqliまたは PDO 拡張機能を実行する必要があります。

于 2012-12-23T18:20:23.960 に答える