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


Автор: supervladislav 4.8.2008, 05:01
Подскажите у меня 2 раза на странице выводятся количество страниц вверху и внизу ,страница вывода отделена условием ,значение переменной для которого передаётся через строку .Дело в том ,что когда нажимаю два раза на ссылку ,то страница пропадает,тоесть информация через строку проходит два раза и условие невыполняется .Подскажите как отловить повторение или исключить вобще?

Код

if($kv=="квартиры" and $sst>=0){
if (!$sst) $sst=0;
$sst2=30;
<? if ($num >= 31)
     {
      for($i=0;$i<=floor($num/30);$i++)
      {
       if ($i==($sst/30)) printf("<A HREF=$PHP_SELF?sst=%s&$n=$kv><font color=red>%s</font></A>&nbsp;", $i*30, $i+1); else
       printf("<A HREF=$PHP_SELF?sst=%s&$n=$kv> %s </A>&nbsp;", $i*30, $i+1);
      }
     }}
     ?>

Автор: jsa 4.8.2008, 06:25
Цитата(supervladislav @  4.8.2008,  10:01 Найти цитируемый пост)
if($kv=="квартиры" and $sst>=0){

 smile а че and уже поддерживается!? да и $kv=="квартиры  smile 

Автор: bars80080 4.8.2008, 08:56
and поддерживается, и $kv=="квартиры" нормально, но всё равно не понял что не так и что нужно

кстати, что это такое: 

Код
$sst2=30;
<? if
 пхп до или после <?

Автор: jsa 4.8.2008, 09:45
Цитата(bars80080 @  4.8.2008,  13:56 Найти цитируемый пост)
and поддерживается

век живи век учись  smile 

Автор: supervladislav 4.8.2008, 16:32
при повторном щелче на ссылку в строку браузера добовляется ещё одна переменна $n
как её отловить

Автор: bars80080 4.8.2008, 18:01
ну, слушай, реально не проясняешь ситуации. как добавляется? записывается сама что ли в сам файл? или может быть добавляется вторая строчка как здесь на форуме в случае зависания страницы?

Автор: supervladislav 4.8.2008, 20:16
вот этот скрипт стоит у меня 2 раза на странице )))
,но помимо него есть ещё условие $kv оно передаётся на каждую следущую страницу 
через строку при нажатии на ссылку.
Код

if($kv=="квартиры" and $sst>=0){

вот таких условий у меня 4 ,по четыре страницы вывода на каждой странице.
так вот при нажатии на  ссылку повторно ,вот эта переменная $n она вводится в скрипт ещё раз , соотведственно условие 
Код

if($kv=="квартиры" and $sst>=0){

невыполняется ,меня интересует как это отловить?



Код

<?
if(empty($kv))
{$kv=$n;}

/
if($kv=="квартиры" and $sst>=0){
if (!$sst) $sst=0;
$sst2=30;
$tt=mysql_query("SELECT * FROM $T_SPISOK WHERE user='$login' AND (ttype3='2 комнатная квартира' OR ttype3='1 комнатная квартира' OR ttype3='3 комнатная квартира' OR ttype3='4-х и более комнатная квартира' OR ttype3='Офис' OR ttype3='Склад' OR ttype3='Торговое помещение' OR ttype='Производственное помещение');");
$num=mysql_num_rows($tt);
//echo $num;

$tt=mysql_query("SELECT * FROM $T_SPISOK WHERE user='$login' AND (ttype3='2 комнатная квартира' OR ttype3='1 комнатная квартира' OR ttype3='3 комнатная квартира' OR ttype3='4-х и более комнатная квартира' OR ttype3='Офис' OR ttype3='Склад' OR ttype3='Торговое помещение' OR ttype='Производственное помещение')  LIMIT $sst , $sst2;");

 if ($num >= 31)
     {
      for($i=0;$i<=floor($num/30);$i++)
      {
       if ($i==($sst/30)) printf("<A HREF=$PHP_SELF?sst=%s&$n=$kv><font color=red>%s</font></A>&nbsp;", $i*30, $i+1); else
       printf("<A HREF=$PHP_SELF?sst=%s&n=$kv> %s </A>&nbsp;", $i*30, $i+1);
      }
     }
     ?>

Автор: HackMan 4.8.2008, 21:09
Ваще не понятно, что надо, но есть предположение, что $kv берётся из $_GET, и берётся не в той кодировке, в какой оно сверяется. Не?

Автор: HackMan 4.8.2008, 21:25
Не по теме, но
  • Цитата(supervladislav @  4.8.2008,  20:16 Найти цитируемый пост)
    $tt=mysql_query("SELECT * FROM $T_SPISOK WHERE user='$login' AND (ttype3='2 комнатная квартира' OR ttype3='1 комнатная квартира' OR ttype3='3 комнатная квартира' OR ttype3='4-х и более комнатная квартира' OR ttype3='Офис' OR ttype3='Склад' OR ttype3='Торговое помещение' OR ttype='Производственное помещение');");

    SQL-Inj налицо
  • Код

    OR ttype3='1 комнатная квартира' OR ttype3='3 комнатная квартира' OR ttype3='4-х и более комнатная квартира'

    можно заменить на 
    Код

    ttype3 IN ('1 комнатная квартира', '3 комнатная квартира', '4-х и более комнатная квартира')

  • ttype3='1 комнатная квартира' не очень правильное решение, в базе лучше хранить не строки, а числа, и сверять с числами, а при выводе в браузер заменять цифры на соответствующие строки
  • Забудь про глобальные переменные, если на 100% не уверен, что обрабатываешь каждую переменную
  • Цитата

    printf("<A HREF=$PHP_SELF?sst=%s&$n=$kv><font color=red>%s</font></A>", $i*30, $i+1);

    Значения параметров надо брать в двойные кавычки, а названия тегов писать маленькими буквами
    printf("<a href=\"$PHP_SELF?sst=%s&$n=$kv\"><font color=\"red\">%s</font></a>", $i*30, $i+1);
  • Цитата

    for($i=0;$i<=floor($num/30);$i++)

    floor($num/30) лучше вынести в отдельную переменную, до этого цикла

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