Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I build dynamic input by add row table, and user input by autocomplete, then I store PRODUCT_ID in <input name="idp" value="">

E.g User input twice times (HP & Computer)

Name Product | PRODUCT_ID

  1. HP = 2945

  2. COMPUTER = 8654

Should be in array is = (2945,8654)

This is for Controller:

class ControllerItemItem extends Controller { //Controller/Item/Item.php
private $error = array(); 
 
public function index() {
    $this->language->load('item/item');
    
    $this->document->setTitle($this->language->get('heading_title')); 
    
    $this->load->model('item/item');
    
    $this->getList();
}

protected function getList(){
    
    if (isset($this->request->get['head_text_field'])){
        $head_text_field = $this->request->get['head_text_field'];
    } else {
        $head_text_field = null;
    }
    
    if (isset($this->request->get['title_text_field'])){
        $title_text_field = $this->request->get['title_text_field'];
    } else {
        $title_text_field = null;
    }
    
    if (isset($this->request->get['max'])){
        $max = $this->request->get['max'];
    } else {
        $max = null;
    }
    
    if(isset($this->request->get['idp'])){ 
        $product = $this->request->get['idp'];
        $product2 = array();
        foreach($product as $p)
        {
            $product2[] = $p;
        }

    }else {
        $product = null;
    }
    
    
    // BREADCRUMBS //
    $this->data['breadcrumbs'] = array();

    $this->data['breadcrumbs'][] = array(
        'text'      => $this->language->get('text_home'),
        'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
        'separator' => false
    );

    $this->data['breadcrumbs'][] = array(
        'text'      => $this->language->get('text_module'),
        'href'      => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'),
        'separator' => ' :: '
    );

    $this->data['breadcrumbs'][] = array(
        'text'      => $this->language->get('heading_title'),
        'href'      => $this->url->link('module/item', 'token=' . $this->session->data['token'], 'SSL'),
        'separator' => ' :: '
    );
    // END //
    
    // Call Language //
    $this->data['heading_title'] = $this->language->get('heading_title');
    $this->data['entry_head'] = $this->language->get('entry_head');
    $this->data['entry_title'] = $this->language->get('entry_title');
    $this->data['entry_product'] = $this->language->get('entry_product');
    $this->data['entry_max_item'] = $this->language->get('entry_max_item');
    $this->data['button_save'] = $this->language->get('button_save');
    $this->data['button_cancel'] = $this->language->get('button_cancel');
    // END //
    
    $this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
    $this->data['action'] = $this->url->link('item/item/insert', 'token=' . $this->session->data['token'], 'SSL');
    $this->data['token'] = $this->session->data['token'];

    
    $data   =   array(
        'head_text_field'   =>  $head_text_field,
        'title_text_field'  =>  $title_text_field,
        'max'               =>  $max
    );
    
    $this->template = 'item/item.tpl';
    $this->children = array(
        'common/header',
        'common/footer'
    );
    
    $this->response->setOutput($this->render());
        
}

public function insert()
{
    
    $this->language->load('item/item');
    
    $this->document->setTitle($this->language->get('heading_title')); 
    
    $this->load->model('item/item');
    
    if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
        //$this->model_item_item->insert_head($this->request->post);
        $this->model_item_item->insert_detail($this->request->post);
        
        //$this->session->data['success'] = $this->language->get('text_success');
        //$this->redirect($this->url->link('item/item', 'token=' . $this->session->data['token'], 'SSL'));
    }
}

protected function validateForm() {
    if (!$this->user->hasPermission('modify', 'item/item')) {
        $this->error['warning'] = $this->language->get('error_permission');
    }

    if ((utf8_strlen($this->request->post['head_text_field']) < 1) || (utf8_strlen($this->request->post['head_text_field']) > 64)) {
        $this->error['head'] = $this->language->get('error_head');
    }
    
    if (!$this->request->post['title_text_field']) {
        $this->error['title'] = $this->language->get('error_title');
    }
                
    if (!$this->error) {
        return true;

    } else {
        return false;
    }
}

This is for Model :

class ModelItemItem extends Model { 
public function insert_head($data)
{
    $this->db->query("INSERT INTO " . DB_PREFIX . "show_product SET head_text = '" . $this->db->escape($data['head_text_field']) . "', title_text = '" . $this->db->escape($data['title_text_field']) . "', max_item = '" . $this->db->escape($data['max']) . "'");
}

public function insert_detail($product2)
{
    foreach($product2 as $detail)
    {
        //$this->db->query("INSERT INTO " . DB_PREFIX . "show_product_detail SET product_id = '". $this->db->escape($detail['product']) . "'");
    }
    echo $detail[0];
}

}

This is for view :

    <?php echo $header; ?>
<div id="content">
  <div class="breadcrumb">
    <?php foreach ($breadcrumbs as $breadcrumb) { ?>
    <?php echo $breadcrumb['separator']; ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
    <?php } ?>
  </div>
  <?php if ($error_warning) { ?>
  <div class="warning"><?php echo $error_warning; ?></div>
  <?php } ?>
  <?php if ($success) { ?>
  <div class="success"><?php echo $success; ?></div>
  <?php } ?>
  <div class="box">
    <div class="heading">
      <h1><img src="view/image/product.png" alt="" /> <?php echo $heading_title; ?></h1>
      <div class="buttons"><a onclick="$('#form').submit();" class="button"><?php echo $button_save; ?></a><a href="<?php echo $cancel; ?>" class="button"><?php echo $button_cancel; ?></a></div>
    </div>
    <div class="content">
      <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
        <table class="form">
        <tr>
            <td><span class="required">*</span> <?php echo $entry_head; ?></td>
            <td><input type="text" name="head_text_field" value="" placeholder="Input Head Text" size="40"/>
                <?php if ($error_head) { ?>
                    <span class="error"><?php echo $error_head; ?></span>
                <?php } ?>
            </td>
        </tr>
        <tr>
            <td><span class="required">*</span> <?php echo $entry_title; ?></td>
            <td><textarea name="title_text_field" placeholder="Input Title Text" style="width:230px;"/></textarea>
                <?php if ($error_title) { ?>
                    <span class="error"><?php echo $error_title; ?></span>
                <?php } ?>
            </td>
        </tr>
        <tr>
            <td><?php echo $entry_max_item; ?></td>
            <td>
                <select name="max" id="maxitem">
                <?php
                for($i=1; $i<=6; $i++)
                {
                    if($i == 1)
                        echo "<option selected='selected' value=".$i.">".$i."</option>";
                    else
                        echo "<option value=".$i.">".$i."</option>";
                }
                ?>
                </select>
            </td>
        </tr>
        <tr>
            <td><?php echo $entry_product; ?></td>
            <td><input type="text" id="product" name="product" value="" placeholder="Input Product" size="40"/></td>
            <td><input type="hidden" id="idp" name="idp" value="" /></td>
        </tr>
        <tr>
            <td></td>
            <td>
            <table>
                <tr>
                    <td><input type="button" id="ADD" value="Add Item"></td>
                    <td><input type="reset" id="RESET" value="Reset"></td>
                </tr>
            </table>
            </td>
        </tr>
        <tr>
            
        </tr>
        </table>

        <table border="1" id="tblname" cellpadding="5" cellspacing="5">
            <thead>
            <tr>
                <td>
                    Total Item
                </td>
                <td>
                    Id Item
                </td>
                <td>
                    Name Item
                </td>
                <td>
                    DELETE
                </td>
            <tr>
            </thead>
            <tbody align="center">
            </tbody>
        </table>
      </form>
    </div>
  </div>
</div>
<script type="text/javascript"><!--
$('input[name='product']').autocomplete({
    delay: 100,
    source: function(request, response) {
        $.ajax({
            url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request.term),
            dataType: 'json',
            success: function(json) {       
                response($.map(json, function(item) {
                    return {
                        label: item.name,
                        value: item.product_id
                    }
                }));
            }
        });
    }, 
    select: function(event, ui) {
        $('input[name='prod

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
111 views
Welcome To Ask or Share your Answers For Others

1 Answer

If you want to insert array variables in database, First you need encode them and then insert them .

Ex. $abc = array(3,45,6,78,89) ;

Query : "INSERT INTO " . DB_PREFIX . "show_product_detail SET product_id = '". $this->db->escape(json_encode($abc)) . "'


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...