0

私はこの問題への正しいアプローチを得ることができません.私は2つの配列を持っています. 次のキーと値を持つ最初の配列 $attendance

Array
(
[attendance] => Array
    (
        [1] => 1
        [2] => 1
        [3] => 0
        [4] => 1
        [5] => 1
        [6] => 0
        [7] => 0
    )

チェックされた値が 1 の場合、これはチェックボックスから取得されます。それ以外の場合の値は 0 です。2 番目の配列は $remark です。

[remark] => Array
    (
        [1] =>
        [2] => 
        [3] =>  'sick'
        [4] => 
        [5] => 
        [6] =>  'leave'
        [7] =>  'On assignment'

    ) 

これがキー 1-7 の略です。スクリプトは従業員の出席用です。キー 1-7 は、データベースの従業員テーブルの従業員 ID です。

今私が達成したいのは、このように配列を連結することです

Array
(
[0] => Array
    (
        [employeeID] => 7
        [attendance] => 0
        [remark] => 'On assignment'
    )

[1] => Array
    (
        [employeeID] => 6
        [attendance] => 0
        [remark] => 'leave'
    )

[2] => Array
    (
        [employeeID] => 5
        [attendance] => 1
        [remark] => 
    )

//and so on
)

私は Codeigniter を使用しています それを連結することができれば、複数のデータを次のように従業員テーブルに挿入する方法も知りたいです。

employee's table
employeeID | date | status | remarks

CURDATE() を使用して計画した日付、ステータスは出席から 0 または 1 のいずれかを保持 ます

アップデート!!これは私が試したものですが、うまくいきませんでした。

$att = $_POST['attendance'];
$remarks = $_POST['remark'];

foreach($att as $employee_id=>$status)
        {
            $x=0;
            $employee[$x]['employee_id']=$employee_id;
            $employee[$x]['status']=$status;


            foreach($remarks as $employee_id=>$remark)
            {

                $employee[$x]['remark']=$remark;
                $x++;
            }
       }  
4

2 に答える 2

1
$attendance = $_POST['attendance'];
$remarks = $_POST['remark'];

$collect = array();
foreach ($attendance as $employeeID => $attending) {
    $collect[] = array(
        "employeeID" => $employeeID,
        "attendance" => $attending,
        "remark" => isset($remarks[$employeeID]) ? $remarks[$employeeID] : ""
    );
}

$values = array();
foreach ($collect as $entry) {
    $values[] = "(" . ((int) $entry["employeeID"]) . ",
        CURDATE(),
        " . ((int) $entry["attendance"]) . ",
        '" . sql_escape($entry["remark"]) . "'
    )";
}
$query = "INSERT INTO `attendance`
    (`employeeID`, `date`, `status`, `remarks`)
    VALUES
    (" . implode(",", $values) . ")";

sql_escape必ず適切なエスケープ関数に置き換えてください。PDO を使用している場合は、それを使用します。

于 2013-08-23T09:29:26.263 に答える