Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Колличество записей на странице... Помогите!


Автор: Настоящий Ламер 17.1.2004, 21:08
Наверное кто-то поднимал уже подобные темы, но облазив 5-6 форумов так и не нашел решения своей проблемы.
Пишу гостевую книгу и естественно хочется ее сделать максимально удобной. Для чего и решил поставить <select>.
Так вот... когда выбираешь значение, то в адресной строке не появляется значение переменной отвечающей за колличество строк на странице, однако выбирая другое значение появляется не оно, а то... предыдущее что выбирал в самом начале. При всем при этом глюке правильно отображается нужное колличество записей, но на следующие страницы значение переменной колличества записей на страницу не передается.
Очень вас прошу уважаемые эксперты объясните для человека на танке как исправить такой глюк.
Заранее огромное спасибо!

Автор: MuToGeN 17.1.2004, 21:50
Как оно именно попадает в адресную строку? JS? Форма? Если форма через POST, то оно и не должно отображаться в адресной строке, но передаваться на сервер будет (значение можно найти в $_POST и $_REQUEST).

Желательно глянуть на кусок кода.

Автор: Настоящий Ламер 17.1.2004, 22:55
Попадает оно в адресную строку через get... (Надо отметить, что с одной проблемой я справился, а именно, с тем, чтобы все нормально появлялось в строке сразу после submit)
Но переменная колличества строк куда-то продевается... хотя в адресной строке все путем написано...
И теперь происходит такой глюк... При выборе номера страницы, например, "2" и колличества строк 10, показывается вторая страница с колличеством строк на страницу 5... (так как стоит устовие if ($quantity_per_page=="") $quantity_per_page=5;
Наверное такого условия не должно быть, но по другому не знаю как сделать.
Просто если не ставить такого условия выбирать из базы вообще ничего не получается.

Автор: [xoodo] 18.1.2004, 02:46
Если не работает $quantity_per_page, а работает $_GET["quantity_per_page"], то дело в поддержке глобальных переменных.

8(

Если не туда копаем, то повторю важный вопрос -- кто или что формирует адресную строку?

Автор: Настоящий Ламер 18.1.2004, 10:40
В <select>
Код

<?
<form action=$PHP_SELF?page=$i?count=$count method=get>
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">


<select name=count style="width: 6em;">
 <option value=5>5</option>
 <option value=10>10</option>
 <option value=20>20</option>
 <option value=50>50</option>
</select>
<input type=submit value=Go>
</form>


.......... Тут располагается табличка с выводимыми данными....



Внизу страницы (номера страницы)
Код

<?php

           $count_pages = ceil($all_lines / $count);
  if ($count_pages>1) {
     for ($i=1; $i<=$count_pages; $i++)
      {
  if($page==$i and $i!=1) { ?>
  <font face=arial size=-2 color=#AAAAAA style=color: #CC9999><b>
  <?php echo " | $i"; ?></font>
  <?php }
  elseif ($page==$i and $i==1) {?>
  <font face=arial size=-2 color=#AAAAAA style=color: #CC9999><b>1</font>
  <?php  } elseif($i==1 and $page!=$i) { ?>
  <font face=arial size=-2 color=#AAAAAA><b>
  <?php
  echo "<a href=\"$PHP_SELF?page=$i?count=$count\" style=color: #CC9999>$i</a>";
  ?> </font>
           <?php } elseif($i!=1 and $page!=$i) { ?>
  <font face=arial size=-2 color=#AAAAAA style=color: #CC9999>
           <?php echo " | <a href=\"$PHP_SELF?page=$i?count=$count\" style=color: #CC9999>$i</a>"; ?>
           </font>
           <?php }} ?>

Автор: Secandr 18.1.2004, 10:50
А может лучше не
Код
<?
<form action=$PHP_SELF?page=$i?count=$count method=get>
?>
а
Код
<?
echo "<form action=$PHP_SELF?page=$i?count=$count method=get>";
?>
? ? ? ? ?

Автор: Настоящий Ламер 18.1.2004, 12:49
Да... именно так и написал как посоветовал уважаемый Secandr... проблему это не решило.... вообщето именно так и было написано...
Но всеравно СПАСИБО!
Просто эту проблему уже не могу решить 2 недели... все копаюсь по всяким форумам, мануалам, книгам и нигде ничего похожего нет. Вот впервые решил написать в форум. Наверное эта досадная ошибка просто ни у кого не возникала или настолько простая, что все с ней справляются очень запросто.
Так как я совсем "Настоящий ламер", то если будете писать ответ на мой вопрос. Нельзя ли более подробно, чем другим :-) как для настоящего танкиста wink.gif


На самом деле вот весь текст... Этот скрипт выводит инфу из бд с нужным мне форматированием и со вставкой всяких смайликов и пр.
Код

<?php

Error_Reporting(E_ALL & ~E_NOTICE);
$pictures = array(
  "<img src=img/astro.gif>",
           "<img src=img/beer.gif>",
           "<img src=img/biggrin.gif>",

     ...

        "<font size=2>",
        "<font size=3>",
        "<font size=4>",
        "<font size=5>",
        "<font size=6>",
           );
$words = array(":astro:",
   ":beer:",
            ":D",

     ...

            ":sf5:",
            ":sf6:",
            );

echo "<form action=$PHP_SELF?page=$i?count=$count method=get>";

?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">


<select name=count style="width: 6em;">
 <option value=5>5</option>
 <option value=10>10</option>
 <option value=20>20</option>
 <option value=50>50</option>
</select>
<input type=submit value=Go>
</form>

<?php
echo $count;
if ($count == "") $count=5;

@mysql_connect('localhost', 'root')
  or die("Can't connect to Database. <br>MySQL answer: ".mysql_error());
@mysql_select_db('base001')
  or die("Can't connect to Database. <br>MySQL answer: ".mysql_error());
$query = "SELECT * FROM gbtable";
$result = mysql_query($query);
$all_lines = mysql_num_rows($result);
if (!isset($page) or empty($page) or $page<=0) $page=1;
else $page=(int)$page;
$page_for_query = $page-1;
$lpos = $page_for_query * $count;
$query = "SELECT * FROM gbtable ORDER BY numb DESC LIMIT $lpos,$count";
$result = @mysql_query($query) or die("$query <b>failed!</b><br>".mysql_error());
while ($data_array = mysql_fetch_array($result)) {
?>
<table border=0 width=600 cellspacing=0 cellpadding=0>
<tr>
 <td id=up>
  <font face=arial size=-3 color=#FFFFFF>
   <table border=0 width=100% cellspacing=1 cellpadding=0>
    <tr>
                    <td colspan=2 bgcolor=#FFAA00>
      <table border=0 width=100% cellspacing=0 cellpadding=0>
                            <tr>
                                <td background=leftb.jpg width=3 height=10 style="font-size: 16px; text-indent: 0px;">&nbsp;
                                   </td>
                                <td align=right width=100% style="font-size: 16px; text-indent: 0px;"><a href=#up><img src=up.gif border=0 style=vertical-align: middle></a><font face=arial style="font-size: 10px; text-indent: 0px; color: #FFFFFF; vertical-align: middle;">&nbsp;&nbsp;№&nbsp;<?php echo $data_array['numb'] ?></font>
                                   </td>
                                <td background=rightb.jpg width=3 height=10 style="font-size: 16px; text-indent: 0px;">&nbsp;
                                   </td>

                               </tr>

      </table>
     </td>
                   </tr>
                   <tr>
     <td width=80><img src="face.gif" hspace="4"><font face=arial size=-1 color=#AAAAAA style="font-size: 14px; text-indent: 0px; color: #AAAAAA; vertical-align: middle;"><b>Name</b></font><br><br></td>
     <td><font face=arial size=2 color=#000000><b> <?php echo $data_array['namefield']; ?></b></font><br><br></td>
                   </tr>
     <tr>
     <td width=80><img src=eml.gif vspace=-3 hspace="6"><font face=arial size=-1 color=#AAAAAA style="font-size: 14px; text-indent: 0px; color: #AAAAAA; vertical-align: middle;"><b>E-Mail</b></font></td>
     <td><font face=arial size=-3 color=#000000>
                        <a  href=mailto: <?php echo $data_array['emailfield']; ?> style = color: #CC9999>
      <?php echo $data_array['emailfield']; ?></a></font>
     </td>
                   </tr>
    <tr valign=middle>
                    <td width=100><img src=g_hm2.gif vspace=-3 hspace="7"><font face=arial size=-1 color=#AAAAAA style="font-size: 14px; text-indent: 0px; color: #AAAAAA; vertical-align: middle;"><b>URL</b></font></td>
     <td><font face=arial size=-3 color=#000000>
                        <a href="<?php echo $data_array['urlfield'];?>">http://<?php echo $data_array['urlfield'];?></a><br><br><br>
                           </font>
     </td>
                   </tr>
    <tr>
                    <td width=100 valign=top><img src="mess.gif" hspace="3"><font face=arial size=-1 color=#AAAAAA style="font-size: 14px; text-indent: 0px; color: #AAAAAA; vertical-align: middle;"><b>Message</b></font></td>
     <td>
                        <font size=2>
                           <?php $string = $data_array['textfield'];
      for ($nn=0; $nn < 87; $nn++)
       {
       $string = ereg_replace($words[$nn], $pictures[$nn], $string);
          }
                               echo nl2br($string);
                             ?>
      <br><br><br>
                       </td>
                   </tr>
    <tr valign=middle>
                    <td width=150 bgcolor="#F9F9F9"><font face=arial size=-2 color=#AAAAAA style="font-size: 10px; text-indent: 0px; color: #AAAAAA; vertical-align: middle;"><b>Message created</b></font></td>
     <td align=right bgcolor="#F9F9F9">
                        <font face=arial size=-2 color=#AAAAAA style="font-size: 10px; text-indent: 0px; color: #AAAAAA; vertical-align: middle;"><b>
       <?php echo $data_array['month'], '.&nbsp;',$data_array['day'], '.&nbsp;', $data_array['year']; ?>
       &nbsp;
       <?php echo $data_array['hour'], ':&nbsp;',$data_array['minute'], ':&nbsp;', $data_array['second']; ?></b>
                           </font>
     </td>
                   </tr>
   </table>
  </td>
 </tr>
</table>

   <?php }
   ?>

<table border=0 width=600 cellspacing=0 cellpadding=0>
<tr>
 <td>
  <hr>

  <?php

           $count_pages = ceil($all_lines / $count);
  if ($count_pages>1) {
     for ($i=1; $i<=$count_pages; $i++)
      {
  if($page==$i and $i!=1) { ?>
  <font face=arial size=-2 color=#AAAAAA style=color: #CC9999><b>
  <?php echo " | $i"; ?></font>
  <?php }
  elseif ($page==$i and $i==1) {?>
  <font face=arial size=-2 color=#AAAAAA style=color: #CC9999><b>1</font>
  <?php  } elseif($i==1 and $page!=$i) { ?>
  <font face=arial size=-2 color=#AAAAAA><b>
  <?php
  echo "<a href=\"$PHP_SELF?page=$i?count=$count\" style=color: #CC9999 method=get>$i</a>";
  ?> </font>
           <?php } elseif($i!=1 and $page!=$i) { ?>
  <font face=arial size=-2 color=#AAAAAA style=color: #CC9999>
           <?php echo " | <a href=\"$PHP_SELF?page=$i?count=$count\" style=color: #CC9999 method=get>$i</a>"; ?>
           </font>
           <?php }} ?>
       </td>
</tr>
</table>
<?php

} ?>


Автор: Настоящий Ламер 21.1.2004, 00:35
Решение подоспело весьма неодиданно. Если кому интересно чем закончилась эта проблемка. Оказалось, что по невнимательности вместо...
Код
<a href=\"$PHP_SELF?page=$i?count=$count\" style=color: #CC9999 method=get>$i</a>"; ?>


надо
Код
<a href=\"$PHP_SELF?page=$i&count=$count\" style=color: #CC9999 method=get>$i</a>"; ?>


А так совершенно нормальный ...wink.gif ну для новичка в PHP скрипт для вывода нужного колличества строк на странице.

Может кому пригодится wink.gif
Спасибо всем кто написал свои ответы!

Автор: buddy 22.1.2004, 14:50
я канечна извеняюсь, может не уловил суть, однако, что это у вас в адреcной строке по 2 занка "?"

Код
$PHP_SELF?page=$i?count=$count method=get>


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)