2016-04-28 14 views
1

私と穏やかにしてください私はちょうど初心者です、私はちょうど自習しています。私は$ data、$ con、$ limit、$ adjacentの関数(showdata)内の変数について質問します。下記のコードを見てください。私はすでにこれの説明を探してきましたが、何も見つかりませんでした。 3つの変数data、con、limitはインクルードPHPファイルにありますが、データ変数はクエリである関数 の範囲内にあります。この背後にある説明は何ですか?この変数のいずれかを削除した場合、ページネーションは機能しません。関数内の複数の変数についての質問

<?php 
include('db.php'); 

if(isset($_REQUEST['actionfunction']) && $_REQUEST['actionfunction']!=''){ 
$actionfunction = $_REQUEST['actionfunction']; 

    call_user_func($actionfunction,$_REQUEST,$con,$limit,$adjacent); 
} 
function showData($data,$con,$limit,$adjacent){ 
    $page = $data['page']; 
    if($page==1){ 
    $start = 0; 
    } 
    else{ 
    $start = ($page-1)*$limit; 
    } 
    $sql = "select * from ajaxpage order by id asc"; 
    $rows = $con->query($sql); 
    $rows = $rows->num_rows; 

    $sql = "select * from ajaxpage order by id asc limit $start,$limit"; 

    $data = $con->query($sql); 
    $str='<table><tr class="head"><td>Id</td><td>Firstname</td><td>Lastname</td></tr>'; 
    if($data->num_rows>0){ 
    while($row = $data->fetch_array(MYSQLI_ASSOC)){ 
     $str.="<tr><td>".$row['id']."</td><td>".$row['firstname']."</td><td>".$row['lastname']."</td></tr>"; 
    } 
    }else{ 
    $str .= "<td colspan='5'>No Data Available</td>"; 
    } 
    $str.='</table>'; 

echo $str; 
pagination($limit,$adjacent,$rows,$page); 
} 
function pagination($limit,$adjacents,$rows,$page){ 
    $pagination=''; 
    if ($page == 0) $page = 1;     //if no page var is given, default to 1. 
    $prev = $page - 1;       //previous page is page - 1 
    $next = $page + 1;       //next page is page + 1 
    $prev_=''; 
    $first=''; 
    $lastpage = ceil($rows/$limit); 
    $next_=''; 
    $last=''; 
    if($lastpage > 1) 
    { 

     //previous button 
     if ($page > 1) 
      $prev_.= "<a class='page-numbers' href=\"?page=$prev\">previous</a>"; 
     else{ 
      //$pagination.= "<span class=\"disabled\">previous</span>"; 
      } 

     //pages 
     if ($lastpage < 5 + ($adjacents * 2)) //not enough pages to bother breaking it up 
     { 
     $first=''; 
      for ($counter = 1; $counter <= $lastpage; $counter++) 
      { 
       if ($counter == $page) 
        $pagination.= "<span class=\"current\">$counter</span>"; 
       else 
        $pagination.= "<a class='page-numbers' href=\"?page=$counter\">$counter</a>";     
      } 
      $last=''; 
     } 
     elseif($lastpage > 3 + ($adjacents * 2)) //enough pages to hide some 
     { 
      //close to beginning; only hide later pages 
      $first=''; 
      if($page < 1 + ($adjacents * 2))   
      { 
       for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<span class=\"current\">$counter</span>"; 
        else 
         $pagination.= "<a class='page-numbers' href=\"?page=$counter\">$counter</a>";     
       } 
      $last.= "<a class='page-numbers' href=\"?page=$lastpage\">Last</a>";    
      } 

      //in middle; hide some front and some back 
      elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) 
      { 
       $first.= "<a class='page-numbers' href=\"?page=1\">First</a>"; 
      for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<span class=\"current\">$counter</span>"; 
        else 
         $pagination.= "<a class='page-numbers' href=\"?page=$counter\">$counter</a>";     
       } 
       $last.= "<a class='page-numbers' href=\"?page=$lastpage\">Last</a>";    
      } 
      //close to end; only hide early pages 
      else 
      { 
       $first.= "<a class='page-numbers' href=\"?page=1\">First</a>"; 
       for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<span class=\"current\">$counter</span>"; 
        else 
         $pagination.= "<a class='page-numbers' href=\"?page=$counter\">$counter</a>";     
       } 
       $last=''; 
      } 

      } 
     if ($page < $counter - 1) 
      $next_.= "<a class='page-numbers' href=\"?page=$next\">next</a>"; 
     else{ 
      //$pagination.= "<span class=\"disabled\">next</span>"; 
      } 
     $pagination = "<div class=\"pagination\">".$first.$prev_.$pagination.$next_.$last; 
     //next button 

     $pagination.= "</div>\n";  
    } 

    echo $pagination; 
} 
?> 
+0

変数は関数のスコープでは使用できません。 'showData()'関数の中で変数を使用するには 'global'を使用してください。 –

+0

関数内で定義された$データ変数はどうですか? – MarlZ15199

+0

@ MarlZ15199 $データは$ conに基づいています。関数のパラメータから削除すると$ conも定義されていません –

答えて

-1

したがって、$ dataはcall_user_func()内で定義されていますか?もしそうなら、あなたはそのfuncitionの外にデータを宣言し、その関数内でそれにアクセスするためにグローバルを使用する必要があります。

`$のdata`、` $のcon`、 `$のlimit`と` $のadjacent`ためだ
$data=0; 
function somefunction() { 
    global $data; 
    $data=50; 
} 
// now call the function - $data has been updated at top level 
somefunction(); 
echo $data; // prints 50 
関連する問題