1

私はプログラミングのスキルがそれほど高くなく、おそらく大したことではないこの部分に苦労しています。選択した顧客アカウントから特定の情報を含むテーブルを生成し、MS SQL DB から取得して、各行とセルを編集するオプションを用意する必要があります。

jqgrid を使用してグリッドを生成し、アクション ボタンでインライン編集オプションを追加しています。DB へのサーバー側の php 呼び出しでクエリを具体的に定義すると、すべてがうまく機能しますが、特定のアカウントに関連する情報をグリッドに入力する必要があります。以前にログイン ページと検証ページを入力した後にこの画面に到達すると、既に顧客番号を含む php 変数があり、それを jqgrid に渡して、関連する情報のみを取得できるようにする必要があります。そのアカウント。

これが機能しているものです。最初に、顧客のアカウント情報が表示されているページです。

#customerinfo.php
<?php
   $acctnum = $_SESSION['custnum'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    ...
    <script type="text/javascript">
  $(function(){ 
    $("#regphones").jqGrid({
    url:'custregphone.php',
    datatype: 'json',
    mtype: 'POST',
    colNames:['Actions','Autodialer ID','Customer #','Access #','Destination #','Description'],
    colModel :[ 
      {name:'act', index:'act', width:70, sortable:false},
      {name:'autodialer_id', index:'autodialer_id', width:80, align:'center', sortable:true, editable:true, hidden:true},
      {name:'account', index:'account', width:90, align:'center', sortable:true, editable:true, hidden:true}, 
      {name:'dnis', index:'dnis', width:90, align:'center', sortable:true, editable:true}, 
      {name:'destination', index:'destination', width:120, align:'center', sortable:true, editable:true}, 
      {name:'description', index:'description', width:120, align:'center', sortable:true, editable:true}            
    ],
    pager: '#regphonesp',
    rowNum:5,
    rowList:[5,10,15],
    sortname: 'dnis',
    sortorder: 'desc',
    viewrecords: false,
    gridview: true,
    scrollOffset:0,
    gridComplete: function(){
      var ids = jQuery("#regphones").jqGrid('getDataIDs'); 
        for(var i=0;i < ids.length;i++){ 
            var cl = ids[i]; 
            be = "<input style='height:22px;width:20px;' type='button' value='E' onclick=\"jQuery('#regphones').editRow('"+cl+"');\" />"; 
            se = "<input style='height:22px;width:20px;' type='button' value='S' onclick=\"jQuery('#regphones').saveRow('"+cl+"');\" />"; 
            ce = "<input style='height:22px;width:20px;' type='button' value='C' onclick=\"jQuery('#regphones').restoreRow('"+cl+"');\" />"; 
            jQuery("#regphones").jqGrid('setRowData',ids[i],{act:be+se+ce});
        }
      },
    editurl: "custregphone_edit.php",
    caption: 'Registered Phones',
      }); 
      jQuery("#regphones").jqGrid('navGrid',"#regphonesp",{edit:false,add:false,del:false});
  });
  </head>
  <body>
  ...
  Registered Numbers: <?php echo $acctnum; ?>
  <table id="regphones"></table> 
  <div id="regphonesp"></div>
  ...
</body>

次に custregphone.php:

<?php
include("functions_engtst.php");

$page = $_POST['page'];
$limit = $_POST['rows']; 
$sidx = $_POST['sidx'];
$sord = $_POST['sord']; 
$acctnum = $_POST['acctnum'];

if(!$sidx) $sidx =1; 

$dbh = get_db("live");
$sth = $dbh->prepare("SELECT COUNT(*) AS count FROM REGPHONE WHERE ACCOUNT='3058318318'");
$sth->execute();
$row = $sth->fetch(PDO::FETCH_ASSOC);
$count = $row['count'];
if( $count > 0 && $limit > 0) { 
    $total_pages = ceil($count/$limit); 
} else { 
    $total_pages = 0; 
}
if ($page > $total_pages) $page=$total_pages;
$start = $limit*$page - $limit;

$sth = $dbh->prepare("SELECT autodialer_id,account,dnis,destination,description FROM REGPHONE WHERE ACCOUNT= '3058318318' ORDER BY $sidx $sord");
$sth->execute();

$responce->page = $page;
$responce->total = $total_pages; 
$responce->records = $count;
$i=0;
while($row=$sth->fetch(PDO::FETCH_ASSOC)){ 
    $responce->rows[$i]['autodialer_id']=$row[autodialer_id]; 
    $responce->rows[$i]['cell']=array("",$row[autodialer_id],$row[account],$row[dnis],$row[destination],$row[description]);
    $i++; 
} 
echo json_encode($responce);
?>

このコードは機能しますが、アカウントの情報を動的に取得できないという問題があり、クエリで指定する必要がありました。私の質問は、変数$acctnumを custregphone.php の 2 つのクエリに渡して、次のようなものを取得するにはどうすればよいかということです。

    $sth = $dbh->prepare("SELECT COUNT(*) AS count FROM REGPHONE WHERE ACCOUNT= $acctnum");
    $sth->execute();

    $sth = $dbh->prepare("SELECT autodialer_id,account,dnis,destination,description FROM REGPHONE WHERE ACCOUNT= $acctnum ORDER BY $sidx $sord");
    $sth->execute()
4

0 に答える 0