table表格實現點擊修改 PHP同步資料庫 排序

來源:互聯網
上載者:User

標籤:style   blog   io   ar   color   os   sp   for   資料   

最近幾天在做一個網站,牽扯到一個導航管理的功能!領導說不用作,可是由於自己自作主張,搞了1天的功能。領導說這個導航管理就是不用做!容易牽扯出好多問題來!估摸是客戶小的原因!

沒辦法就把我1天的勞動荒廢了!在這裡貼出來,一個是與大家交流, 第二,也是希望大家可以使勁拍磚,相信大家的拍磚可以使我更好的成長!我可以學到更多的知識!

本人初級PHP鳥一隻!希望各位多多指教!

上代碼!

首先是HTML代碼!主要實現了!table的一個表格,未添加任何CSS樣式,因為做到這一步,要添加樣式的時候,領導說不需要!就再沒往下做!

我直接拷貝的我做的資料,表格裡面存的是資料!我用的CI架構做的!所以資料都是PHP程式碼片段輸出!$nav_array是從資料庫取出來的導航數組

<div>這裡是導航管理介面</div><form method="post">    <table class="table" border="1" style="border-collapse: collapse">        <thead><tr><th>順序</th><th>導航名稱</th><th>管理</th></tr></thead>        <tbody>        <?php foreach($nav_array as $key=>$value):?>            <tr num="<?php echo $value[‘id‘]?>" navid="<?php echo $value[‘id‘];?>">                <td><?php echo $value[‘sort‘]?></td>                <td><?php echo $value[‘nav_name‘]?></td><!--                <td><button class="button" num="--><?php //echo $value[‘id‘]?><!--">修改</button></td>-->            </tr>        <?php endforeach ?>        </tbody>    </table></form>

jquery代碼實現的點擊變修改!主要的思路就是用empty抹掉原來表格中的資料,添加進去一段input

這段input  html代碼應該可以用for迴圈搞定!我懶的搞了!有興趣的自己研究下吧!

 $(‘.table‘).on(‘click‘, ‘.button‘, function(){        var num = $(this).attr(‘num‘);//當前點擊事件的按鈕flag        var current_tr  = $(‘table‘).find(‘tr[num="‘+ num +‘"]‘);//當前點擊事件的tr行        var current_tds = $(current_tr).find(‘td‘);//當前點擊事件的行所有td        var navid = $(current_tr).attr(‘navid‘);//這個是導航的id 是主鍵        //儲存當前點擊事件行中td的原值,用在下面的form 的html代碼中顯示        var arr = [];        for(var i = 0; i < current_tds.length; i++){            arr[i] = $(current_tds).eq(i).text();        }        //要替換的html代碼        var td_html = ‘<td><input type="hidden" name="nav_id" value="‘+ navid +‘"><input type="text" name="sort" value="‘+ arr[0] +‘"></td><td><input type="text" name="nav_alter" value="‘+ arr[1] +‘"></td><td><input type="submit" name="" value="確定"></td>‘;        $(‘.table‘).find(‘tr[num="‘+ num +‘"]‘).empty().append(td_html);    });

PHP代碼,這裡直接從My Code拷貝過來了,不修改了!有缺點歡迎指正!懂的話,應該可以改成自己的代碼

index主要就是載入這個頁面,用了CI的input類,post接收到資料,從資料庫提取一級導航,然後驗證post過來的資料是否存在於資料庫中的資料中!

 public function index(){        $nav_id    = $this->input->post(‘nav_id‘);   //導航ID        $nav_name = $this->input->post(‘nav_alter‘);//修改的導航名        $sort = $this->input->post(‘sort‘);          //排序num        $data[‘nav_array‘] = $this->m_nav_manage->getNav();//提取所有一級導航,從資料庫        //檢查post過來的資料 是否已經存在於資料庫中        if( $nav_name || $sort) {            if( !$this->check_nav_in_array( $nav_name, $data[‘nav_array‘] ) || !$this->check_nav_in_array($sort, $data[‘nav_array‘])) {                $this->m_nav_manage->up_data_nav($nav_name, $sort, $nav_id);                $data[‘nav_array‘] = $this->m_nav_manage->getNav();                //重寫資料庫並且提取資料            }        }        $this->load->view(‘nav_manage‘, $data);    }    /**檢查nav是否存在於二維數組中     * @param $nav     待搜尋的值     * @param $array   被搜尋的二維數組     * @return bool     */    private function check_nav_in_array($value, $array) {        for( $i = 0; $i < count($array); $i++ ) {            foreach( $array as $key=>$value ) {                if( in_array( $value, $array[$i] ) ) {                    return TRUE;                }            }        }    }

另外有一段在model中的函數,主要用來update資料和並且將排序更改

,實現思路 ----主要是用傳過來的sort,$navid是隱藏的input中提交過來的,$navname    三個變數都是post過來的資料

這段實現的比較糾結!總之  $nav_a  取得的是這個nav的ID    $nav_b取得的是這個nav的sort

功能實現了,我自己到現在還沒別過勁來!~~留給自己慢慢思考吧!

get_one() 產生的select語句   SELECT id FROM $this->table WHERE sort = $sort;  其他自己的研究吧!

    public function up_data_nav($navName, $sort, $navId) {    $nav_a = $this->m_common->get_one(‘id‘, $this->table, array(‘sort‘=>$sort));//要被改成$sort的nav的id        $nav_b = $this->m_common->get_one(‘sort‘, $this->table, array(‘id‘=>$navId));//正在修改的nav的sort        //print_r($nav_a); print_r($nav_b); die();        $nav_alter_array[‘nav_name‘] = $navName;        $nav_alter_array[‘sort‘] = $sort;        //print_r($nav_alter_array);die();        $this->m_common->up_data($this->table, $nav_alter_array, array(‘id‘ => $navId) );        $this->m_common->up_data($this->table, array(‘sort‘=>$nav_b[‘sort‘]), array( ‘id‘ => $nav_a[‘id‘] ) );    }
/**     * 擷取單條資料     * @param $table 表名     * @param $where 條件數組     * @param string $fields 查詢的欄位 預設是 ‘*‘     *     * 返回一個數組     */    public function get_one($fields = ‘*‘, $table, $where ) {        if($where != ‘‘) {            return $this->db->select($fields)->from($table)->where($where)->get()->row_array();        } else {            return $this->db->select($fields)->from($table)->get()->row_array();        }    }

 

 

 

table表格實現點擊修改 PHP同步資料庫 排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.