2012-01-09 1 views
25

以下はHTMLフォームのスニペットで、テーブル行のオプションをそれに応じてプルします。PHPを使用してHTML SELECT/OPTIONの値をNULLにすることはできますか?

私がしたいことは、最初のオプション値をNULLにすることです。選択肢がない場合は、フォームがデータベースに送信されるときにNULLが入力されます。

<td>Type</td> 
    <td>:</td> 
    <td><select name="type_id" id="type_id" class="form"> 
    <option value=""></option> 
     <?php 
      $sql = mysql_query("SELECT type_id, type FROM $tbl_add_type") or die(mysql_error()); 
      while ($row = mysql_fetch_array($sql)) 
       { 
        echo "<option value=".$row['type_id'].">" . $row['type'] . "</option>"; 
       } 
     ?> 
    </select>*</td> 

これは可能ですか?あるいは、誰かがこれをやるより簡単な方法を提案することができますか?

おかげ

更新:答えてくれてありがとう、私はNULLに変換するには、以下の詳細な方法を使用しています。

if ($_POST['location_id'] === '') 
        { 
         $_POST['location_id'] = 'NULL'; 
        } 

ただし、このNULL値を次のクエリで使用しようとすると機能しません。

UPDATE addresses SET location_id='NULL' WHERE ipid = '4791' 

私は...

アップデート2ではなくlocation_id=NULLする必要があります知っているが、これを実行する方法がわからない:、ノー

if ($_POST['location_id'] === '') 
{ 
$_POST['location_id'] = 'NULL'; // or 'NULL' for SQL 
} 

$notes=isset($_POST['notes']) ? mysql_real_escape_string($_POST['notes']) : ''; 
//$location_id=isset($_POST['location_id']) ? mysql_real_escape_string($_POST['location_id']) : ''; 
$ipid=isset($_POST['ipid']) ? mysql_real_escape_string($_POST['ipid']) : ''; 


$sql="UPDATE addresses 
    SET notes='$notes', location_id='$location_id' 
    WHERE ipid = '$ipid'"; 


mysql_query($sql) or die(mysql_error()); 

答えて

27

:これは私のクエリがどのように動作するかですPOST/GETの値は決してnullではありません。可能な限り最良の文字列は空の文字列で、null/'NULL'に変換できます。

if ($_POST['value'] === '') { 
    $_POST['value'] = null; // or 'NULL' for SQL 
} 
+0

本当に? 'var_dump($ _ GET ['missingKey']); // NULL' http://codepad.org/2s7jCBbc – AlienWebguy

+0

ありがとうdeceze - 私はあなたの答えを使用しましたが、まだ右のNULLにそれを得ることに問題がある - あなたが私の更新を参照してください。何か案は? – Bernard

+0

@AlienこれはPOST/GET値ではない、*存在しない*値です。 – deceze

3

あなたが必要とするのは、物のポストサイドのチェックです。

<?php 
if(empty($_REQUEST['type_id']) && $_REQUEST['type_id']!=0) $_REQUEST['type_id'] = null; 
+0

それは危険です。 'type_id = 0'が有効なIDであればどうでしょうか? – AlienWebguy

+0

それは本当です。実際には、私は別のアプローチを提案しますが、現実的には質問尋問者にとっては面倒です。 – Jason

0

はい、可能です。あなたはこのような何かをする必要があります:

if(isset($_POST['submit'])) 
{ 
    $type_id = ($_POST['type_id'] == '' ? "null" : "'".$_POST['type_id']."'"); 
    $sql = "INSERT INTO `table` (`type_id`) VALUES (".$type_id.")"; 
} 

$_POST['type_id']変数が空の値を持っていないか調べ。 "はい"の場合は、NULLを文字列として割り当てます。 それ以外の場合は、SQLの表記

+0

PHP構文エラー:予期しない ']'行3 – Jason

+0

thx、ヒント用。私はそれを修正した –

0

の値を割り当てます。そのため、データベースではNULL値がまったく嫌です。
に理由があることを願っています。

関連する問題