How to modify the data returned from the server from the server?

How to modify the data returned from the server from the server?

cris19ncris19n Posts: 55Questions: 18Answers: 0

i am using server side.

php code, send the parameters of my table:

<?php
    require 'serverside.php';
    $table_data->get('table', 'id', array('id','item1','item2','item3','item4','item5','item6','item7','item8','item9'));

and I want to modify the data returned from the server directly from the server.

for example, encode the field "id".

I appreciate your answers

Answers

  • allanallan Posts: 63,498Questions: 1Answers: 10,470 Site admin

    I don't know what $table_data->get() is doing I'm afraid - presumably it is getting the data from the database, but it is also JSON encoding it and echoing it out to the client-side? It doesn't look like one of the scripts that we maintain and publish - where did you get that serverside.php?

    Allan

  • cris19ncris19n Posts: 55Questions: 18Answers: 0
    edited September 2021

    I found it in some server side example post.. I don't remember which one.

    file serverside.php

    <?php
    include 'serversideConexion.php';
    class TableData {
        private $_db;
        public function __construct() {
            try {
                $host       = HOST_SS;
                $database   = DATABASE_SS;
                $user       = USER_SS;
                $passwd     = PASSWORD_SS;
    
                $this->_db = new PDO('mysql:host='.$host.';dbname='.$database, $user, $passwd, array(
                    PDO::ATTR_PERSISTENT => true, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
            } catch (PDOException $e) {
                error_log("Failed to connect to database: ".$e->getMessage());
            }
        }
        public function get($table, $index_column, $columns) {
            // Paging
            $sLimit = "";
            if ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' ) {
                $sLimit = "LIMIT ".intval( $_GET['iDisplayStart'] ).", ".intval( $_GET['iDisplayLength'] );
            }
    
            // Ordering
            $sOrder = "";
            if ( isset( $_GET['iSortCol_0'] ) ) {
                $sOrder = "ORDER BY  ";
                for ( $i=0 ; $i<intval( $_GET['iSortingCols'] ) ; $i++ ) {
                    if ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true" ) {
                        $sortDir = (strcasecmp($_GET['sSortDir_'.$i], 'ASC') == 0) ? 'ASC' : 'DESC';
                        $sOrder .= "`".$columns[ intval( $_GET['iSortCol_'.$i] ) ]."` ". $sortDir .", ";
                    }
                }
    
                $sOrder = substr_replace( $sOrder, "", -2 );
                if ( $sOrder == "ORDER BY" ) {
                    $sOrder = "";
                }
            }
    
            /*
             * Filtering
             * NOTE this does not match the built-in DataTables filtering which does it
             * word by word on any field. It's possible to do here, but concerned about efficiency
             * on very large tables, and MySQL's regex functionality is very limited
             */
            $sWhere = "";
            if ( isset($_GET['sSearch']) && $_GET['sSearch'] != "" ) {
                $sWhere = "WHERE (";
                for ( $i=0 ; $i<count($columns) ; $i++ ) {
                    if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" ) {
                        $sWhere .= "`".$columns[$i]."` LIKE :search OR ";
                    }
                }
                $sWhere = substr_replace( $sWhere, "", -3 );
                $sWhere .= ')';
            }
    
            // Individual column filtering
            for ( $i=0 ; $i<count($columns) ; $i++ ) {
                if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' ) {
                    if ( $sWhere == "" ) {
                        $sWhere = "WHERE ";
                    }
                    else {
                        $sWhere .= " AND ";
                    }
                    $sWhere .= "`".$columns[$i]."` LIKE :search".$i." ";
                }
            }
    
            // SQL queries get data to display
            $sQuery = "SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $columns))."` FROM `".$table."` ".$sWhere." ".$sOrder." ".$sLimit;
            $statement = $this->_db->prepare($sQuery);
    
            // Bind parameters
            if ( isset($_GET['sSearch']) && $_GET['sSearch'] != "" ) {
                $statement->bindValue(':search', '%'.$_GET['sSearch'].'%', PDO::PARAM_STR);
            }
            for ( $i=0 ; $i<count($columns) ; $i++ ) {
                if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' ) {
                    $statement->bindValue(':search'.$i, '%'.$_GET['sSearch_'.$i].'%', PDO::PARAM_STR);
                }
            }
    
            $statement->execute();
            $rResult = $statement->fetchAll();
    
            $iFilteredTotal = current($this->_db->query('SELECT FOUND_ROWS()')->fetch());
    
            // Get total number of rows in table
            $sQuery = "SELECT COUNT(`".$index_column."`) FROM `".$table."`";
            $iTotal = current($this->_db->query($sQuery)->fetch());
    
            // Output
            $output = array(
                "sEcho" => intval($_GET['sEcho']),
                "iTotalRecords" => $iTotal,
                "iTotalDisplayRecords" => $iFilteredTotal,
                "aaData" => array()
            );
    
            // Return array of values
            foreach($rResult as $aRow) {
                $row = array();
                for ( $i = 0; $i < count($columns); $i++ ) {
                    if ( $columns[$i] == "version" ) {
                        // Special output formatting for 'version' column
                        $row[] = ($aRow[ $columns[$i] ]=="0") ? '-' : $aRow[ $columns[$i] ];
                    }
                    else if ( $columns[$i] != ' ' ) {
                        $row[] = $aRow[ $columns[$i] ];
                    }
                }
                $output['aaData'][] = $row;
            }
    
            echo json_encode( $output );
        }
    }
    header('Pragma: no-cache');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    // Create instance of TableData class
    $table_data = new TableData();
    ?>
    
  • allanallan Posts: 63,498Questions: 1Answers: 10,470 Site admin

    Not a script I immediately recognise, but on line 108 there is a check for the version column. No reason you couldn't add another check for an id column and add your encoding there.

    Allan

Sign In or Register to comment.