Как я могу получить его так, чтобы в верхней части моей страницы результатов поиска отображалось количество найденных результатов? - PullRequest
1 голос
/ 11 сентября 2011

У меня есть страница с результатами, и я бы хотел, чтобы в верхней части страницы было немного, где указано, сколько результатов было возвращено. Как мне это сделать?

Мой код

<?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>

СПАСИБО!

Джеймс

Ответы [ 5 ]

1 голос
/ 11 сентября 2011

Если вы собираетесь сохранить его на одной странице, тогда mysql_num_rows () добьются цели, и вы готовы идти дальше.Если вы используете разбиение на страницы с другой стороны, тогда ваш запрос SELECT будет содержать предложение LIMIT, и второй запрос может быть создан с использованием COUNT (*) для тех же таблиц с тем же предложением WHERE.

$total_query = "SELECT COUNT(*) FROM contact WHERE name LIKE '%$search%' AND 
                location LIKE '%$searchterm%'"
0 голосов
/ 11 сентября 2011

Я не пытаюсь конкурировать с другими хорошими ответами. Я публикую это как ответ, потому что он слишком велик для комментария.

Поскольку вы спросили в комментарии, что можно сделать, чтобы улучшить ваш 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 голосов
/ 11 сентября 2011

Также вы можете использовать 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);
}
0 голосов
/ 11 сентября 2011
$num_rows = mysql_num_rows($result);

Ознакомьтесь с документацией: http://php.net/manual/en/function.mysql-num-rows.php

0 голосов
/ 11 сентября 2011

Попробуйте использовать mysql_num_rows($query).Я не эксперт по PHP, но по памяти это должно сработать.Просто повторяйте это везде, где хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...