2016-05-26 9 views
0

ダイナミックに生成されたテキストボックス値から結果セットが1つの配列に含まれています。PHP:ダイナミックに生成されたテキストフィールド値をデータベースに格納する

以下の例では、3つの動的に生成された行を作成し、各行には6つのテキストフィールドが含まれています。各行の名前を区別するために、私は行IDを名前の最後の単語として追加しました。例ClaimExecutionCountry1は、名前としてClaimExecutionCountryを意味し、1は行IDです。

Array 
(
[0] => ClaimExecutionCountry1=10 
[1] => activitystartdate1=05-27-2016 
[2] => activityenddate1=06-24-2016 
[3] => CLCode1=CLC1 
[4] => SCSCode1=SCS1 
[5] => fileName1=calc2.png 
[6] => ClaimExecutionCountry2=53 
[7] => activitystartdate2=05-27-2016 
[8] => activityenddate2=05-28-2016 
[9] => CLCode2= 
[10] => SCSCode2= 
[11] => fileName2=gh.png 
[12] => ClaimExecutionCountry3=82 
[13] => activitystartdate3=05-26-2016 
[14] => activityenddate3=07-28-2016 
[15] => CLCode3= 
[16] => SCSCode3=SCS5 
[17] => fileName3=preview1.png 
) 

データベースにこれらの値を格納する際に問題が1つあります。私のデータベース構造では、私はこのテーブルの=シンボル値の後に保存する必要があり

Id | ClaimExecutionCountry | activitystartdate | activityenddate | CLCode | SCSCode | fileName 

を下回っています。テーブルを挿入した後

、結果はそう誰もが形式上使用して、データベースに配列の値を保存するために私を助けてください

Id | ClaimExecutionCountry | activitystartdate | activityenddate | CLCode | SCSCode | fileName 
------------------------------------------------------------------------------------------------------------ 
1 |   10    |  05-27-2016  |  06-24-2016 | CLC1 | SCS1 | calc2.png 
2 |   53    |  05-27-2016  |  05-28-2016 | null | null | gh.png 
3 |   82    |  05-26-2016  |  07-28-2016 | null | SCS5 | preview1.png 

だろう。私はあなたが私の問題を理解したと思う。私はデータベースとしてPHP、codignator、MySqlを使用しています。

+0

あなたはこれまでに何を試しましたか? – Saurabh

+0

私は配列の中で結果を爆発させるような多くのオプションを試してみました。ループでは、私は各行を分けようとしました。動作しません。 – Albert

+1

いくつかのコードを貼り付けてください – Saurabh

答えて

0

以下のコードを試してみてください、事前に感謝:

$_array=Array(
     [0] => ClaimExecutionCountry1=10 
     [1] => activitystartdate1=05-27-2016 
     [2] => activityenddate1=06-24-2016 
     [3] => CLCode1=CLC1 
     [4] => SCSCode1=SCS1 
     [5] => fileName1=calc2.png 
     [6] => ClaimExecutionCountry2=53 
     [7] => activitystartdate2=05-27-2016 
     [8] => activityenddate2=05-28-2016 
     [9] => CLCode2= 
     [10] => SCSCode2= 
     [11] => fileName2=gh.png 
     [12] => ClaimExecutionCountry3=82 
     [13] => activitystartdate3=05-26-2016 
     [14] => activityenddate3=07-28-2016 
     [15] => CLCode3= 
     [16] => SCSCode3=SCS5 
     [17] => fileName3=preview1.png 
     ) 
     foreach($_array as $val){ 
      $a = explode("=",$val); 
      $field = $a[0]; 
      $ans=$a[1]; 
      $matches = array(); 
      if (preg_match('#(\d+)$#', $field, $matches)) { 

       $rowNum=$matches[1]; 
      } 
      $fieldName = str_replace($rowNum,"",$field); 
      /*Now you have number of row , $fieldName , $rowNum and $ans so we can execute SQl statement inside forEach*/ 
     } 

は、それはあなたを助けることを願っています。

+0

#(\ d +)$#が確実に働いていますか?私は$後に? – degr

+0

@degr、はい、以下のリンクを参考にしてください。 http://stackoverflow.com/questions/6278296/extract-numbers-from-a-string – nexttus

0
$a = Array 
(
[0] => ClaimExecutionCountry1=10 
[1] => activitystartdate1=05-27-2016 
[2] => activityenddate1=06-24-2016 
[3] => CLCode1=CLC1 
[4] => SCSCode1=SCS1 
[5] => fileName1=calc2.png 
[6] => ClaimExecutionCountry2=53 
[7] => activitystartdate2=05-27-2016 
[8] => activityenddate2=05-28-2016 
[9] => CLCode2= 
[10] => SCSCode2= 
[11] => fileName2=gh.png 
[12] => ClaimExecutionCountry3=82 
[13] => activitystartdate3=05-26-2016 
[14] => activityenddate3=07-28-2016 
[15] => CLCode3= 
[16] => SCSCode3=SCS5 
[17] => fileName3=preview1.png 
) 
Take the count of array------ 
$cnt = count($a); 

<!--now loop it and explode it to get the values after = --> 
for($i=0;$i<=$cnt;$i++){ 
$b = explode("=",$a[i]); 
<!--exploded value will give $b[0] = hhjhj and $b[1] = 10 ok --> 
$c[] = $b[1]; 
} 

<!-- In $c array all the values came after =.....now --> 
$k=0; 
$l=6; 
$h=0; 
for($j=$k;$j<=$l;$j++){ 
if($j == $l){ 
$j = $k; 
$l = $l + 5; 
$h++; 
} 

<!-- So from this here we got no of set of rows to be inserted in table --it will give result [3] from array $c(mixed values of no of rows) --> 

} 

<!-- now going to split into rows and insert--> 

for($i=1;$i<=3;$i++){ 

$e=6; 
for($j=0;$j<=$e;$j++){ 
if($j==$e){ 

$j=$e+1; 
$e = $e+6; 
break; 
}else{ 
$row[$i] = $c[$j]; 
} 
} 


} 

<!-- now we got --- --> 
$row[1] = {0,date,date,ccsc,sslc,image}; 
$row[2] = {0,date,date,ccsc,sslc,image}; 
$row[3] = {0,date,date,ccsc,sslc,image}; 
関連する問題