Jump to content
  • 0

Выборка из базы. Вывод постранично


YaGub
 Share

Question

Есть форма. Из нее беру данные и делаю выборку из таблицы БД и вывожу постранично. Все работает правильно, но когда выборка у нас не всех данных ( select * from 'tabliza') а с условиями (select * from 'tabliza' where pole1='$pole1') то выводит нормально только первую страницу, а на следующих этот запрос теряется и выглядит вот так: select * from 'tabliza' where pole1=''

Как решить эту проблему?

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0
<?
include "config.php";
$metro = $_POST['metro'];
$komnata = $_POST['komnata'];
$zena1 = $_POST['zena1'];
$zena2 = $_POST['zena2'];

function yandex_link_bar($page, $count, $pages_count, $show_link)
{
if ($pages_count == 1) return false;
$sperator = '|';
$style = 'style="color:#014D8B; font: bold 14px Verdana; margin:20px; padding:20px;"';
$begin = $page - intval($show_link / 2);
unset($show_dots);
if ($pages_count <= $show_link + 1) $show_dots = 'no';
if (($begin > 2) && ($pages_count - $show_link > 2)) {
echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page=1> |< </a>';
}
for ($j = 0; $j <= $show_link; $j++)
{
$i = $begin + $j;
if ($i < 1) continue;
if (!isset($show_dots) && $begin > 1) {
echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i-1).'><b>...</b></a>';
$show_dots = "no";
}
if ($i > $pages_count) break;
if ($i == $page) {
echo '<a '.$style.' ><b>'.$i.'</b></a>';
} else {
echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$i.'>'.$i.'</a>';
}
if (($i != $pages_count) && ($j != $show_link)) echo $sperator;
if (($j == $show_link) && ($i < $pages_count)) {
echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i+1).'><b>...</b></a>';
}
}
if ($begin + $show_link + 1 < $pages_count) {
echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$pages_count.'> >| </a>';
}
return true;
}


MYSQL_CONNECT($host,$user,$pass) OR DIE("Не могу создать соединение ");
@mysql_select_db($basa) or die("Не могу выбрать базу данных ");
if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
$page = 1;
} else {
$page = (int) $_GET['page'];
}
$query1 = "select * from main";
if ($metro!=="") { $query1 = "select * from main where metro='$metro'"; }
if ($komnata !=="") { $query1 = "select * from main where komnata='$komnata'"; }
if ($zena1 !=="") { $query1 = "select * from main where zena >= '$zena1'"; }
if ($zena2 !=="") { $query1 = "select * from main where zena <= '$zena2'"; }
if ($metro!=="" and $komnata!=="") {$query1 = "select * from main where metro='$metro' and komnata='$komnata'"; }
if ($metro!=="" and $zena1!=="") {$query1 = "select * from main where metro='$metro' and zena >= '$zena1'"; }
if ($metro!=="" and $zena2!=="") {$query1 = "select * from main where metro='$metro' and zena <= '$zena2'"; }
if ($komnata!=="" and $zena1!=="") {$query1 = "select * from main where komnata='$komnata' and zena >= '$zena1'"; }
if ($komnata!=="" and $zena2!=="") {$query1 = "select * from main where komnata='$komnata' and zena <= '$zena2'"; }
if ($zena1!=="" and $zena2!=="") {$query1 = "select * from main where zena>='$zena1' and zena <= '$zena2'"; }
if ($metro!=="" and $komnata!=="" and $zena1!=="") {$query1 = "select * from main where metro='$metro' and komnata='$komnata' and zena>='$zena1'"; }
if ($metro!=="" and $komnata!=="" and $zena2!=="") {$query1 = "select * from main where metro='$metro' and komnata='$komnata' and zena<='$zena2'"; }
if ($metro!=="" and $zena1!=="" and $zena2!=="") {$query1 = "select * from main where metro='$metro' and zena>='$zena1' and zena<='$zena2'"; }
if ($komnata!=="" and $zena1!=="" and $zena2!=="") {$query1 = "select * from main where komnata='$komnata' and zena>='$zena1' and zena<='$zena2'"; }
if ($metro!=="" and $komnata!=="" and $zena1!=="" and $zena2!=="") {$query1 = "select * from main where metro='$metro' and komnata='$komnata' and zena>='$zena1' and zena<='$zena2'"; }

$count = mysql_numrows(mysql_query($query1)) or die('error! Записей не найдено!');
$pages_count = ceil($count / $perpage);
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage;
$query2 = $query1." limit ".$start_pos.", ".$perpage;
$result = mysql_query($query2) or die('error!');
$myrow = mysql_fetch_array($result);

echo '<table width=700px align=center border=1 cellspacing=1 cellpadding=1>
<tr><td width=10%>ID</td><td width=10%>Комната</td><td width=10%>Район</td><td width=10%>Описание</td><td width=10%>Метро</td><td width=10%>Фото</td><td width=10%>Цена</td><td width=10%>Ссылка</td><td></td></tr>';
do {
echo "<tr><td width=10%>$myrow[0]</td><td width=10%>$myrow[1]</td><td width=10%>$myrow[2]</td><td width=10%>$myrow[3]</td><td width=10%>$myrow[4]</td><td width=10%><a href=$myrow[6] target=_blank><img src=$myrow[5]></a></td><td width=10%>$myrow[7]</td><td width=10%><a href=$myrow[8]>Положение на карте</a></td><td><a href='bron.html'>Забронировать</a></td></tr>n";
} while ($myrow = mysql_fetch_array($result));
echo "</table>";
yandex_link_bar($page, $count, $pages_count, 5);

?>

Link to comment
Share on other sites

  • 0

а, ну все логично. давай по-порядку

1)

$metro = $_POST['metro'];
$komnata = $_POST['komnata'];
$zena1 = $_POST['zena1'];
$zena2 = $_POST['zena2']

эти данные ты получаешь разово. соответственно при переходе со страницы на страницу они не сохраняются. совет запихать их результат в сессионную переменную и проверять их наличие

2)

$query1 = "select * from main where metro='$metro'";

а ты не думал что $merto в кавычках будет обрабатываться как текст и соответственно будет иметь значение не переменной? варианта замены два:

$query1 = "select * from main where metro='{$metro}'";

$query1 = "select * from main where metro='" . $metro;

вот. и еще - будь добр поясни мне любопытному - почему у тебя ф-ция называется yandex_link_bar?

Link to comment
Share on other sites

  • 0

Я использую функцию для перехода между страницами. В этой функции я не использую поле $pole1. Поэтому оно и становится пустым? А код я скопировал, для того чтобы вы подсказали мне куда вставить и какой код, чтобы $pole1 не обнулялось.

Link to comment
Share on other sites

  • 0
А код я скопировал, для того чтобы вы подсказали мне куда вставить и какой код, чтобы $pole1 не обнулялось.

А вот этого я тебе подсказывать не стану. Ошибки я тебе указал - дальше думай сам, не писать же за тебя всю функцию. :(

Link to comment
Share on other sites

  • 0
а, ну все логично. давай по-порядку

1)

$metro = $_POST['metro'];
$komnata = $_POST['komnata'];
$zena1 = $_POST['zena1'];
$zena2 = $_POST['zena2']

эти данные ты получаешь разово. соответственно при переходе со страницы на страницу они не сохраняются. совет запихать их результат в сессионную переменную и проверять их наличие

2)

$query1 = "select * from main where metro='$metro'";

а ты не думал что $merto в кавычках будет обрабатываться как текст и соответственно будет иметь значение не переменной? варианта замены два:

$query1 = "select * from main where metro='{$metro}'";

$query1 = "select * from main where metro='" . $metro;

вот. и еще - будь добр поясни мне любопытному - почему у тебя ф-ция называется yandex_link_bar?

Функцию нашел в какой-то статье) Название не менял. А название такое потому что дизайн такой же как и на яндексе

Link to comment
Share on other sites

  • 0
Тогда извини - копипастерам точно помогать не буду

А вы пишете всегда все с самого 0? Зачем что-то создавать с самого нуля, если можно переделать уже готовое под свои нужды?

Link to comment
Share on other sites

  • 0
Тогда извини - копипастерам точно помогать не буду

А вы пишете всегда все с самого 0? Зачем что-то создавать с самого нуля, если можно переделать уже готовое под свои нужды?

потому что чужое почти всегда означает кривое. я могу сесть и написать то что ты мне показал за 20 минут не напрягаясь. За неделю с нуля сайт поднимаю с учетом верстки. Так что отвечаю: копипастеров не любят - не можешь сам помощи не жди

Link to comment
Share on other sites

  • 0

Ну ведь не сразу рождаемся умными!

session_start();
session_register('metro');
session_register('komnata');
session_register('zena1');
session_register('zena2');

$_SESSION['metro'] = $_POST['metro'];
$_SESSION['komnata'] = $_POST['komnata'];
$_SESSION['zena1'] = $_POST['zena1'];
$_SESSION['zena2'] = $_POST['zena2'];
$metro = $_SESSION['metro'];
$komnata = $_SESSION['komnata'];
$zena1 = $_SESSION['zena1'];
$zena2 = $_SESSION['zena2'];

И в функции тоже дописал session_start();

Все равно выводит только первую страницу...

Link to comment
Share on other sites

  • 0

а где проверки? ты же смотри - все равно по-любому заносишь в сессию из поста. и не проверяешь есть ли там данные. отсюда вывод - от твоего предыдущего способа это отличается только наличием сессии как транспорта поста

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy