EasyUI Forum
June 23, 2018, 12:53:20 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: [SOLVED] Get data from PHP code  (Read 1027 times)
Pierre
Sr. Member
****
Posts: 399


View Profile Email
« on: December 05, 2017, 02:29:03 PM »

Hello
actually, it is just partially EasyUI question but maybe someone can help me.
I need to use PHP to get data and put result into EasyUI datagrid.
Here is PHP code which I try to use:

Code:
<?php $conn = new mysqli("127.0.0.1""root""""mydb"); 
if (
$conn->connect_error) {     
  die(
"Connection failed: " $conn->connect_error); 

$data = array(); 
$index = array(); 
$sql "SELECT ID, parentID, firstname, lastname, address FROM dm_contacts order by ID"
$result $conn->query($sql); 
while(
$row $result->fetch_array(MYSQLI_ASSOC)){   
  
$id $row["ID"];   
  
$parent_id $row["parentID"] === NULL "NULL" $row["parentID"];   
  
$data[$id] = $row;   
  
$index[$parent_id][] = $id;

function 
display_child_nodes($parent_id$level){   
  global 
$data$index;   
  
$parent_id $parent_id === NULL "NULL" $parent_id;   
  if (isset(
$index[$parent_id])) {       
    foreach (
$index[$parent_id] as $id) {           
      echo 
$data[$id]["firstname"] . "," $data[$id]["lastname"] .  "";           
      
display_child_nodes($id$level 1);       
    }   
  } 

display_child_nodes(1230);  // 123 is parentID and function display_child_nodes will return only valid records
$result->close(); 
$conn->close(); 
?>


question is - how to put result of PHP to datagrid like this one:

Code:
         <table id="dg" class="easyui-datagrid" fit="true" border="false" url="get_users.php" singleSelect="true">
            <thead>
              <tr>
                <th field="firstname" width="50">First Name</th>
                <th field="Lastnamee" width="50">Last Name</th>
              </tr>
            </thead>
          </table>

Thank you so much in advance.
« Last Edit: December 07, 2017, 01:44:23 AM by Pierre » Logged
jarry
Administrator
Hero Member
*****
Posts: 1384


View Profile Email
« Reply #1 on: December 05, 2017, 06:58:14 PM »

You can custom the 'loader' function to load any data from remote server.
Code:
<table id="dg" class="easyui-datagrid" data-options="
    url: 'test.php',
    fit: true,
    border: false,
    loader: function(param,succ,error){
        var opts = $(this).datagrid('options');
        $.post(opts.url, function(data){
            var result = [];
            var rows = data.split('\n');
            for(var i=0; i<rows.length; i++){
                if ($.trim(rows[i])){
                    var values = rows[i].split(',');
                    result.push({
                        firstname: values[0],
                        lastname: values[1]
                    });

                }
            }
            succ(result);
        })
    }
    ">
<thead>
  <tr>
    <th field="firstname" width="50">First Name</th>
    <th field="lastname" width="50">Last Name</th>
  </tr>
</thead>
</table>
Logged
Pierre
Sr. Member
****
Posts: 399


View Profile Email
« Reply #2 on: December 06, 2017, 12:47:51 AM »

Thank you so much, it works perfect but I need somehow to pass a value to "test.php", for example:
url: 'test.php?'+member_id,

How to do that, please?

I try this:
Code:
 $(document).ready(function() {
        var _member_id = 123;
        url = 'get_users.php?member_id='+_member_id;
        $('#dg').datagrid({
          url: url
        });
   });
and it does not works correctly (sometime, it displays datagrid declaration inside datagrid and next time it displays data correctly.
How to pass a value to url (to php), please?
« Last Edit: December 06, 2017, 02:32:24 PM by Pierre » Logged
Pierre
Sr. Member
****
Posts: 399


View Profile Email
« Reply #3 on: December 06, 2017, 02:35:22 PM »

Please?
Logged
jarry
Administrator
Hero Member
*****
Posts: 1384


View Profile Email
« Reply #4 on: December 06, 2017, 05:08:38 PM »

The 'loader' function can be rewritten to accept the request parameters.
Code:
loader: function(param,succ,error){
    var opts = $(this).datagrid('options');
    if (!opts.url) return false;
    $.ajax({
        type: opts.method,
        url: opts.url,
        data: param,
        success: function(data){
            var result = [];
            var rows = data.split('\n');
            for(var i=0; i<rows.length; i++){
                if ($.trim(rows[i])){
                    var values = rows[i].split(',');
                    result.push({
                        firstname: values[0],
                        lastname: values[1]
                    });
                }
            }
            success(result);
        },
        error: function(){
            error.apply(this, arguments);
        }
    });
}

You can initialize the query parameters by setting the 'queryParams' property.
Code:
$('#dg').datagrid({
  url: ...,
  queryParams: {
    memeber_id: 12
  }
});
Or reload the datagrid with parameters.
Code:
$('#dg').datagrid('load', {member_id: ...});
Logged
Pierre
Sr. Member
****
Posts: 399


View Profile Email
« Reply #5 on: December 07, 2017, 01:44:11 AM »

Just Awesome. Jarry you are the man! It works perfect, thank you so much!
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!