【问题标题】:Show name row and not the id in DataTable Server Side在 DataTable 服务器端显示名称行而不是 id
【发布时间】:2014-05-15 16:56:14
【问题描述】:

我在数据库(MySql)中有两张表,一张是国家名称,另一张是用户名。现在,当一些用户被添加到他/她从他/她所在的位置选择的站点时......一切都很好,但是由于用户数据库增长到 2,000 个用户,我需要强制更改为服务器端数据表以显示所有没有的用户脚本强制冻结屏幕或站点。现在我看不到每个用户的国家/地区名称,只有 id...所以我的问题是需要添加或更改什么才能看到国家名称而不是 id。

我关注这些帖子:

  1. how-relating-two-tables-to-show-name-row-and-not-the-id-in-mysqlpdo
  2. server-side

这是我的数据库:

|----------USERS-------------|
|---id-----------int---------|
|---nombres---varchar(150)---| is the user name
|---fnac-------datetime------| is the birthday
|---direccion----text--------| is the address
|---paisid--------int(3)-----| is the country id
|---foto-------varchar(50)---| is the user photo
|----------------------------|

|-----------PAISES-----------|
|---id---------int(11)-------| is the country id
|---paises---varchar(100)----| is the country name
|----------------------------|

这是我的代码(现在我不使用它,因为我不知道我需要在哪里插入它):

<?php $query = "SELECT U.paisid, P.pais,
(SELECT pais FROM PAISES WHERE id = paisid)
AS pais
FROM USERS U
INNER JOIN PAISES P
ON  U.paisid = P.id";
$stmt = $conn->prepare( $query );   
$stmt->execute();
$rows = $stmt->fetchAll();
foreach( $rows as $row )
{ ?><?php echo $row['pais']; ?><?php } ?>

JS:

$('#userTabla').dataTable( {
    "bProcessing": true,
    "bServerSide": true,
    "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span12'i><'span12 center'p>>",
    "sAjaxSource": "includes/server_process.php",
    "aoColumns": [
        { "mData": "id" },
        { "mData": "nombres" },
        { "mData": "paisid" },
        {
            "mData": null,
            "sClass": "center",
            "sDefaultContent": "",
            "fnRender": function (o) {
            return '<a href="perfil.php?id=' + o.aData[0] + '" class="btn btn-success"><i class="icon-user icon-white"></i> Ver perfil</a> <a href="editar.php?id=' + o.aData[0] + '" class="btn btn-info"><i class="icon-edit icon-white"></i> Editar</a> <a id="' + o.aData[0] + '" class="btn btn-danger" href="#"><i class="icon-trash icon-white"></i> Borrar</a>'
        },
        "aTargets": [3]
        }
    ],
    "sPaginationType": "bootstrap",
    "oLanguage": {
    "sLengthMenu": "_MENU_ registros por pag"
    }
});

server_process.php(我更改示例数据的部分)

$aColumns = array( 'id', 'nombres', 'paisid');

/* Indexed column (used for fast and accurate table cardinality) */
$sIndexColumn = "id";

/* DB table to use */
$sTable = "USERS";

/* Database connection information */
$gaSql['user']       = "dbuser";
$gaSql['password']   = "XXXXXX";
$gaSql['db']         = "dbmega";
$gaSql['server']     = "localhost";

【问题讨论】:

    标签: php jquery mysql datatable server-side


    【解决方案1】:
     <?php 
    $query = "SELECT USERS.* , PAISES.`paises` as countryName
    FROM USERS 
    INNER JOIN PAISES 
    ON  paisid = id";
    
    $stmt = $conn->prepare( $query );   
    $stmt->execute();
    $rows = $stmt->fetchAll();
    
     $returnArray = array();
    foreach( $rows as $row )
    { 
    returnArray[] = array($row['id'],$row['nombres'],$row['countryName']);
    }
    

    请将 paisid 类型更改为 int

    var myDataTable = $('#userTabla').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span12'i><'span12  center'p>>",
        "sAjaxSource": "includes/server_process.php",
        "aoColumns": [
            { "mData": "id" },
            { "mData": "nombres" },
            { "mData": "paisid" },
             {
               "mData": null,
               "sClass": "center",
               "sDefaultContent": "",
               "fnRender": function (o) {
               return '<a href="perfil.php?id=' + o.aData[0] + '" class="btn btn-success"><i class="icon-user icon-white"></i> Ver perfil</a> <a href="editar.php?id=' + o.aData[0] + '" class="btn btn-info"><i class="icon-edit icon-white"></i> Editar</a> <a id="' + o.aData[0] + '" class="btn btn-danger" href="#"><i class="icon-trash icon-white"></i> Borrar</a>'
             },
             "aTargets": [3]
            }
        ],
        "sPaginationType": "bootstrap",
        "oLanguage": {
        "sLengthMenu": "_MENU_ registros por pag"
        }
    });
    
    myDataTable.fnAddData( <? echo json_encode(returnArray[]); ?>);
    

    【讨论】:

    • 嗨,@volkinc 是的,那是写入错误,已经是 int(我现在将编辑它的表格)...但是我怎样才能显示国家名称而不是 id dataTable服务器端显示表中的所有用户?
    • 嗨。没有足够的数据。 o.aData[0] 是什么? perfil.php 是什么?
    • 我更新了答案,请看
    • 您好,`o.aData[0]` 是在服务器端(server_process.php)捕获的每个用户的 id。 perfil.php?id= , editar.php?id= 是每个用户个人资料页面和用户编辑页面。
    • 而且我认为选择代码是错误的... U IS MISSED in this part = FROM USERS 'HERE IS MISSING THE U' INNER JOIN PAISES P ON U.paisid...我使用的代码正在工作但在 js 内部我无法插入任何代码因为总是给我 SyntaxError: Unexpected token &lt;
    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2017-12-28
    相关资源
    最近更新 更多