2011-09-10 17 views
1

私は結果ページを持っていて、返された結果の数がページの一番上に表示されます。これはどうすればいいですか?検索結果ページの上部に検索結果の量が表示されますが、どうすれば入手できますか?

私のコードは

<?php 
if(strlen(trim($_POST['search'])) > 0) { 

$search = "%" . $_POST["search"] . "%"; 
$searchterm = "%" . $_POST["searchterm"] . "%"; 

mysql_connect ("3", "", ""); 
mysql_select_db (""); 
if (!empty($_POST["search_string"])) 
{ 

} 

$query = "SELECT name,location,msg FROM contact WHERE name LIKE '%$search%' AND 
location  LIKE '%$searchterm%'"; 

$result = mysql_query ($query); 
if ($result) { 
while ($row = mysql_fetch_array ($result)) { ?> 
<center> 
<table height="20" width="968" cellpadding="0" cellspacing="0"> 
<tr> 
<td> 

<table height="20" width="223" cellpadding="0" cellspacing="0"> 
<tr> 
<td> 
<font face="helvetica" size="2" color="#045FB4"><?php echo $row[0]; ?></font> 
<hr size="1" color="#e6e6e6" width="100%"></hr> 
</td> 
</tr> 
</table> 

</td> 
<td> 

<table height="20" width="745" cellpadding="0" cellspacing="0"> 
<tr> 
<td> 
<font face="helvetica" size="2" color="black"><?php echo $row[1]; ?> 
<?php echo $row[2];  ?></font> 
<hr size="1" color="#e6e6e6" width="100%"></hr> 
<td align="right"> 
<font face="helvetica" size="2" color="red">See More...</font> 
<hr size="1" color="#e6e6e6" width="100%"></hr> 
</td> 
</tr> 
</table> 
</td> 
</tr> 
</table> 
<?php 
} 
} 
} 
?> 
</center> 

THANKSです!

ジェームズ

+0

もう一度、私はなぜこの質問があまりにも下落したのか分からない。それは初心者の質問であり、悪い質問ではありません。 – cypher

+1

@cypher:ひどいHTMLとPHPの慣習が貧弱なためかもしれません。それでも、それらは答えに留意すべきです。質問はまだ有効です。私はdownvotesをキャンセルするのを助けるためにupvoted。 – siride

+1

ドライブバイダウンボード。どうやら彼らはコメントを残すにはあまりにも臆病です。 – Herbert

答えて

0

私は’メートルは、他の罰金の答えと競争しようとしていません。 I ’ m回答が投稿されましたので、’はコメントには大きすぎます。

HTMLを改善するために何ができるかをコメントで尋ねたので、あなたのコードをちょっとだけリファクタリングして、になる可能性があります。私はまた、完了のために他の人が言及したmysql_num_rows($result)を含んでいました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Sample</title> 
<style type="text/css"> 
table { 
    font-family: helvetica; 
    font-size: small; 
    width: 968px; 
} 
td { 
    border-bottom: 1px solid #e6e6e6; 
} 
.name { 
    color:#045FB4; 
} 
.msg { 
    color:black; 
} 
.more { 
    color:red; 
} 
</style> 
</head> 

<body> 
<?php 

if(strlen(trim($_POST['search'])) > 0): 

$search = mysql_real_escape_string($_POST["search"]); 
$searchterm = mysql_real_escape_string($_POST["searchterm"]); 

mysql_connect ("localhost", "root", ""); 
mysql_select_db ("sample"); 
if (!empty($_POST["search_string"])) 
{ 
    $search_string = mysql_real_escape_string($_POST["search_string"]); 
    // more code here 
} 



$query = "SELECT name,location,msg FROM contact 
      WHERE name LIKE '%$search%' 
      AND location LIKE '%$searchterm%'"; 

$result = mysql_query ($query); 
if ($result): 

    $num_rows = mysql_num_rows($result); 
?> 
<p>Found <?php echo $num_rows; ?> results.</p> 

<table> 
<?php 
    while ($row = mysql_fetch_array ($result)): 
?> 
    <tr> 
     <td class="name"><?php echo $row['name']; ?></td> 
     <td class="msg"><?php echo $row['location'], ' ', $row['msg']; ?></td> 
     <td class="more">See More...</td> 
    </tr> 

<?php 
    endwhile; 
endif; 
endif; 
?> 

</table> 
</body> 
</html> 

通常、私はCSSを別のファイルに入れますが、これは一例に過ぎません。注目すべきいくつかの点 :

  • ’の唯一のHTML
  • でテーブル
  • あり’の無いスタイル情報それはmysql_real_escape_stringが使用しています。理想的には、の準備文を使用することもできますが、私は’を個人的な練習として残しておきます。 :)

これもかなり改善することができますが、それは始まりです。

0

mysql_num_rows($query)を使用してみてください。私はPHPの専門家ではなく、メモリから、そのトリックを行う必要があります。あなたがそれを望むところでこれをエコーするだけです。

1

これを1ページに保存する場合は、mysql_num_rows()がそのトリックを行い、あなたはいいですね。一方、ページネーションを使用すると、SELECTクエリはLIMIT句を持ち、同じWHERE句を持つ同じテーブルでCOUNT(*)を使用して2番目のクエリを構築できます。

$total_query = "SELECT COUNT(*) FROM contact WHERE name LIKE '%$search%' AND 
       location LIKE '%$searchterm%'" 
+0

「COUNT(*)」に言及するため+1。 – Herbert

0

また、あなたはSQL_CALC_FOUND_ROWSとFOUND_ROWS()を使用することができます。

$query = "SELECT SQL_CALC_FOUND_ROWS name,location,msg FROM contact WHERE name LIKE '%$search%' AND location LIKE '%$searchterm%'"; 

$result = mysql_query($query); 
if ($result) 
{ 
    $rs_count = mysql_query("SELECT FOUND_ROWS();"); 
    $counted = (int)mysql_result($rs_count, 0); 
} 
関連する問題