【问题标题】:OpenCart product_form html-select won't pass the value to the databaseOpenCart product_form html-select 不会将值传递给数据库
【发布时间】:2023-03-05 13:56:01
【问题描述】:

我似乎找不到我做错了什么

<pre>
<?php
print_r($_POST); echo $parcel_type; 
?>
</pre>

打印给出:array() $parcel_type 给出:0

保存时不会传递选择值。其他 opencart 选择框的编码似乎相同,但确实传递了值。

有人知道我哪里出错了吗?

admin/view/template/catalog/product_form.tpl

<PRE>
<?php

$parcel_option = array(
'0' => 'pakket' ,
'1' => 'brievenbuspakket',
'2' => 'brievenbuspakje <20gr',
'3' => 'brievenbuspakje <50gr',
'4' => 'brievenbuspakje <100gr',
'5' => 'brievenbuspakje <250gr',
'6' => 'brievenbuspakje <2 KG',
);

?>

<div class="form-group">

<label class="col-sm-2 control-label" for="input-parcel_type"><span data-toggle="tooltip" title="Kies verzendvorm"</span> 

<?php  
print_r($_POST); 
echo $parcel_type; ?>
</label>

<div class="col-sm-10">

<select name="parcel_type" id="input-parcel-type" class="form-control">

<?php
if (isset($data['parcel_type'])) { 
?>
<option value="" >Kies verzendvorm</option>

<?php

$parcel_type = 0; 

$parcel_text = 0; 

asort($parcel_option);

reset($parcel_option); 

foreach($parcel_option as $parcel_type => $parcel_text):
echo '<option value="'.$parcel_type.'">'.$parcel_text.'</option>'; 

endforeach;
?>

</PRE>

admin/controller/catalog/product.php

<pre>           if (isset($this->request->post['parcel_type'])) {
            $data['parcel_type'] = $this->request->post['parcel_type'];
        } elseif (!empty($product_info)) {
            $data['parcel_type'] = $product_info['parcel_type'];
        } else {
            $data['parcel_type'] = '0' ;
        }   
</pre>

模型文件编辑功能

<PRE>
$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "',bol_ship_time = '" . $this->db->escape($data['bol_ship_time']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', product_condition = '" . (int)$data['product_condition'] . "',external_shipment = '" . (int)$data['external_shipment'] . "', parcel_type = '" . (int)$data['parcel_type'] . "',  bol_visable = '" . (int)$data['bol_visable'] . "', nextail_visable = '" . (int)$data['nextail_visable'] . "', dutch_visable = '" . (int)$data['dutch_visable'] . "', belgium_visable = '" . (int)$data['belgium_visable'] . "', price = '" . (float)$data['price'] . "', cost = '" . (float)$data['cost'] . "', cost_amount = '" . (float)$data['cost_amount'] . "', cost_percentage = '" . (float)$data['cost_percentage'] . "', cost_additional = '" . (float)$data['cost_additional'] . "', costing_method = '" . (int)$data['costing_method'] . "', supplier_id = '" . (int)$data['supplier_id'] . "', wholesale_cost = '" . (float)$data['wholesale_cost'] . "', shipping_cost = '" . (float)$data['shipping_cost'] . "', added_shipping_cost = '" . (float)$data['added_shipping_cost'] . "', packaging_cost = '" . (float)$data['packaging_cost'] . "', handling_cost = '" . (float)$data['handling_cost'] . "',storage_cost = '" . (float)$data['storage_cost'] . "', printing_cost = '" . (float)$data['printing_cost'] . "',margin = '" . (float)$data['margin'] . "',bol_fee_cost = '" . (float)$data['bol_fee_cost'] . "', bol_cost = '" . (float)$data['bol_cost'] . "', nextail_fee_cost = '" . (float)$data['nextail_fee_cost'] . "', nextail_cost = '" . (float)$data['nextail_cost'] . "',other_cost = '" . (float)$data['other_cost'] . "',bol_price = '" . (float)$data['bol_price'] . "', nextail_price = '" . (float)$data['nextail_price'] . "', min_profit = '" . (float)$data['min_profit'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_modified = NOW() WHERE product_id = '" . (int)$product_id . "'");
</PRE>

【问题讨论】:

  • 点击添加到购物车按钮时触发的javascript函数怎么样?可以发一下吗?
  • 它与添加到购物车按钮无关。此功能已添加到产品页面 (product_form) 的管理端。还添加了一些工作正常的复选框。只有选择框没有。这是用于其他 html 选择框的所有代码的精确副本。我在管理 product_form 页面中找不到任何 java 或 JQuiry。数据库字段 (parcel_type) 已添加到模型中。我以为我错过了 JQuiry 或其他东西,但我在产品表单中的其他 html 选择中找不到它。
  • 如果您在点击提交时查看浏览器的开发者工具中的网络活动,您是否看到正在发送的值?
  • -----WebKitFormBoundarybU8ytNpb78nsswIE Con​​tent-Disposition: form-data; name="parcel_type" 6 发送。基值为 0 我检查了数据库。不用找了。前端没有变化。对于需要知道如何找到 $_post 值的任何人,请检查此网址 stackoverflow.com/questions/15603561/…
  • 如果我删除 product.php 中的 (isset()) ,则会出现未定义索引 parcel_type 错误。我检查了数据库.. parcel_type 在那里。检查模型是否有错字。非。 paorduct_form.tpl 中的选择值在那里。所以这应该只在控制器 product.php 中留下一个错误。我检查了产品的数组 'parcel_type' => $result['parcel_type'],

标签: php select opencart html-select dropdown


【解决方案1】:

到目前为止,我在 product_form.tpl 中使用它

<?php
$parcel_option = array(
''  => 'Kies verzendvorm',
'0' => 'pakket' ,
'1' => 'brievenbuspakket',
'2' => 'brievenbuspakje <20gr',
'3' => 'brievenbuspakje <50gr', 
'4' => 'brievenbuspakje <100gr',
'5' => 'brievenbuspakje <250gr',
'6' => 'brievenbuspakje <2 KG',   
);

?>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-parcel-type"><span data-toggle="tooltip" title="Kies verzendvorm"</span> 
<?php echo $entry_parcel_type; ?></label>
<div class="col-sm-10">
<select name="parcel_type" id="input-parcel-type" class="form-control">
<?php       

if (isset($data['parcel_type'])) { 
?>
<option value="<?php '.$parcel_type.'?>" ><?php echo  $parcel_type; ?></option>

<?php
foreach($parcel_option as $parcel_type => $parcel_text):
echo '<option value="'.$parcel_type.'">'.$parcel_text.'</option>'; 
endforeach;
?>

<?php } else { ?>
<option value="0" selected="selected"> Geen selectie - Standaard pakketkosten</option>
<?php }  ?>
</select>
</div>
</div>

我唯一不知道的是如何链接此代码

<option value="<?php '.$parcel_type.'?>" ><?php echo  $parcel_type; ?>

到数组,因此它显示属于 Parcel_type 的宗地文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2013-12-02
    相关资源
    最近更新 更多