<?php 
/** 
 * Example controller to see AjaxTable in action! 
 * 
 * @author Joubert <[email protected]> 
 * @copyright Copyright (c) 2016 Vector Internet Business and AjaxTable contributors 
 * @license: MIT 
 * @see https://github.com/vectornet/ajaxtable/ 
 * @see http://www.vectornet.com.br 
 */ 
 
require(__DIR__.'/ajaxtable/src/autoload.php'); 
 
/* 
 * AjaxTable is separated in two steps, create config and response request 
 * 
 * On this step we will create response for ajax request 
 */ 
 
if (isset($_REQUEST['action'])) { 
    switch ($_REQUEST['action']) { 
        case 'list': 
            /* 
             * With this example have numbers.sql for you to play 
             */ 
            $conn = mysqli_connect('localhost', 'your-awesome-root-user', 'with-his-awesome-password', 'and-awesome-database'); 
            $conn->query('SET CHARACTER_SET utf8'); 
            $conn->query('SET NAMES utf8'); 
 
            /* 
             * Ok, you will need to create new response for AjaxTable 
             */ 
            $Response = new VectorDev\AjaxTable\Response(); 
 
            /* 
             * If you send custom params, probably you will need for use in your model 
             */ 
            $params = $Response->getCustomParams(); 
 
            /* 
             * With AjaxTable you can get limit and order array ready for use in your query 
             */ 
            $limit = $Response->getLimitForSql(); 
            $order = $Response->getOrderByForSql(); 
 
            /* 
             * You can try cause error to see that AjaxTable will understand the error and display a message in view 
             */ 
            //$whyguy = 4 / 0; 
 
            /* 
             * AjaxTable need how many lines in total to build pagination, then you set this 
             */ 
            $qtotal = 'SELECT COUNT(*) AS total from numbers'; 
            if (isset($params['search'])) { 
                $qtotal .= ' WHERE `en-us` LIKE "%'.$params['search'].'%" OR `pt-br` LIKE "%'.$params['search'].'%"'; 
            } 
 
            $data = $conn->query($qtotal); 
            $total = $data->fetch_array(MYSQLI_ASSOC)['total']; 
 
            $Response->setRowsTotal($total); 
 
 
            $query = []; 
 
            $query[] = 'SELECT * from numbers'; 
            if (isset($params['search'])) { 
                $query[] = 'WHERE `en-us` LIKE "%'.$params['search'].'%" OR `pt-br` LIKE "%'.$params['search'].'%"'; 
            } 
            if ($order) { 
                $query[] = 'ORDER BY '.implode(' ', $order); 
            } 
            $query[] = 'LIMIT '.implode(', ', $limit); 
 
            $data = $conn->query(implode(' ', $query)); 
 
            while ($rows = $data->fetch_array(MYSQLI_ASSOC)) { 
 
                /* 
                 * You create new Cells for for Columns on view 
                 */ 
                $CellId = new VectorDev\AjaxTable\Cell($rows['id']); 
 
                /* 
                 * Look here, Cell support html 
                 */ 
                $CellEnUs = new VectorDev\AjaxTable\Cell('<b>'.$rows['en-us'].'</b>'); 
                $CellEnUs->addClass('html-ruan'); 
 
 
                $alert_msg = $rows['en-us'].' in brazilian is '.$rows['pt-br']; 
                /* 
                 * Also javascript too! 
                 */ 
                $CellPtBr = new VectorDev\AjaxTable\Cell( 
                    '<span onclick="javascript:alert(\''.$alert_msg.'\');">'.$rows['pt-br'].'</span>' 
                ); 
                $CellPtBr->addClass('javascript-link', 'javascript-href'); 
 
                $CellEsEs = new VectorDev\AjaxTable\Cell('Click to see'); 
                $CellEsEs->addClass('javascript-action'); 
                $CellEsEs->addData('number', $rows['id']); 
                $CellEsEs->addData('spanish', $rows['es-es']); 
 
                $CellFrFr = new VectorDev\AjaxTable\Cell($rows['fr-fr']); 
                $CellDeDe = new VectorDev\AjaxTable\Cell($rows['de-de']); 
                $CellJaJp = new VectorDev\AjaxTable\Cell($rows['ja-jp']); 
                $CellRuRu = new VectorDev\AjaxTable\Cell($rows['ru-ru']); 
 
                /* 
                 * After create Cells, you need a Row to store your Cells 
                 */ 
                $Row = new VectorDev\AjaxTable\Row($CellId, $CellEnUs, $CellPtBr, $CellEsEs, $CellFrFr, $CellDeDe); 
                $Row->addCell($CellJaJp); 
                $Row->addCell($CellRuRu); 
                $Row->addCell(new VectorDev\AjaxTable\Cell($rows['ko-kp'])); 
                $Row->addCell(new VectorDev\AjaxTable\Cell($rows['he-il'])); 
 
                /* 
                 * And add Row to response 
                 */ 
                $Response->addRow($Row); 
 
                /* 
                 * A simple way to add too if you want to be fast and furious :) 
                 * 
                $Response->addRow( 
                    new VectorDev\AjaxTable\Row( 
                        new VectorDev\AjaxTable\Cell($rows['id']), 
                        new VectorDev\AjaxTable\Cell($rows['en-us']), 
                        new VectorDev\AjaxTable\Cell($rows['pt-br']), 
                        new VectorDev\AjaxTable\Cell($rows['es-es']), 
                        new VectorDev\AjaxTable\Cell($rows['fr-fr']), 
                        new VectorDev\AjaxTable\Cell($rows['de-de']), 
                        new VectorDev\AjaxTable\Cell($rows['ja-jp']), 
                        new VectorDev\AjaxTable\Cell($rows['ru-ru']), 
                        new VectorDev\AjaxTable\Cell($rows['ko-kp']), 
                        new VectorDev\AjaxTable\Cell($rows['he-il']) 
                    ) 
                ); 
                 * 
                 */ 
            } 
 
            /* 
             * Finally, build response to view 
             */ 
            $Response->returnRequest(); 
            break; 
    } 
} 
 
 |