2012-02-24 10 views
1

PHPを学ぶ8日目、私は間違った順序で処理しようとしていると感じています....私は昨日までうまくいっていました。 myselftは、偽のオンラインブックショップを作成する作業を設定しています(PHPの本をすべて知っている人はpopuarのようです)。最初に私の製品を作成し、それらをデータベースのページにすべてリストしました。簡単に、ドロップダウンボックスを使用して結果を注文しました。その後、簡単に改ページして、注文コードとページ作成コードに参加しようとしました。私の人生で最も痛いほどの数時間でしたが、完了しました。私は検索バーを利用しました。簡単に考えました、今、私はこの検索バーと私のページネーションと注文コードを混ぜようとしていて、私の髪は一握りに落ちています!私は本当に私が一度に3つすべてを学ぶことを試みたが、ほんの一握りの/頭がいっぱいだっただろう。PHP - データベース内のレコードを同時に検索しながらページを検索している間に

私の問題は...それはページングする...さあ、それは命令...はい、私が最初に検索結果を見ると...それはページがいくつあるかがわかります常に正しい値)しかし、2番目のページを表示するためにクリックすると、検索結果を表示しなくなり、データベースのすべての製品の2ページ目に移動します。リストを注文しようとすると、同じことが起こります。これは、すべての商品の注文リストに変更され、検索条件が空であることがわかります!

このような長い質問に申し訳ありませんが、私はちょうど私がスリップした場所で働くことができません!

ありがとうございました。

相続コード:

booksearch.php:

(すべての無関係のコードを取り出してきた!)

<?php $query1 = "SELECT * 
     FROM booktable"; 

// execute the query 

$results1 = mysql_query($query1) 
       or die(mysql_error()); 

// count the number of rows that are selected from the table 

$field = mysql_num_fields($results1); 

// echo $field; 

     for ($i = 0; $i < $field; $i++) 
    { 
     $names[$i] = mysql_field_name($results1, $i); 
     } 
?> 
<form name="searchbook" action="productssearch.php" method="get"> 
    <br /> 
    Got For It:<input type="text" id="searchbar" name="searchterm" value="Enter anything and we will search on title, author, publisher and ISBN"></input> 
    <br /><br /> 
    <input type="submit" name="Search" value=" - Search - "></input> 
    </form> 

productssearch.php:

require "dbconn.php"; 
$term = $_GET['searchterm']; 
$records_per_page = 10; 
//If user set the sort order, save to session var - else set default 
if(@$_POST['order']) 
{  
$_SESSION['order'] = trim($_POST['order']); 
} 

elseif(!isset($_SESSION['order'])) 
{  
$_SESSION['order'] = 'bookname'; 
} 

//Determine the total records and pages 
$query = mysql_query ("SELECT COUNT(bookname) 
      FROM booktable 
      WHERE bookname LIKE '%".$term."%' 
      OR bookisbn LIKE '%".$term."%' 
      OR bookpub LIKE '%".$term."%' 
      OR bookauthor LIKE '%".$term."%'"); 



$total_records = mysql_result($query, 0); 
$total_pages = ceil($total_records/$records_per_page); 

//Set the page to load 
$page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1; 
if($page<1 || $page>$total_pages) 
{  
$page = 1; 
} 

//Create limit var for query 
$limit_start = ($page-1) * $records_per_page; 

//Create and run query for records on current page 
$query = mysql_query ("SELECT bookname, bookauthor, bookpub, bookisbn 
      FROM booktable 
      WHERE bookname LIKE '%".$term."%' 
      OR bookisbn LIKE '%".$term."%' 
      OR bookpub LIKE '%".$term."%' 
      OR bookauthor LIKE '%".$term."%'   
      ORDER BY ".mysql_real_escape_string($_SESSION['order'])." ASC 
      LIMIT $limit_start, $records_per_page"); 


//Prepare output 
//************************************************************** 
$numrow = mysql_num_rows($query); 
//Create pagination links 
$navLinks = ''; 

//Prev page 
if($page > 1) 
{  
$prevPage = $page - 1;  
$navLinks .= "<a href='productssearch.php?page=$prevPage'>Prev</a> "; 
} 
else 
{  
$navLinks .= "Prev "; 
} 

//Individual pages 
for($p=1; $p<=$total_pages; $p++) 
{ 
$pageNo = ($p == $page) ? "<b>{$p}</b>" : $p; 
$navLinks .= "<a class='pagin' href='productssearch.php?page=$p'>$pageNo</a> "; 
} 

//next page 
if($page < $total_pages) 
{  
$nextPage = $page + 1;  
$navLinks .= "<a href='productssearch.php?page=$nextPage'>Next</a>"; 
} 
else 
{  
$navLinks .= "Next"; 
} 
?> 

(無関係スタンドからミドルリムーブ)

私は本当の初心者ですので、安全で安全なコードを作成する方法を習得していませんので、私はまだ暗号化されたユーザーと管理者のパスワードを知っています...スクリプトの仕組みを学びたい!

"風の強い"質問を読む時間をとってくれてありがとう!あなたを運んでいませんbecuase

答えて

1

これを読んでいるすべての人に:私はPhilが彼が初心者だとコメントしているので、私はそれを簡単に保っています。この回答では考慮されていない考慮事項があります。

Phil、答えはnavlinksコードの構築にあります。

ナビゲーションリンクの1つをクリックすると、ページネーションの制限が渡されますが、検索語は渡されません。

あなたはのラインに沿うように、あなたのnavlinksを変更する必要があります:

$navLinks .= "<a href='productssearch.php?page=$prevPage&searchterm=$term'>Prev</a> "; 

$navLinks .= "<a class='pagin' href='productssearch.php?page=$psearchterm=$term'>$pageNo</a> "; 

$navLinks .= "<a href='productssearch.php?page=$nextPage&searchterm=$term'>Next</a>"; 

など

+0

私は上記のコメントを読んだだけで...それを働いたが、あなたはそれを確認した!あなたは華麗で素早い応答をありがとう!そして、初心者に親切にしてくれてありがとう... q&Aフォーラムの多くの人はあまり理解していません。 [= – Phil

+0

うれしいことです。コメントありがとう! –

+0

申し訳ありませんが、注文ビットはまだ機能していません、それ以外はすべてですが、再注文するフィールドを選択すると、searchtermが削除され、すべての製品が表示されます。アイデアはありますか?ありがとう – Phil

2

それはです:次のページへ

$term = $_GET['searchterm']; 

空の文字列を検索すると、すべての結果が返されます。

ページネーションリンクには、POSTで使用された検索語句が含まれている必要があります。

+0

ので、何かのように$ navLinks。= "Prev "; 。 で十分ですか? – Phil

+0

ビンゴ。それはあなたが欲しいものです。 –

+0

申し訳ありませんが、私は間違っていた、注文のビットはまだ動作していない、それ以外のものは、それによって並べ替えるフィールドを選択すると、searchtermを取り除くことに戻りますので、すべての製品を表示します!アイデアはありますか?おかげで – Phil

関連する問題