0

この質問は簡単な質問ですが、この問題を解決するために何をする必要があるのか​​理解できません。

ページ付けのあるテーブルを表示するWebページがあります。表の上には、ユーザーがドロップダウンメニューから選択した前のページのセッションによって渡された情報があります。

ユーザーが2ページ目などにページを移動すると、渡された情報が失われます。おそらくページの更新を行ってください。

Ajax、jquery、phpなどに関する多数のチュートリアル(20以上)を検索して見ましたが、何を見ているのか理解できません。チュートリアルに従っていますが、問題を解決するチュートリアルを解釈できません。

ステップバイステップガイドは、誰かにそれをしてもらう以外に、これを修正する唯一の方法だと思います。

私は間違いなくこの問題で助けていただければ幸いです。

ページネーション以降の2ページ目に渡そうとしているコードは、変数 $brandname、、、 $pickedです$pickchek。コードのphp部分を以下に示します。

echo "<div id=firstpick>";
$brandname = $_GET['brandname'];
$picked = $_GET['picked'];
$pickcheck = $_GET['pickcheck'];


$brands =($brandname);
$_SESSION['$brandname']= $brandname;
$pick =($picked);
$_SESSION['$picked']= $pick;
$picker =($pickcheck);
$_SESSION['$pickcheck']=$picker;
echo "</div>";


$tbl_name="pickme";
$adjacents = 3;

$query = "SELECT COUNT(*) as num FROM tirestock";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages["num"];

$targetpage = "connecttest.php";    //your file name  (the name of this file)
$limit = 5;                     //how many items to show per page
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$page=mysql_real_escape_string($page);
if($page)
    $start = ($page - 1) * $limit;  //first item to display on this page
else
    $start = 0;

$sql = "SELECT * FROM tirestock LIMIT $start, $limit";
$result = mysql_query($sql);

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
$lastpage = ceil($total_pages/$limit);//lastpage is = total pages / items per                                           

$lpm1 = $lastpage - 1;              //last page minus 1

$pagination = "";
if($lastpage > 1)
{
    $pagination .= "<div class=\"pagination\">";
    //previous button
    if ($page > 1)
        $pagination.= "<a href=\"$targetpage?page=$prev\">« previous</a>";
    else
        $pagination.= "<span class=\"disabled\">« previous</span>";

    //pages
    if ($lastpage < 7 + ($adjacents * 2))//not enough pages to bother breaking  

    {
        for ($counter = 1; $counter <= $lastpage; $counter++)
        {
            if ($counter == $page)
                $pagination.= "<span  
 class=\"current\">$counter</span>";                                
            else
                $pagination.= "<a href=\"$targetpage? 
 page=$counter\">$counter</a>";
        }
    }
    elseif($lastpage > 5 + ($adjacents * 2))    //enough pages to hide some
    {
        //close to beginning; only hide later pages
        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 href=\"$targetpage?
page=$counter\">$counter</a>";
            }
            $pagination.= "...";
            $pagination.= "<a href=\"$targetpage?
page=$lpm1\">$lpm1</a>";
            $pagination.= "<a href=\"$targetpage?
page=$lastpage\">$lastpage</a>";
        }
        //in middle; hide some front and some back
    elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
        {
            $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
            $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
            $pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
            {
                if ($counter == $page)
            $pagination.= "<span class=\"current\">$counter</span>";
                else
        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
            }
            $pagination.= "...";
        $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
    $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
        }
        //close to end; only hide early pages
        else
        {
            $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
            $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
            $pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
            {
                if ($counter == $page)
            $pagination.= "<span class=\"current\">$counter</span>";
                else
        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
            }
        }
    }

    //next button
    if ($page < $counter - 1)
        $pagination.= "<a href=\"$targetpage?page=$next\">next »</a>";
    else
        $pagination.= "<span class=\"disabled\">next »</span>";
    $pagination.= "</div>\n";
}


   echo "<div style='font-weight:bold' text-align:center;><font size='5'>You picked Brand:   
         $brandname<br></br></hr></div>";
   echo "<div style='font-weight:bold'><font size='5'>You picked Size: $picked<br></br></hr>
         </div>";
   echo "<div style='font-weight:bold'><font size='5'>You picked Type: $pickcheck<br></br>
         </hr></div>";
4

3 に答える 3

1

ページネーションスクリプトが作成するリンクにブランド名、picked、pickcheckを添付します。

<a href=\"$targetpage?page=$prev&brandname=$brandname&picked=$picked&pickcheck=$pickcheck\">« previous</a>`
于 2012-06-20T22:48:35.437 に答える
0

JavascriptでlocalStorageを使用する方法を知っていますか?これは、phpでそれを機能させる方法のチュートリアルです。http://www.devshed.com/c/a/PHP/Create-A-ClientSide-Cache-in-PHP/1/

これを使用して、ページの変更の間に変数を保存できます。

もちろん、JSがない場合、これはあまり役に立ちません。

于 2012-06-20T22:44:22.517 に答える
0

セッション内のページ間で失われているデータを設定するか、より良い解決策は ajax を使用してページネーションを行うことです。アイデアは非常に単純です.ajaxを使用してページデータをロードするには、ページネーションリンクにjavascriptでクリックハンドラーを添付する必要があります. jquery を使用している場合、面倒な作業はすべて jquery が行います。jquery .ajax() またはより単純な .load() メソッドを読んでください。それらが役立ちます。

JavaScript の知識が限られている場合の簡単な解決策は、PHP セッションを使用してページ間でデータを永続化することです。理解できる場合は、ajax を使用することをお勧めします。理想的には、javascript を無効にしても機能するように、プログレッシブ エンハンスメントに合わせて両方を実装することをお勧めします。

編集:

クリック ハンドラーの単純な jquery の例は次のようになります。

$(".pagination a").click(function(e){ // this line binds the handler to your pagination
  e.preventDefault();  //this prevents the link being loaded as a new page, the default behaviour
  var pageToLoad = $(this).attr("href"); //we get the url of the page to load in by ajax
  $("#page-contents").load(pageToLoad); //replace the contents of the div with the id="page-contents" with the result of the ajax request. 
});

これには、最初に jquery ライブラリを含め、ID #page-contents を持つ要素内のページネーションに置き換えるメイン コンテンツを含める必要があります。ページネーション リンクの href は、html ページ全体ではなく、置換するページのセグメントのみを返す必要があることに注意してください。これを行うには、呼び出した URL から php のブロックを返すか、 jquery ロード メソッドを使用して、特定の ID 内の完全な html ページのブロックにロードするだけです。

于 2012-06-20T22:33:08.577 に答える