簡體   English   中英

使用表從數據庫獲取信息並進行更新

[英]Getting an info from the DB with Tables and Updating it

大家好,我在這種情況下遇到了困難:

我想使用模態獲取產品信息,我得到了以下代碼:

    //Model.php
    public function getProduct($product_id){
    $this->db->select('product_id,product_name,product_price,product_qty');
    $this->db->from('tbl_products');
    $this->db->where('product_id',$product_id);
    $query = $this->db->get();

    return $query->result();
    }

    //Controller.php
    public function view_product(){
    $product_id = $this->input->post('product_id');
    $this->load->view('header');
    $this->data["post"] = $this->Model->ProductList();
    $this->load->view('product_page',$this->data);
    $this->data["post"] = $this->Model->getProduct($product_id);
    $this->load->view('modal/update_product',$this->data);
    }

    //update_product.php (modal) my View
    lets just go straight into the form
    <form action="" method="post">
    <?php foreach($posts as $post){ ?>
    <input type = "hidden" name = "product_id" value = "<?php echo $post->product_id;?>"/>
    <input type = "text" name = "product_name" value = "<?php echo $post->product_name;?>"/>
    <input type = "text" name = "product_price" value = "<?php echo $post->product_price;?>"/>
    <input type = "text" name = "product_qty" value = "<?php echo $post->product_qty;?>"/>
    <button type="submit">Update</button>
    <?php } ?>
    </form>

我已經有了一張桌子:我可以在product_page.php中看到所有產品,這是桌子的樣子:

    ID        Name        Price        Quantity        Option
    1        Shoes        150.00        1                Update
    2        Liquor        67.50        5                Update
    3        Paint        1000.00       5                Update

單擊“更新”按鈕后,將彈出update_product.php(一個模態)並獲得產品1的結果。如果我按第一個“更新”,則僅“鞋”的信息將在模態內,首先我嘗試了,我獲得了所有產品的所有信息,這使我的模態因foreach而變得多余和循環,然后我嘗試從表ID本身獲取信息,而沒有產品彈出,我怎么只能看到1個使用模態的產品? 非常感謝您,女士和先生。 請我真的需要你的幫助:(

盡管我不清楚您要問的是什么,但這是您的問題的答案。 您的控制器代碼似乎沒有任何意義。如果您想在頁面上顯示所有產品,然后在單擊相應的更新鏈接時想要編輯/更新產品,則可以執行此操作。

使用單控制器方法進行列表和更新

//Controller.php
public function view_product(){
    $product_id = (isset($this->input->post('product_id')) ? $this->input->post('product_id'): False ;
    if($product_id == False){
        $this->data["post"] = $this->Model->ProductList();
        $this->load->view('product_page',$this->data);
    } else{
        $this->data["post"] = $this->Model->getProduct($product_id);
        $this->load->view('modal/update_product',$this->data);
    }
}

這是對代碼的簡單修改,以使其正常工作,但是由於此代碼無法處理更新表單的表單提交(除非您將更新表單指向其他控制器),因此您將不得不向該控制器添加其他代碼而且您的代碼很快就會變得混亂。 我對你的個人建議是

使用不同的控制器進行列表查看和更新

//Controller.php

public function view_product(){
    $this->data["post"] = $this->Model->ProductList();
    $this->load->view('product_page',$this->data);
}

public function update_product($product_id){
    if($this->input>post('submit')){   // 'submit'should be replaced with the name attribute of your submit button
        //call your model and handle the update form submission here
    }
    $this->data["post"] = $this->Model->getProduct($product_id);
    $this->load->view('product_page',$this->data);
 }

現在,您product_page.php的更新選項應指向具有相應產品ID的“ update_product”控制器方法, 例如{base_url} / controller_class_name / update_product / 1

我認為您的product_page.php具有類似這樣的代碼,可以循環瀏覽所有產品並在表格中顯示產品,現在,當您單擊更新鏈接時,它將指向update_product控制器,並將處理更新過程。

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Price</th>
            <th>Quantity</th>
            <th>Option</th> 
        </tr>
    </thead>
    <tbody>
        <?php if(!$products){ ?>
            <tr>
                <td colspan="5">No result</td>
            </tr>
        <?php } ?>
        <?php if($products){ ?>
        <?php foreach ($products as $product) { ?>
            <tr>
                <td><?php echo $product->id; ?></td>
                <td><?php echo $product->name; ?></td>
                <td><?php echo $product->price; ?></td>
                <td><?php echo $product->quantity; ?></td>
                <td>                        
                    <a href="<?php echo base_url(); ?>controller_class_name/update_product/<?php echo $product->id; ?>" >Update</a>
                </td>
            </tr>
        <?php } } ?>
    </tbody>
</table>

您將不需要在update_product.php內進行foreach循環,因為您一次只能更新一個產品。

希望這是您要尋找的答案,如果沒有,請發表評論,我會相應地編輯答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM