-3

更新:これは、クエリの実行後に得られる結果です。

NewiTem9,desc,video9.swf,9,0,0,1,0,550,500,item9.jpg,0,swf,prev,0,00,0,2013-04-29 03:23:43,1,0,0,0,newitem9,0

HTML には、次のチェックボックスがあります。

<input type="checkbox" name="starter" value="1" id="starter0">

これを他の要素とともにmysqlに挿入すると(他の要素では問題ありません。問題なく挿入され、適切に表示されます)

mysql_query("
    INSERT INTO datatab (
        name, description, url, category_id, category_parent, width, height,
        image, activado, filetype, instructions, date_added, show_ads, rmode,
        power_id, starter, seo_url, submitter
    )
    VALUES (
        '".escape($_POST['name'])."', '".escape($_POST['description'])."',
        '$url', $_POST[category], $category[parent_id], '$_POST[width]',
        '$_POST[height]', '$img', $_POST[activado], '$ext',
        '".escape($_POST['instructions'])."', '$date', $_POST[show_ads],
        $_POST[rmode], '$_POST[power_id]', '$_POST[starter]', '$seo_url',
        '$_POST[submitter]')
    ") or die ('There was a MySql error when adding the game: '.mysql_error());

次に、データが追加されますが、前述のチェックボックスの値はありません。

データベース テーブルの設定:

Name: starter
Type: TinyINT
Lenght/Values: 1
default: As defined : 0

他のすべてのデータが挿入されて機能しているのに、チェックボックスのデータが挿入されないのはなぜですか?

誰かがこれで私を助けてくれますか?

ありがとう

4

4 に答える 4

1

チェックボックスがオフの場合、サーバーには何も送信されません。空白または 0 の値でさえありません。チェックされていないチェックボックスは、フォーム要素が存在しないかのようです。

于 2013-04-29T06:20:41.860 に答える
0

チェックボックスで使用できる気の利いたトリックは、チェックボックスの前に非表示の入力にチェックされていない値を提供することです。

<input type="hidden" name="starter" value="0">
<input type="checkbox" name="starter" value="1" id="starter0">

このようにして、チェックボックスがオフのままの場合、少なくともキーと値のペアがフォームとともに送信されます。

あなたのクエリでは、これは文字列連結と悪いサニタイズ方法のひどい組み合わせです。

最近は MySQLi または PDO を使用する必要があります (PDO など)。

// Assuming the $pdo variable contains your PDO instance and all $_POST values
// have been verified as existing

$stmt = $pdo->prepare('
    INSERT INTO datatab (
        name, description, url, category_id, category_parent, width, height,
        image, activado, filetype, instructions, date_added, show_ads, rmode,
        power_id, starter, seo_url, submitter
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
');

$stmt->bindParam(1, $_POST['name']);
$stmt->bindParam(2, $_POST['description']);
// etc
$stmt->bindParam(16, $_POST['starter']);
$stmt->bindParam(17, $seo_url);
$stmt->bindParam(18, $_POST['submitted']);

$stmt->execute();
于 2013-04-29T06:22:59.033 に答える
0
if (isset($_POST['starter']))
$starter = 1;
else
$starter = 0;

次に、DB に $starter を保存します。

mysql_query("INSERT INTO {table name}(..,starter) VALUES (..,'".$starter."');
于 2013-04-29T06:21:30.033 に答える