1

2 つのテーブルがあります: Customer Contact。テーブル contact には、customer テーブルを指す外部キーがあります。

<table id="dgContactSearch" title="Suche" class="easyui-datagrid" style="height:160px" 
                            url="getContacts.php"
                            toolbar="#toolbarContactSearch" pagination="true"
                            rownumbers="true" fitColumns="true" singleSelect="true">
                        <thead>
                            <tr>
                                <th field="customer_id" width="50">Customer</th>
                                <th field="name" width="50">Name</th>
                                <th field="function" width="50">Funktion</th>
                                <th field="phone" width="50">Phone</th>
                                <th field="mobile" width="50">Mobile</th>
                                <th field="fax" width="50">Fax</th>
                                <th field="email" width="50">Email</th>
                                <th field="comment" width="50">Commnent</th>
                            </tr>
                        </thead>
                    </table>

ここにphpファイルがあります

$page = isset($_POST['page']) ? intval($_POST['page']) : 1;
    $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
    $searchItemContact = isset($_POST['searchItemContact']) ? mysql_real_escape_string($_POST['searchItemContact']) : '';

    $searchItemContact = htmlentities($searchItemContact, ENT_QUOTES, 'UTF-8');

    $offset = ($page-1)*$rows;

    $result = array();

    $where = "name like '%$searchItemContact%' OR function like '%$searchItemContact%' OR email like '%$searchItemContact%' OR comment like '%$searchItemContact%'";
    $rs = mysql_query("select count(*) from contact where " . $where);
    $row = mysql_fetch_row($rs);
    $result["total"] = $row[0];

    $rs = mysql_query("select * from contact where " . $where . " limit $offset,$rows");

    $items = array();
    while($row = mysql_fetch_object($rs)){
        array_push($items, $row);
    }
    $result["rows"] = $items;
    echo json_encode($result);

<th field="customer_id" width="50">Customer</th>をリンク可能にしたい。つまり<a href="customerView.php?id=$customer_id>#</a> 、テーブルをロードすると、ID の代わりに顧客名が表示され、顧客ページへのリンクが作成されます。助けてください。

アップデート

私はどういうわけか小さな回避策を管理しました:

<th data-options="field:'name',width:100,align:'left',formatter:formatCustomerId">Name</th>

そしてそれに沿ったJavascript関数:

function formatCustomerId(val,row){
    var url = "customerView.php?id=";
    return '<a href="'+url + row.customer_id+'">'+val+'</a>';
}
4

2 に答える 2

3

最終的な解決策は、以前のすべての回答の混合物でした:)。

<table id="dgContactSearch" title="Benutzer Suche" class="easyui-datagrid" style="height:160px" 
                            url="getContacts.php"
                            toolbar="#toolbarContactSearch" pagination="true"
                            rownumbers="true" fitColumns="true" singleSelect="true">
                        <thead>
                            <tr>
                                <th data-options="field:'firma',width:80,align:'left',formatter:formatCustomerId">Kunde</th>
                                <th data-options="field:'name',width:50,align:'left',formatter:formatContactUrl">Name</th>
                                <th field="function" width="50">Funktion</th>
                                <th field="phone" width="50">Phone</th>
                                <th field="email" width="50">Email</th>
                                <th field="mobile" width="50">Mobile</th>
                                <th field="fax" width="50">Fax</th>

                                <th field="comment" width="120">Kommentare</th>
                            </tr>
                        </thead>
</table>

スクリプト:

<script>
function formatCustomerId(val,row){
    var url = "customerView.php?id=";
    return '<a href="'+url + row.customer_id+'">'+val+'</a>';
}

function formatContactUrl(val,row){
    var url = "contactView.php?id=";
    return '<a href="'+url + row.id+'">'+val+'</a>';
}
</script>

および getContacts.php

<?php
    include 'includes/db_functions.php';
    db_link();

    $page = isset($_POST['page']) ? intval($_POST['page']) : 1;
    $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
    $searchItemContact = isset($_POST['searchItemContact']) ? mysql_real_escape_string($_POST['searchItemContact']) : '';

    $searchItemContact = htmlentities($searchItemContact, ENT_QUOTES, 'UTF-8');

    $offset = ($page-1)*$rows;

    $result = array();

    $where = "name like '%$searchItemContact%' OR function like '%$searchItemContact%' OR customer.name like '%$searchItemContact%' OR email like '%$searchItemContact%' OR comment like '%$searchItemContact%'";
    $rs = mysql_query("select count(*) from contact where " . $where);
    $row = mysql_fetch_row($rs);
    $result["total"] = $row[0];


    $sql = "SELECT contact.*, customer.name
    FROM `contact`
    INNER JOIN `kunden` on contact.customer_id = kunden.id ";

    $rs = mysql_query($sql . "where " . $where . " limit $offset,$rows");

    $items = array();
    while($row = mysql_fetch_object($rs)){
        array_push($items, $row);
    }
    $result["rows"] = $items;
    echo json_encode($result);

?>
于 2013-04-18T08:51:00.090 に答える
0

そのようなリンクの場合、data-url 属性を使用してリダイレクトする URL を保存し、jquery を使用してユーザーをリダイレクトします。例:

テーブルを生成するときにサーバー側で、リンクを関連付けたい場所に data-url 属性を記述します。

<td class='customer_whatever' data-url='<?= $customer_page_url ?>'> Customer Name</td>

jQuery では、すべてをキャッチして onclick イベントを追加します。

$('td').each(function(){
  if($(this).data('url')){
      $(this).click(function(){

        $(location).attr('href',$(this).data('url'));
      });
  }
});

css に以下を入れることを忘れないでください:

.customer_whatever{ cursor:pointer;}

これは小さな実例です: http://jsfiddle.net/9XA3k/1/

于 2013-04-17T14:22:15.700 に答える