PHP 使用表单和多维数组动态创建和更新多行

PHP Dynamically create and update multiple rows with forms and multidimentional array

我需要通过表单更新 table 行。有时会有一行,但有时会有多行,因此我需要表单到 post 多维数组,可以很容易地在 (Wordpress) 数据库中循环和更新。

我认为下面是您的操作方式,但 $_POST 数组不正确。我需要更改什么?

    //function to disaply form fields for each row
    public function make_form($results) {
    
        $html_fields = '';
        $count = 1;

        foreach($results as $result) {
            if($count != 1){
                $html_fields .= '<h4>Row: ' . $count . '</h4>';
            }
            
            foreach($result as $field_name => $field_value) {

                if ($field_name !='ID'){
                    $html_fields .= '<p><label for="' . $field_name . '">' . $field_name . '</label><br />';
                    $html_fields .= '<input type="text" value="' . $field_value .'" id="' . $field_name . '" name="' . $field_name . '[' . $result->ID . ']"></p>';
                }
            }   
            $count ++;
        }
    
        return $html_fields;
    } 
    
    //function to update database with form data 
    public function update_row() {
        global $wpdb;
    
        $wpdb->show_errors = true;
        $table_name = $wpdb->prefix . 'mytable';
            
        echo '<pre>';
        print_r($_POST);
    
        foreach($_POST as $id => $values){
            $results = $wpdb->update($table_name, $values, array( 'ID' => $id ));
        }
    }

数组打印如下:

Array (
    [REF] => Array
        (
            [648] => D10902B-SE
        )

    [QC] => Array
        (
            [648] => 1
        )

    [QCT] => Array
        (
            [648] => EA
        )

    [update] => Update )

当我需要更多这样的东西时:


Array
    (
        [648] => Array
            (
                [REF] => D10902B-SE
                [QC] => 1
                [QCT] => EA
            )
    
        [555] => Array
            (
                [REF] => TESTREF
                [QC] => 2
                [QCT] => EAFFFFF
            )
    )

我希望这是有道理的...

您可以按照评论中所述更改命名输入的顺序

$html_fields .= '<input type="text" value="' . $field_value .'" id="' . $field_name . '" name="' . $result->ID . '[' . $field_name . ']"></p>';