2014-09-05 3 views
0

У меня есть значения, которые я извлекаю из своей базы данных OpenCart (mysql), я предоставляю их форме, которую пользователь может затем отправить и использовать для обновления своей таблицы продуктов. Однако, когда я запускаю приведенный ниже код, 1) ошибок не возникает, и 2) когда я проверяю базу данных mysql, я вижу столбец, но он остается 0 вместо значения, которое я хочу (например, 1, 4, 5 и т. Д.).OpenCart - попытка обновить таблицу продуктов с лицевой стороны

Модель:

public function unit_id_update() { 

    $product_id = $this->db->getLastId(); 

    $this->db->query("UPDATE " . DB_PREFIX . "product SET unit_class_id = " . $this->db->$unit_type_id . " WHERE product_id = " . (int)$product_id); 
} 

public function unit_id_request() { 
    $w_data = $this->db->query("SELECT weight_class_id FROM ". DB_PREFIX ." weight_class_description"); 
     if (!$w_data) { 
     die(mysql_error()); 
     } 
     else { 
     return $w_data; 
     } 
} 

Контроллер:

$this->load->model('catalog/product'); //where functions are located 
    $another_var = $this->model_catalog_product->unit_id_request(); 

    $this->data['weight_var'] = $another_var; 
    $this->data['kg'] = $another_var->rows[0]['weight_class_id']; 
    $this->data['g'] = $another_var->rows[1]['weight_class_id']; 
    $this->data['lb'] = $another_var->rows[2]['weight_class_id']; 
    $this->data['oz'] = $another_var->rows[3]['weight_class_id']; 

    if (isset($this->request->post['unit_type_id'])) { 
     $this->data['unit_type_id'] = $this->request->post['unit_type_id']; 
    } 
    else { 
     $this->data['unit_type_id'] = ''; 
    } 

Вид:

<tr> 
    <td><?php echo "Unit Type"; ?></td></tr> 
    <td><select name="unit_type_id"> 
     <optgroup label="<?php echo "Weight"; ?>">   
      <option value="<?php echo $lb; ?>" >lb</option> 
      <option value="<?php echo $oz; ?>">oz</option>  
      <option value="<?php echo $kg; ?>">kg</option> 
      <option value="<?php echo $g; ?>">g</option>    
     </optgroup> 
    </select></td> 
</tr> 

ответ

0
  1. Поверьте, вы не хотите этого die(mysql_error()); в производстве. Обрабатывайте дело по-разному (например, возвращая пустой массив и регистрируя ошибку).

  2. Проблема в целом unit_id_update() метод. Вы должны передавать переменные $product_id и $unit_type_id в качестве аргументов вашего контроллера (который обрабатывает запрос POST).

Метод должен выглядеть следующим образом:

public function unit_id_update($product_id, $unit_type_id) { 
    $this->db->query("UPDATE " . DB_PREFIX . "product SET unit_class_id = " . (int)$unit_type_id . " WHERE product_id = " . (int)$product_id); 
} 
+0

Я добавил оба параметра в функцию, и он по-прежнему не вносит никаких изменений в базу данных. Я также попробовал 'INSERT' вместо' UPDATE'. – Kris

+0

И можете ли вы отлаживать, что передаются значения методу модели? 'UPDATE' - это то, что вы хотите использовать. – shadyyx

+0

Я даю вам ответ, потому что я действительно забыл передать параметры '$ product_id' и' $ unit_type_id' моей функции. Я считаю, что ваш ответ правильный, однако я думаю, что что-то пошло не так, потому что это был xml-файл, к которому я пытался добавить расширение. Я пошел в каталог/model ['account/customerpartner'] ', который была загружена на странице« каталог/контроллер/['account/addproduct'] ']. И добавил несколько строк для моих функций базы данных «INSERT» и «UPDATE», которые были написаны аналогично вышеуказанной функции. – Kris

-2

Попробуйте вставить пробел перед 'продукта' в запросе в unit_id_update() и проверить.

$this->db->query("UPDATE " . DB_PREFIX . " product SET unit_class_id = " . $this->db->$unit_type_id . " WHERE product_id = " . (int)$product_id); 
+1

Нет, это неправильный ответ. Вероятно, это выход из низкого уровня знаний или без знания платформы OpenCart. – shadyyx

Смежные вопросы