【发布时间】:2021-08-04 10:36:15
【问题描述】:
下面的代码用于将数据插入到 mysql 表中。我只能成功地将数据插入三个中的两个。
提示:
表名 - wp_form_inputs 存储下拉选择的 form_id 和 ids
然后这个存储上面选择的选项
我在哪里插入数据:
wp_appointments - Successful
wp_appointment_customers - Successful
wp_appointment_custom_data - Not Successful
第三张表wp_appointment_custom_data 不会插入。保存数据的样子。
代码
global $wpdb;
$msg = '';
$action = isset($_GET['action']) ? trim($_GET['action']) : "";
$id = isset($_GET['id']) ? intval($_GET['id']) : "";
$row_details = $wpdb->get_row(
$wpdb->prepare(
"SELECT * from wp_appointments WHERE id = %d", $id
), ARRAY_A
);
if (isset($_POST['save-multiple-data'])) {
if (empty($action)) {
$action = isset($_GET['action']) ? trim($_GET['action']) : "";
$id = isset($_GET['id']) ? intval($_GET['id']) : "";
for ($i = 0; $i < count($_POST["location"]); $i++) {
//Table 1 - Success
$wpdb->insert("wp_appointments", array(
"location_id" => $_POST["location"][$i],
...
));
//Table 2 - Success
$wpdb->insert("wp_appointment_customers", array(
"appointment_id" => $wpdb->insert_id,
"customer_id" => '1',
...
));
$fields = [
0 => 'shifttype[]',
1 => 'shiftstype[]',
2 => 'facilitytype[]',
];
$insertId = $wpdb->insert_id;
foreach ($fields as $formInputId => $inputValueKey) {
$wpdb->insert("wp_appointment_custom_data", array(
"appointment_id" => $insertId,
"customer_id" => '1',
"form_input_id" => $formInputId,
"input_value" => $_POST[$inputValueKey][$i],
));
}
if ($wpdb->insert_id > 0) {
$msg = "Shift added successfully";
} else {
$msg = "Failed to add shift for location ".$_POST["location"][$i]." and service ".$_POST["service"][$i];
}
}
}
表格
<div class="col-md-3">
<div class="form-group mb-2">
<label>Location</label> <br>
<select name="location[]" value="<?php echo isset($row_details['location_id']) ? $row_details['location_id'] : ""; ?>">
<?php
$loc_results = $wpdb->get_results ( "SELECT id, name FROM wp_locations");
foreach($loc_results as $locat) {
$locat_id=$locat->id;
$locat_name=$locat->name;
echo '<option value="' . esc_attr( $locat_id ) . '">' . esc_html( $locat_name) . '</option>';
}
?>
</select>
</div>
</div>
<div class="col-md-3">
<div class="form-group mb-2">
<label>Shift Sub Type</label> <br>
<select name="shifttype[<?php echo $form_input_id;?>]" value="<?php echo isset($row_details['input_value']) ? $row_details['input_value'] : ""; ?>">
<?php
$shiftype_results = $wpdb->get_results ( "SELECT id, form_input_id, title FROM wp_form_input_choices WHERE form_input_id = '1'");
foreach($shiftype_results as $shiftype_result) {
$shiftype_result_id=$shiftype_result->id;
$shiftype_result_title=$shiftype_result->title;
echo '<option value="' . esc_attr( $shiftype_result_id ) . '">' . esc_html( $shiftype_result_title) . '</option>';
}
?>
</select>
</div>
</div>
<div class="col-md-3">
<div class="form-group mb-2">
<label>Shift Type</label> <br>
<select name="shiftstype[<?php echo $form_input_id;?>]" value="<?php echo isset($row_details['input_value']) ? $row_details['input_value'] : ""; ?>">
<?php
$shiftstype_results = $wpdb->get_results ( "SELECT id, form_input_id, title FROM wp_form_input_choices WHERE form_input_id = '2'");
foreach($shiftstype_results as $shiftstype_result) {
$shiftstype_result_id=$shiftstype_result->id;
$shiftstype_result_title=$shiftstype_result->title;
echo '<option value="' . esc_attr( $shiftstype_result_id ) . '">' . esc_html( $shiftstype_result_title) . '</option>';
}
?>
</select>
</div>
</div>
<div class="col-md-3">
<div class="form-group mb-2">
<label>Facility Type</label> <br>
<select name="facilitytype[<?php echo $form_input_id;?>]" value="<?php echo isset($row_details['input_value']) ? $row_details['input_value'] : ""; ?>">
<?php
$facilitytype_results = $wpdb->get_results ( "SELECT id, form_input_id, title FROM wp_form_input_choices WHERE form_input_id = '3'");
foreach($facilitytype_results as $facilitytype_result) {
$facilitytype_result_id=$facilitytype_result->id;
$facilitytype_result_title=$facilitytype_result->title;
echo '<option value="' . esc_attr( $facilitytype_result_id ) . '">' . esc_html( $facilitytype_result_title) . '</option>';
}
?>
</select>
</div>
</div>
找不到我做错了什么。 JS 代码复制表单以进行批量插入。我没有看到需要添加它。
【问题讨论】: