-1

データベースに保存しているフォームに少し問題があります。

基本的に、私はチェックボックスを備えたフォームを持っています。すべてのチェックボックスはmysqlデータベース内の列に接続されており、チェックされ、送信ボタンが押されると、そのチェックボックスの値が保存されます。そうでない場合は空のままになります。

Everyting は正常に動作し、データベースに保存されますが、チェックされていないボックスには次の通知が表示されます。

Undefined index: WBR in /var/www/vhosts/leadserver.be/httpdocs/LPRamen/insert.php on line 35 

HTML の一部を次に示します。

<table> 
     <tr>
         <td><input id="vlaams-brabant" type="checkbox" name="VBR" value="Vlaams-Brabant"/> Vlaams-Brabant</td>
         <td><input id="waals-brabant" type="checkbox" name="WBR" value="Waals-Brabant"/> Waals-Brabant </td>
     </tr>
     <tr>    
         <td><input id="oost-vlaanderen" type="checkbox" name="OVL" value="Oost-Vlaanderen"/> Oost-Vlaanderen </td>
         <td><input id="west-vlaanderen" type="checkbox" name="WVL" value="West-Vlaanderen"/> West-Vlaanderen </td>
     </tr>

などなど。この背後にある PHP は次のとおりです。

  $adds['nameCom'] = $conn->real_escape_string($_POST['nameCom']);
    $adds['name'] = $conn->real_escape_string($_POST['name']);
    $adds['number'] = $conn->real_escape_string($_POST['number']);
    $adds['email'] = $conn->real_escape_string($_POST['email']);

    $adds['VBR'] = $conn->real_escape_string($_POST['VBR']);
    $adds['WBR'] = $conn->real_escape_string($_POST['WBR']);
    $adds['OVL'] = $conn->real_escape_string($_POST['OVL']);
    $adds['WVL'] = $conn->real_escape_string($_POST['WVL']);
    $adds['LIM'] = $conn->real_escape_string($_POST['LIM']);
    $adds['ANT'] = $conn->real_escape_string($_POST['ANT']);
    $adds['LUI'] = $conn->real_escape_string($_POST['LUI']);
    $adds['HEN'] = $conn->real_escape_string($_POST['HEN']);
    $adds['LUX'] = $conn->real_escape_string($_POST['LUX']);
    $adds['NAM'] = $conn->real_escape_string($_POST['NAM']);
    $adds['NAT'] = $conn->real_escape_string($_POST['NAT']);
    $adds['INT'] = $conn->real_escape_string($_POST['INT']);
    $adds['BHG'] = $conn->real_escape_string($_POST['BHG']);

    $adds['leads'] = $conn->real_escape_string($_POST['leads']);
    $adds['akkoord'] = $conn->real_escape_string($_POST['akkoord']);
    //$adds['Regio'] = $conn->real_escape_string($_POST['Regio']); 
    //Regio is geen string maar een array dus kan ook niet zo gedeclareerd worden
    /*$Regio = array();
    $adds['Regio'] = "";

    if(count($_POST['Regio']) > 0) {
        foreach($_POST['Regio'] as $key=>$value)
            $Regio[] = $conn->real_escape_string($value);
    }

    $adds['Regio'] = implode(',', $Regio);
    */
    // query voor INSERT INTO
    $sql = "INSERT INTO `dataramen` 
    (`nameCom`, `name`, `number`, `email`, `VBR`, `WBR`, `OVL`, `WVL`, `LIM`, `ANT`, `LUI`, `HEN`, `LUX`, `NAM`, `NAT`, `INT`, `BHG`, `leads`, `akkoord`) 
    VALUES 
    ('". $adds['nameCom']. "', '". $adds['name']. "', '". $adds['number']. "', '". $adds['email']. "', '". $adds['VBR']. "', '". $adds['WBR']. "', '". $adds['OVL']. "', '". $adds['WVL']. "', '". $adds['LIM']. "', '". $adds['ANT']. "', '". $adds['LUI']. "', '". $adds['HEN']. "', '". $adds['LUX']. "', '". $adds['NAM']. "', '". $adds['NAT']. "', '". $adds['INT']. "', '". $adds['BHG']. "', '". $adds['leads']. "' , '". $adds['akkoord']. "')"; 

心に留めておいてください、これらは私のコードのスニペットにすぎません。合計は投稿するには長すぎます

これにはすでにいくつかのトピックがあることは知っていますが、調査を行ったところ、どの解決策も機能していないようです。誰かがこれを見て、何が問題なのかを知ることができれば、私はとてもうれしいです.

フィールドが空のままの場合、データベースに標準値を設定しようとしましたが、うまくいきませんでした。データベース列のインデックスも正しく設定しましたが、それでも同じ通知が表示されます。

4

3 に答える 3

2

undefined index メッセージは、存在しない配列インデックスにアクセスしようとしていることを意味します。
チェックボックスを使用する場合、チェックされていないと値セットを取得できません。

そのため、フォームを処理するときに、チェックボックスが送信されているかどうかを確認してください。

$checkbox_value = (isset($checkbox_value)) ? $checkbox_value : 'default value';
于 2013-03-29T15:56:27.853 に答える
1

Undefined index: WBR in /var/www/vhosts/leadserver.be/httpdocs/LPRamen/insert.php on line 35

その警告を回避するには、使用する前に配列要素が設定されているかどうかを確認する必要があります。

$adds['WBR'] = $conn->real_escape_string($_POST['WBR']);

することができます

if(isset($_POST['WBR']))
{
    $adds['WBR'] = $conn->real_escape_string($_POST['WBR']);
}

また

    $adds['WBR'] = isset($_POST['WBR']) ? $conn->real_escape_string($_POST['WBR']):0;
于 2013-03-29T15:56:15.203 に答える
1

チェックボックスのデータは、チェックされている場合のみ $_POST 経由で送信されます。チェックされていない場合、VBR キーは配列に存在しません。

PHP 関数 isset() を使用して確認する必要があります。

$adds['VBR'] = (isset($_POST['VBR'])) ? $conn->real_escape_string($_POST['VBR']) : '';
于 2013-03-29T15:57:32.023 に答える