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>';
我需要通过表单更新 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>';