fetchArray($result)是個很好用的解迴圈Xoops內建函數,可以直接吧資料表的欄位名稱變成陣列的name值,例如像下面這樣的資料表,要抓紅框中數值。
如果用fetchArray($result)來解只需要
$Array= $xoopsDB ->fetchArray($result) ." where `nsn ` = '26'";
echo $Array['keywordid'];
輸出結果就是紅框中的欄位資料數值tad_discuss
但這樣一次只能解一筆資料,如果要吧全部的資料都打包成一個陣列呢,基本上也是可以的,方法如下:
//查詢資料表while全部數值
function databasetablewhile($dbneme="",$where=""){
global $xoopsDB;
$sql = "select * from " . $xoopsDB->prefix($dbneme) . " ".$where."";
$result = $xoopsDB -> query($sql);
$i=1;
while($keyword= $xoopsDB ->fetchArray($result)){
$keywordArr[$i]=$keyword;
$i++;
};
return $keywordArr;
}
$dbneme="neothemeskeyword"; //資料表名稱
$where=" order by nsn DESC"; //where內容
$keyword=databasetablewhile($dbneme,$where); //呼叫databasetablewhile()函數
//略...............
foreach($keyword as $key=> $val){
$tablecenter.="
<tr >
<td >".$keyword[$key]['nsn']."</td>
<td >".$keyword[$key]['keywordid']."</td>
<td >".$keyword[$key]['keywordcenter']."</td>
<td >".$keyword[$key]['title']."</td>
<td > <a class='btn btn-default active' href='".XOOPS_URL."/modules/neothemesadmin/admin/newkeyword.php?nsn=".$keyword[$key]['nsn']."'>"._MA_NEODWADMIN_EDITORA."</a>
<a id='keywordbotton{$key}' class='btn btn-default active delkeyword' mane='".$keyword[$key]['nsn'].",".$keywordidname['name']."' href='#NO'>"._MA_NEODWADMIN_DELETEA."</a></td>
</tr>
";
}
}
如果用fetchArray($result)來解只需要
$Array= $xoopsDB ->fetchArray($result) ." where `nsn ` = '26'";
echo $Array['keywordid'];
輸出結果就是紅框中的欄位資料數值tad_discuss
但這樣一次只能解一筆資料,如果要吧全部的資料都打包成一個陣列呢,基本上也是可以的,方法如下:
//查詢資料表while全部數值
function databasetablewhile($dbneme="",$where=""){
global $xoopsDB;
$sql = "select * from " . $xoopsDB->prefix($dbneme) . " ".$where."";
$result = $xoopsDB -> query($sql);
$i=1;
while($keyword= $xoopsDB ->fetchArray($result)){
$keywordArr[$i]=$keyword;
$i++;
};
return $keywordArr;
}
使用while吧$xoopsDB ->fetchArray($result)包起來跑回圈撈出資料,再用$i值來區分陣列,這樣就能吧整個資料表都打包成一個$keywordArr陣列。
接下來就是解出陣列資料,方法也很簡單,只要用foreach即可
//引入 databasetablewhile函數
$where=" order by nsn DESC"; //where內容
$keyword=databasetablewhile($dbneme,$where); //呼叫databasetablewhile()函數
//略...............
foreach($keyword as $key=> $val){
$tablecenter.="
<tr >
<td >".$keyword[$key]['nsn']."</td>
<td >".$keyword[$key]['keywordid']."</td>
<td >".$keyword[$key]['keywordcenter']."</td>
<td >".$keyword[$key]['title']."</td>
<td > <a class='btn btn-default active' href='".XOOPS_URL."/modules/neothemesadmin/admin/newkeyword.php?nsn=".$keyword[$key]['nsn']."'>"._MA_NEODWADMIN_EDITORA."</a>
<a id='keywordbotton{$key}' class='btn btn-default active delkeyword' mane='".$keyword[$key]['nsn'].",".$keywordidname['name']."' href='#NO'>"._MA_NEODWADMIN_DELETEA."</a></td>
</tr>
";
}
}
//略...............
看一下結果,全部資料都有顯示在UI介面上
用fetchArray($result)是不是比$xoopsDB -> fetchRow($result)要好用的,不用每個變數都去定義陣列,打包整個資料表再用foreach解出資料就好了,這方法也能用在遞回上,下次有機會再寫個教學給大家參考。
教學撰寫:徐嘉裕 Neil hsu
留言
張貼留言