-1

以前のユーザーの選択に応じて DynamicValues を持つ 2 つ以上のチェックボックスを持つフォームがあります。

<?php if (isset($_POST['submit'])) { 
if(sizeof($_POST['price']) == 2){ 
mysql_query("INSERT INTO price (value1, value2)
VALUES ('???????????????????????')");
 } 
 else{ 
 echo "NOT OK";  } 
 } 
?>
<form id="send" action="send.php" method="post">
    Price 1<input name="price[]" type="checkbox" value="DynamicValue"> 
    Price 2<input name="price[]" type="checkbox" value="DynamicValue2"> 
    Price 3<input name="price[]" type="checkbox" value="DynamicValue3">
    <input name="submit" type="submit" value="Send" />
</form>

選択した各チェックボックスの正しい値を取得するために VALUES に含める必要があるもの。ユーザーは、リストのどこでも 2 つのチェックボックスをオンにできる必要がありますか?

チェックボックスはたまたま 3 つ以上になる場合があります。チェックボックスの数は、以前のユーザーの選択によっても異なります。

チェックボックスの値は数値になります。

私の質問が答えられるほど明確であることを願っています。

4

4 に答える 4

1

ループを使用しforeachて値を設定し、SQL インジェクションを防ぐためにエスケープする-

if(sizeof($_POST['price']) == 2){ 
$i=0;
foreach($_POST['price'] as $prices){
   $price[$i] = mysql_real_escape_string($prices);
   $i++;
}
mysql_query("INSERT INTO price (value1, value2) VALUES ({$price[0]},{$price[1]})");

このmysql_*拡張機能は PHP 5.5.0 で非推奨になり、将来的に削除される予定です。代わりに、MySQLiまたはPDO_MySQL拡張機能を使用する必要があります。詳細については、MySQL: APIガイドの選択および関連する FAQも参照してください。

于 2012-12-28T17:27:26.533 に答える
0

これは基本的なPHP配列アクセスです。

$query = "INSERT INTO price (value1, value2) VALUES (". $_POST['price'][0]) .", " . $_POST['price'][0]) . ")";
mysql_query($query);

ただし、いくつかの点に注意してください。現在、MySQLインジェクションからデータベースを保護するために何もしていません。攻撃者がテーブル全体を削除したり、データベースを完全に削除したりするのは非常に簡単です。

また、関数を使用しないでくださいmysql_*。これらは非推奨であり、使用しないでください。mysqli_*関数、PDO、またはより最新で安全な何かを使用します。

于 2012-12-28T17:24:28.517 に答える
0

あなたはそのようにそれらを挿入することができます

$price = $_POST['price'] ;

    mysql_query("INSERT INTO price (value1, value2,value3)
     VALUES ('".$price[0]."' ,'".$price[1]."' ,'".$price[2]."'  )") ;
于 2012-12-28T17:26:25.033 に答える
0

コードまたはアルゴリズムに問題があるかどうかはわかりませんが、コードに問題があり、PHP の初心者である場合は、役立つ可能性があります。

<?php
    if (isset($_POST['submit'])) {

        if(!isset($_POST['price']))
            echo "No prices selected!";

        elseif(count($_POST['price'])==2) { //exactely 2 prices selected

            $product = $_POST['product'];
            foreach ($_POST['price'] as $value) {
                $sql =  "INSERT INTO price (product, value) VALUES (\"{$product}\", \"{$value}\")";
                mysql_query($sql);
            }

         } else
             echo "You need select 2 prices!";
     }
    ?>
    <form id="send" method="post">
        <input name="product" type="hidden" value="ID3">
        Price 1<input name="price[]" type="checkbox" value="DynamicValue"<?php if (isset($_POST['price']) && in_array('DynamicValue', $_POST['price'])) echo ' checked'; ?>>
        Price 2<input name="price[]" type="checkbox" value="DynamicValue2"<?php if (isset($_POST['price']) && in_array('DynamicValue2', $_POST['price'])) echo ' checked'; ?>>
        Price 3<input name="price[]" type="checkbox" value="DynamicValue3"<?php if (isset($_POST['price']) && in_array('DynamicValue3', $_POST['price'])) echo ' checked'; ?>>
        <input name="submit" type="submit" value="Send" />
    </form>
于 2012-12-28T17:29:53.803 に答える