2011-07-22 9 views
1
$today = date('D, d M, Y'); 
$sql = "SELECT * FROM table WHERE date = '$today'"; 
if ($_POST!="") { 
    $mydate = mysql_real_escape_string($_POST['datepicker']); 
    if ($mydate != "") {  
     $sql = "SELECT * FROM table WHERE date = '$mydate'";  
    }  
} 
$num_results_per_page = 8; 
$num_page_links_per_page = 5; 
$pg_param = ""; 
$result=mysql_query($sql); 
$row = mysql_fetch_array($result); 
pagination($sql, $num_results_per_page, $num_page_links_per_page, $pg_param); 
if($pg_error == '') 
{ 
    if(mysql_num_rows($pg_result) > 0) 
    { 
     while($data = mysql_fetch_assoc($pg_result)) 
     { 
      echo ""; 
     }   
     echo "</br>". $pagination_output; 
    } 
    else 
    { 
     echo "No Data."; 
    } 
} 
else 
{ 
    echo $pg_error; 
} 

上記のコードでページネーションが正しく機能していません。私はそれが2つの選択されたステートメントのためであると考えています。それら2つを組み合わせることができれば問題ありません。助言がありますか?これらの2つの選択文をどのように組み合わせることができますか?2つの選択ステートメントが原因でページネーションが機能しない

選択は$todayで正しく動作していますが、選択は$mydateで正しく機能していません。たとえば、ユーザが$mydateの選択肢でページ番号2をクリックした場合、再び$todayが選択されます。

pagination.php

$pg_error = ''; 
$pg_result = ''; 
$pagination_output = ''; 
$max_pages = ''; 
$page_id = ''; 
$page_numbers_per_page = ''; 
$pg_user_param = ''; 
function pagination($sql, $num_results_per_page, $num_page_links_per_page, $pg_param) 
{ 
global $pg_error, $pg_result, $max_pages, $page_id, $page_numbers_per_page, $pg_user_param; 
$user_sql = $sql; 
$page_numbers_per_page = $num_page_links_per_page; 
$results_per_page = $num_results_per_page; 
$pg_user_param = $pg_param; 
$all_results = mysql_query($user_sql); 
if($all_results) 
{ 
    if(empty($all_results)) 
    { 
     $total_results = 0; 
    } 
    else 
    { 
     $total_results = mysql_num_rows($all_results); 
    } 
    $max_pages = ceil($total_results/$results_per_page);    
    if(isset($_GET['page_id'])) 
    {   
     $page_id = (int) $_GET['page_id'];   

     if($page_id > $max_pages || empty($page_id)) 
     { 
      $page_id = 1;    
     } 
    } 
    else 
    { 
     $page_id = 1;   
    } 
    $page_id_temp = ($page_id - 1) * $results_per_page; 
    $sql_offset = $page_id_temp; 
    $user_sql .= " limit $sql_offset, $results_per_page";  
    $pg_result = mysql_query($user_sql); 
    Create_Links();  
} 
else 
{ 
    $pg_error = 'Error with the sql query you entered: '.mysql_error(); 
} 
} 
function Create_Links() 
{ 
global $pagination_output, $max_pages, $page_id, $page_numbers_per_page, $pg_user_param; 
$pg_page_name = htmlspecialchars($_SERVER['PHP_SELF']); 

if($max_pages > 1) 
{    
    if($page_id > 1) 
    {   
     $first_link = '<a href="'.$pg_page_name.'?page_id=1'.$pg_user_param.'">First</a> '; 
    } 

    if($page_id < $max_pages) 
    {   
     $last_link = '<a href="'.$pg_page_name.'?page_id='.$max_pages . $pg_user_param.'">Last</a> '; 
    } 
    $pre_id = $page_id - 1; 
    if($pre_id != 0) 
    { 
     $pre_link = '<a href="'.$pg_page_name.'?page_id='.$pre_id . $pg_user_param.'">Previous</a> '; 
    }  
    $next_id = $page_id + 1; 
    if($next_id <= $max_pages) 
    { 
     $next_link = '<a href="'.$pg_page_name.'?page_id='.$next_id . $pg_user_param.'">Next</a> '; 
    } 

    if($page_id >= $page_numbers_per_page) 
    { 

     $start_point = ($page_id - $page_numbers_per_page) + 2; 
    } 
    else 
    {   
     $start_point = 1; 
    } 

    $loop_num = ($start_point + $page_numbers_per_page) - 1; 
    if($loop_num > $max_pages) 
    { 
     $loop_num = $max_pages; 
    } 
    $pagination_output = '<div class="pagination"> '; 
    $pagination_output .= $first_link; 
    $pagination_output .= $pre_link;   
    for($i = $start_point; $i <= $loop_num; $i++) 
    { 
     if($i == $page_id) 
     { 
      $pagination_output .= '<a class="current">'.$i.'</a> '; 
     } 
     else 
     { 
      $pagination_output .= '<a href="'.$pg_page_name.'?page_id='.$i . $pg_user_param.'">'.$i.'</a> '; 
     } 
    }  
    $pagination_output .= $next_link; 
    $pagination_output .= $last_link;  
    $pagination_output .= '</div><br />'; 
} 
} 
?> 
+0

saam1234 @際にクリックページ番号2あなたはポストの方法でデータを送信します? – triclosan

+0

@tricolson ...これは問題なのでしょうか?問題を解決するには – saam1234

答えて

0

ページネーションは、それがPOSTの入力値でなければなりません「今日$」のために働いている場合 - あなたは必ずmysqlのが理解できる適切な日付を取得している作っていますか? 形式は基本的に "$ today"のものと一致する必要があります。

+0

'$ mydate'ページ区切り入力が得られますが、ページ2のクリックが '$ today' – saam1234

+0

@samaura ...書式はすべて正常です... – saam1234

0

私は、2回目のクリックがmyDateを次のページにポストしていないと思います。次のページはPOSTで何も見ずに今日使用します。

これを避けるには、datepickerのGETを確認し、GETを使用してmyDateを渡すこともできます。

編集:日付ピッカーは、我々はまだそれをつかむGETリクエストからのものである場合ということを意味

if ($_REQUEST!="") { 
    $mydate = mysql_real_escape_string($_REQUEST['datepicker']); 
    if ($mydate != "") {  
     $sql = "SELECT * FROM table WHERE date = '$mydate'";  
    }  
} 

:MyDateに該当上 チェックをGETを使用するコードの更新上の明確化は次のように変更する必要があります。
Create_Linksは()あなたはTHS関数に$ MyDateに該当して合格する必要があることに注意してください(「&日付ピッカー= $ MyDateに該当」を追加するように変更する必要があります。

+0

saam1234

+0

@jimはい、正解です.2回目のクリックで$ mydateを次のページに投稿していません...私の質問を編集し、pagiを追加しました。 nation.php。見てください。 2ページ目に$ mydateを渡す方法は? – saam1234

+0

@ saam1234詳細を追加しました – Jim

関連する問題