2012-03-23 69 views
0

我有一個具有3個字段多字段形式的PHP問題

文本框,複選框,checkbox2形式

它們是通過帳號即 返回的[12345]第二[12345]第三[12345]

陣列

我需要將它們的值和鍵都拉起來,但是

如果重新調整了一個值,它會在那裏停止並將其放入數據庫中。 如果返回爲空看 如果任一複選框,單擊 如果是3和2的心不是說對不起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()預計參數1是陣列,在/home/blah/public_html/blah/blah/insertret.php空給出在第9行

lilRachie

+0

爲防萬一我的回答不是你要找的,var_dump($ _ POST)的結果是什麼;'? – jeroen 2012-03-23 20:58:40

+0

我會在那裏放置代碼?頂部的 – lilRachie 2012-03-23 22:57:16

+0

很好,但也發佈結果。 – jeroen 2012-03-23 23:14:15

回答

0

除非您已將表單字段命名爲數組,例如name="returned[]",否則您收到的值是字符串,而不是數組。

所以​​3210將是一個字符串,你需要解析以獲得你正在尋找的值。

+0

在我的桌子上是的,他們是返回[12345]第二[12345]第三[12345],每個帳號的12345變爲等於一行。 – lilRachie 2012-03-23 21:20:05