2012-01-09 20 views
0

別のテーブルで検索する方法がわかりません。私はどうすればいいのですか? もう一つは、私はページネーション開始作業を取得傾けることである列名のKOMに保存されているPHP MySql検索エンジンとページネーションの作成

テーブル名がコメントであると私はすべてのポストを検索したい... ので、私私は他のなステートメントの中にページネーションを開始しました私は1つ以上の結果を得るときにのみそれを必要とします。 私は表示するページへのリンクを取得し、表示、検索投稿を制限しますが、私は相続人は、次のページ コード

<?php 
    $search = $_POST["search"]; 
    $field = $_POST["field"]; 

    if($_POST["submit"] && $search) 
    { 
     echo "<div id='result'>"; 
     echo "<h2>Resultat</h2>"; 
    $search = strtoupper($search); 
    $search = strip_tags($search); 
    $search = trim($search); 

    $query = "SELECT * FROM blogTable WHERE title LIKE '%$search%' 
       UNION 
       SELECT * FROM blogTable WHERE post LIKE '%$search%'"; 
    $result = mysql_query($query, $conn) or die(mysql_error()); 

    $matches = mysql_num_rows($result); 

    if($matches == 0) 
     //code if serch didnt result any results 

    else if($matches == 1) 
      //code if the matches only 1 

    else 
    { 

     $per_page = 4; 
     $pages = ceil($matches/$per_page); 
     $page = (isset($_GET['page'])) ? (int)$_GET['page']: 1; 
     $start = ($page - 1) * $per_page; 
     $query2 = "SELECT * FROM blogTable WHERE title LIKE '%$search%' 
          UNION 
          SELECT * FROM blogTable WHERE post LIKE '%$search%' LIMIT $start, $per_page"; 
     $result2 = mysql_query($query2, $conn) or die(mysql_error()); 


     echo "<font size='-1'>Sökningen $search gav $matches resultat</font><br/>"; 
     while ($r2 = mysql_fetch_array($result2)) 
     { 
      $id = $r["id"]; 
      $title = $r["title"]; 
      $post = $r["post"]; 
      $time = $r["time"]; 

      echo "<br/><strong><a href='comment.php?id=$id'>$title</a></strong><br/>"; 
      echo "<font size='-1'>".substr($post, 0, 60)."</font><br/>"; 
      echo "<font size='-1'>".substr($post, 60, 70)."</font><br/>"; 
      echo "<font size='-3'>$time</font><br/>"; 
     } 

      //theese are showin but cannot click of any of them 
       if($pages >= 1 && $page <= $pages) 
      { 
       for($nr = 1; $nr <= $pages; $nr++) 
       { 
        if($nr == $page) 
         echo "<a href='?page=".$nr."' style='font-size:20px;'>$nr</a>"; 
        else 
         echo "<a href='?page=".$nr."' style='font-size:15px;'>$nr</a> "; 
       } 
      } 
     } 
    } 

    ?> 
+0

あなたが苦労している問題は何ですか?スクリプトが遅すぎますか? –

+0

ページネーションもまた別のテーブルを検索したいと思っていますが、今は1つのテーブルしか検索しません –

+0

"最適化する"という意味は別です。あなたの質問を編集しました –

答えて

0

に取得カントのリンクオフ1をクリックしたときにできることは、あなたが使用している特定の理由がありますUNION

ない場合は、変更することができます。

$query = "SELECT * FROM blogTable WHERE title LIKE '%$search%' 
      UNION 
      SELECT * FROM blogTable WHERE post LIKE '%$search%'"; 

をする:

$query = "SELECT * FROM blogTable WHERE (title LIKE '%$search%') OR (post LIKE '%$search%')"; 

とにかく、私はstartパラメータが与えられなかった場合は、単に最初のxの結果を得る、二度同じクエリを実行することはありません(たとえばクエリ文字列のページ番号)を指定し、開始パラメータが与えられたときに開始点を計算します。

そして、あなたは合計をしたい場合は、COUNT(*)クエリを使用するか、またはあなたのクエリを変更します目を引く

$query = "SELECT SQL_CALC_FOUND_ROWS * FROM blogTable WHERE (title LIKE '%$search%') OR (post LIKE '%$search%')"; 
+0

いいえ、実際には効果がありませんでした。今私は1つのテーブルを検索します。列名 'comments'を使って別のテーブルを検索するにはどうすればいいですか? –

0

ことの一つは、あなたが表示されたコードがSQL injectionに対して脆弱であるということです。

は(それはそれは無用だ、その場合には、セキュリティのための場合)strip_tags()を取り除くと、あなたが検索クエリに使用し、すべての値にmysql_real_escape_string()を行う、またはint列を使用しているとき値が実際の数であるかどうかを確認してください。

もう1つのことは、<font>タグが時代遅れであることです。スタイリングテキストのクールなCSSの方法は、外部CSSスタイルシートを持って、それに

span.small { font-size: 12px; color: green } 

のようなものを定義して、そのようにHTMLでそれを使用している:

<span class="small">Text goes here</span> 

これはおそらく属する、と述べていますCodeReview.SEに....

+0

は 'strip_tags()'を 'mysql_real_escape_string()'に変更しました。 今のところ私はCSSについて心配していません:P –

0

私の英語のため申し訳ありません... まず、私はいつも多分これpagination phpクラスはあなたを助けることができ、次の、検索およびフィルタの方法をPOST GETメソッドを使用していないことをお勧めします。

よろしくお願いいたします。