提交后如何在JForm中获取项目POST的值



我目前正在Joomla中构造一个组件,我必须获取用户提交的表单字段的值。之后,我必须将值插入数据库。问题是我只能插入$inventory_id但无法获取表单字段的值。谢谢。

<?php
    $input = JFactory::getApplication()->input; 
    $formData = new JRegistry($input->get('jform', '', 'array')); 
    $name = $formData->get('inventory_name', 'test');
    $leadtime = $formData->get('leadtime', null);
    $max_lead = $formData->get('max_lead', null);
    $daily_usage = $formData->get('daily_usage', null);
    $max_usage = $formData->get('max_usage', null); 
    //formula to calculate reorder point
    $lead_time_demand = $leadtime * $daily_usage;
    $safety_stock = ($max_usage * $max_lead) - ($daily_usage * $leadtime);
    $reorder_point = $lead_time_demand + $safety_stock;
    if (empty($this->item->id)){ //For new added item
        $inventory_id = $row['AUTO_INCREMENT'];
        $sql_new = "INSERT INTO wer_reorder_point_list (inventory_id, inventory_name, reorder_point)
                    VALUES ('$inventory_id', '$name', '$reorder_point');";
        mysqli_query($con,$sql_new);
    }
?>

你从不在此代码中声明$row,那么$inventory_id = $row['AUTO_INCREMENT'];应该做什么呢?

如果数据库配置为自动递增 inventory_id ,则 insert 语句中不需要该列。所以你可以这样做:

$sql_new = "INSERT INTO wer_reorder_point_list (inventory_name, reorder_point) 
VALUES ('$name', '$reorder_point');";

它将自动用下一个整数填充该列。

顺便说一下,您还应该使用预准备语句,特别是因为您有用户输入,这可能是一个安全问题。

您不会直接使用表单数据插入自动递增的 id,而是让数据库来处理。如果您尝试插入它,您很容易最终出现竞争条件,因为在像Joomla这样的Web应用程序中,可能有许多用户试图同时插入具有相同id的新行。 这就是表单不包含inventory_id值的原因。
如果要将隐藏(来自用户)值传递给 POST,则需要在表单中包含具有该值的隐藏字段。但是,如第一段所述,您不会将其用于唯一 ID。

最新更新