4

PHPを使用してフォームから日付を挿入しています。ユーザーがデータベースにデータを挿入できる24のフィールドがあります。問題は、MySQLで空のフィールドが行にならないようにするにはどうすればよいですか?ユーザーから空のままになっているのですか?どのフィールドも必須ではなく、フィールドは入力テキストフィールドとしてフォーマットされます。私が使用していると考えられたのは、一度クエリされた値セクションのifステートメントです。次に例を示します。

/**************
* HTML Form
**************/
<form action='insert.php' method='post'>

<p> What items do you have for sale?</p>

Item 1: <input type='text' name='item1'> Price: <input type='text' name='item1cost'>
Item 2: <input type='text' name='item2'> Price: <input type='text' name='item2cost'>
Item 3: <input type='text' name='item3'> Price: <input type='text' name='item3cost'>

<input type="submit" name="Submit" value="Submit">
</form>


/**************
* PHP
**************/

$user = (from $_SESSION)
$item1      = $_POST['item1'];
$item1cost  = $_POST['item1cost'];
$item2      = $_POST['item2'];
$item2cost  = $_POST['item2cost'];
$item3      = $_POST['item3'];
$item3cost  = $_POST['item3cost'];


/*********************
* MySQL INSERT query
*********************/

$query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`)" 
                                   . "VALUES ($user,'$item1', '$item1cost'),
                                             ($user,'$item2', '$item2cost'),
                                             ($user,'$item3', '$item3cost'),

ユーザーがフィールドのいずれかを空白のままにした場合、データベースに挿入しないようにするにはどうすればよいですか?ユーザーIDだけで空の行がないようにするにはどうすればよいですか?

4

3 に答える 3

3

値を配列に入れ、それらが空かどうかをチェックし (セキュリティの問題に関して他のチェックが推奨されるかもしれません)、データベースにロードできる $values 変数を作成します。

$item[0]      = mysql_real_escape_string(trim($_POST['item1']));
$itemcost[0]  = mysql_real_escape_string(trim($_POST['item1cost']));
$item[1]      = mysql_real_escape_string(trim($_POST['item2']));
$itemcost[1]  = mysql_real_escape_string(trim($_POST['item2cost']));
// and so on

$values = "";
for ($i = 0; $i < 2; ++$i) {
    if ($item[$i] != "" && $itemcost[$i] != "") {
        $values .= "($user,'$item[$i]', '$itemcost[$i]'),";
    }
}

/*********************
* MySQL INSERT query
*********************/

if ($values != "") {
  $values = substr($values, 0, -1);
  $query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`)" 
                                   . " VALUES $values";
}

HTML 入力フィールド名を item[] のような配列として指定し、それらを直接 php-arrays に解析することも可能です。

于 2012-12-11T16:21:40.127 に答える
0

HTMLを配列値として保存できます。

   <input type="text" name="item[]" />
   <input type="text" name="itemcost[]" />

次に、次のようにループできます。

   $query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`) VALUES ";

   foreach($_POST['item'] as $key => $value){
   {
        // Check if it's not filled.
        if($value !== '')
        {
              $query .= "($user, '$value', $_POST['itemcost'][$key])"; // whatever you need to insert.
        }
   }
   // Run the query.

タイプミスがあるかもしれませんが、コンセプトはそこにあります。

于 2012-12-11T16:56:19.487 に答える
0

ポージングする前に、クライアント側の検証を使用してください。フォームが要件に適合しない場合、ユーザーに通知され、そうするように強制されます。

ヘルプについては、このチュートリアルを参照してください。

于 2012-12-11T16:39:57.670 に答える