2012-03-23 1 views
0

私は3つのフィールド多門フォームのPHPの問題

テキストフィールド、チェックボックス、checkbox2

彼らは口座番号すなわち 返さ[12345]第2回[12345]第三による配列です[12345]

を持つフォームを持っています

すべての値とキーを取得する必要があります。

戻り値に戻り値がある場合は、その値をデータベースに格納します。 返された場合は空であるいずれかのチェックボックスが クリックされた場合には、3番目であり、第二ありえない場合は申し訳ありませんと言う 見る第二がチェックされ、2番目と3番目は、更新データベース

を確認している場合には、3番目は、データベース にそれを更新されていない場合、3は2 の後に来ます

行は何もすべて

で記入しないか、確認された場合、次のように私はそれが機能していない持っているコードはあります。私は私のデータベースが更新され得るものかを確認するためにどのように任意のアイデアが

<? 
if (isset($_POST["update"])) // if it's not set, do nothing. 
{ 
include('cond.php'); 


$idx['Returned'] = array_keys($_POST['Returned']); 
$idx['2nd'] = array_keys($_POST['2nd']); 
$idx['3rd'] = array_keys($_POST['3rd']); 

for(
    $i = 0; 
    $i < min(array_map('count', $idx)); 
    $i++ ) 
    { 
    $AN = $idx['Returned'][$i]; 
    $RET = $_POST['Returned'][$AN]; 
    $Chk = $idx['2nd'][$i]; 
    $Val = $_POST['2nd'][$Chk]; 
    $Chk2 = $idx['3rd'][$i]; 
    $Val2 = $_POST['3rd'][$Chk2]; 


//If date is filled in 
if(!empty($RET)){ 

// store it 
$doit = "UPDATE `dbname`.`tname` SET `Returned`= '$RET' WHERE `account_number`='$AN'"; 
mysql_query($doit) or die('mySQL Error: ' . mysql_error()); 

}else{ 

//    2nd isn't filled check 3rd 
      if (empty($Val)) { 

//  3rd is filled in 
       If(!empty($Val2)) { 
      print "Third VOR cannot be checked before Second."; 
       }else{ 
//    3rd is not set but 2nd is 
       if(empty($Val2)){ 
       $doit = "UPDATE `dbname`.`tname` SET `Second`='$Val' WHERE `account_number`='$Chk'"; 
       mysql_query($doit) or die('mySQL Error: ' . mysql_error()); 
      }else{ 
//   2nd and 3rd are set 
       $doit = "UPDATE `dbname`.`tname` SET `Second`='$Val' ,`Third`='$Val2' WHERE `account_number`='$Chk'"; 
       mysql_query($doit) or die('mySQL Error: ' . mysql_error()); 
      }//end if 2 
       }//end if 
      }//end if 


    } 

}} 
?> 

なし警告 //例警告// 警告:array_keys()は空行に/home/blah/public_html/blah/blah/insertret.phpで与えられ、パラメータ1が配列であることが期待9

lilRachie

+0

私の答えがあなたが探しているものでない場合には、 'var_dump($ _ POST);'の結果は何ですか? – jeroen

+0

どこにコードを置くのですか?上部の – lilRachie

+0

は問題ありませんが、結果も同様に投稿してください。 – jeroen

答えて

0

フォームフィールドにname="returned[]"のようにフォームフィールドを指定していない限り、受け取る値は配列ではなく文字列です。

したがって​​3210は、探している値を取得するために解析する必要がある文字列です。

+0

私のテーブルにはいら返されます[12345]第2位[12345]第3 [12345] 12345は各口座番号が行に等しいと変わります。 – lilRachie