2017-08-02 28 views
-1

テーブルからデータを取得する関数を作成しました。関数からwhileループにデータを出力する

ここでは、返されたデータをwhileループを使用してテーブルに出力します。
ほとんどすべてがOKですが、関数を呼び出すと、最初の行だけが印刷されます。

$usr = $_SESSION['MM_UID']; 
function getData($leavetype,$eo, $usr) 
{ 
    $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' "; 
    $getdata = mysqli_query($eo, $get); 
    while($geta = mysqli_fetch_assoc($getdata)) 
    { 
     return($geta); 
    } 
} 
echo '<strong>Annual Leaves</strong>'; 
echo '<table class="table basicTable"><thead><th>Leave Duration</th><th>Start Date</th><th>End Date</th></thead>'; 
echo '<tbody>'; 
$getb = getData('annual',$eo,$usr); 
echo '<tr><td>'.$getb['leaveDays'].'</td><td>'.$getb['startDate'].'</td><td>'.$getb['endDate'].'</td><td>'.$getb['remarks'].'</td></tr>'; 

echo '<tr><strong></tr>'; 
echo '</tbody></table>'; 

注意:$eoはデータベース接続です。

答えて

1

あなたはwhileループを使用することができます。それを修正しましょう:

function getData($leavetype,$eo, $usr) 
{ 
    $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' "; 
    $getdata = mysqli_query($eo, $get); 
    $result = array(); 
    while($geta = mysqli_fetch_assoc($getdata)) 
    { 
     $result[] = $geta; 
    } 
    return $result; 
} 

これを呼び出すと、テーブルに移ることができます。

$results = getData('annual',$eo,$usr); 
?> 
<strong>Annual Leaves</strong> 
<table class="table basicTable"> 
    <thead> 
     <th>Leave Duration</th> 
     <th>Start Date</th> 
     <th>End Date</th> 
    </thead> 
    <tbody> 

<?php foreach($results as $getb) { 
    echo '<tr><td>'.$getb['leaveDays'].'</td><td>'.$getb['startDate'].'</td> 
    <td>'.$getb['endDate'].'</td><td>'.$getb['remarks'].'</td></tr>'; 
} 
echo '<tr><strong></tr>'; 
echo '</tbody></table>'; 
?> 
0

foreachで試してみてください。

function getData($leavetype,$eo, $usr) 
    { 
    $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' "; 
    $getdata = mysqli_query($eo, $get); 
    return $geta = mysqli_fetch_assoc($getdata))   
    } 



$getb = getData('annual',$eo,$usr); 
$table = ''; 
foreach($getb as $b){ 
    $table .='<tr><td>'.$b['leaveDays'].'</td><td>'; 
    $table .=$b['startDate'].'</td><td>'.$b['endDate'].'</td>'; 
    $table .='<td>'.$b['remarks'].'</td></tr>'; 

} 
echo $table; 
0

問題はここにあります。

while($geta = mysqli_fetch_assoc($getdata)) 
     { 
      return($geta); 
     } 
     //return here enter code here 

一部のデータ構造(配列など)のすべてのデータを収集し、最後の繰り返し後に変数を返します。 ここにあるサンプルコード:

$usr = $_SESSION['MM_UID']; 
function getData($leavetype,$eo, $usr) 
{ 
    $get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' "; 
    $getdata = mysqli_query($eo, $get); 
    return($getdata); 
} 
echo '<strong>Annual Leaves</strong>'; 
echo '<table class="table basicTable"><thead><th>Leave Duration</th><th>Start Date</th><th>End Date</th></thead>'; 
echo '<tbody>'; 
$getc = getData('annual',$eo,$usr); 
while($getb = mysqli_fetch_assoc($getc)){ 
    echo '<tr><td>'.$getb['leaveDays'].'</td><td>'.$getb['startDate'].'</td><td>'.$getb['endDate'].'</td><td>'.$getb['remarks'].'</td></tr>'; 
} 

echo '<tr><strong></tr>'; 
echo '</tbody></table>'; 
+0

どうすればよいですか? – Lanka

0

問題はgetDataは、単一の結果を返すことである

0

すべてのデータを取得せずに結果を返します。 whileステートメントを変更すると、問題は解決されます。

$get = "SELECT * FROM `leaveregister` WHERE employee = '$usr' AND `leaveType`='$leavetype' "; 
$result = array(); 
$getdata = mysqli_query($eo, $get); 
while($geta = mysqli_fetch_assoc($getdata)) 
{ 
    $result[] = $geta; 
} 
return $result; 
関連する問題