Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание архива статей на базе вашего сайта
 
 автор: Никос   (12.01.2010 в 14:34)   письмо автору
 
 

При передачи GET параметра id_position в ссылке
<a href=\"archive.php?id_position=$id_position[putdate]\" 
                 class=\"rightpanel_lnk\"><b>$id_position[putdate]</b></a>


В этом запросе

 $query = "SELECT *
     FROM $tbl_position WHERE hide = 'show'
                     ORDER BY putdate DESC";
                  
                           
    $arch = mysql_query($query);
    if (!$arch) exit("Ошибка при обращении к блоку новостей");
    if(mysql_num_rows($arch))
    {
     
      while($id_position = mysql_fetch_array($arch))
      {
               
            echo "<div>
              <a href=\"archive.php?id_position=$id_position[putdate]\" 
                 class=\"rightpanel_lnk\"><b>$id_position[putdate]</b></a>
                 
            </div>
            <br>";
      }
    }


файл принимающий его

  
 // Проверяем параметр page, предотвращая SQL-инъекцию
      $_GET['page'] = intval($_GET['page']);
    // Число сообщений на странице
    $pnumber = 10;
    // Число ссылок в постраничной навигации
    $page_link = 3;
   // Объявляем объект постраничной навигации
   
    $obj = new pager_mysql("$tbl_position",
                           "",
                           "",
                           $pnumber,
                           $page_link,
                           "&id_position=$_GET[id_position]");


Выдаёт все статьи архива, а нужно только те которые соответствуют значению передаваемого GET параметра
 $id_position[putdate]

Как правильно прописать условия в
  $obj = new pager_mysql("$tbl_position",
                           " ",
                           "",
                           $pnumber,
                           $page_link,
                           "&id_position=$_GET[id_position]");
[/code]

  Ответить  
 
 автор: kosta_in_net   (12.01.2010 в 14:38)   письмо автору
 
   для: Никос   (12.01.2010 в 14:34)
 

это чаво:
$obj = new pager_mysql("$tbl_position",
" ",
"",
$pnumber,
$page_link,
"&id_position=$_GET[id_position]");

Чё-то я не вижу в коде никаких классов...

  Ответить  
 
 автор: Никос   (12.01.2010 в 14:50)   письмо автору
 
   для: kosta_in_net   (12.01.2010 в 14:38)
 

Класс -
   class pager_mysql extends pager
  {
    // Имя таблицы
    protected $tablename;
    // WHERE-условие
    protected $where;
   
    // Критерий сортировки ORDER
    protected $order;
    // Количество позиций на странице
    private $pnumber;
    // Количество ссылок слева и справа
    // от текущей страницы
    private $page_link;
    // Параметры
    private $parameters;
    // Конструктор
    public function __construct($tablename, 
                                $where = "",
                                
                                $order = "",
                                $pnumber = 10, 
                                $page_link = 3, 
                                $parameters = "")
    {
      $this->tablename  = $tablename;
      $this->where      = $where;
      
      $this->order      = $order;
      $this->pnumber    = $pnumber;
      $this->page_link  = $page_link;
      $this->parameters = $parameters;
    }
    public function get_total()
    {
      // Формируем запрос на получение
      // общего количества записей в таблице
      $query = "SELECT COUNT(*) FROM {$this->tablename}
                {$this->where}                
                {$this->order}";
                
                
      $tot = mysql_query($query);
      if(!$tot) 
      {
        throw new ExceptionMySQL(mysql_error(), 
                                 $query,
                                 "Ошибка подсчёта количества записей");
      }
      return mysql_result($tot, 0);
    }
    public function get_pnumber()
    {
      // Количество позиций на старнице
      return $this->pnumber;
    }
    public function get_page_link()
    {
      // Количество ссылок слева и справа
      // от текущей страницы
      return $this->page_link;
    }
    public function get_parameters()
    {
      // Дополнительные параметры, которые
      // необходимо передать по ссылке
      return $this->parameters;
    }
    // Возвращает массив строк файла, по 
    // номеру страницы $index
    public function get_page()
    {
      // Текущая страница
      $page = intval($_GET['page']);
      if(empty($page)) $page = 1;
      // Количество записей в файле
      $total = $this->get_total();
      // Вычисляем число страниц в системе
      $number = (int)($total/$this->get_pnumber());
      if((float)($total/$this->get_pnumber()) - $number != 0) $number++;
      // Проверяем попадает ли запрашиваемый номер 
      // страницы в интервал от 1 до get_total()
      if($page <= 0 || $page > $number) return 0;
      // Извлекаем позиции текущей страницы
      $arr = array();
      // Номер, начиная с которого следует
      // выбирать строки файла
      $first = ($page - 1)*$this->get_pnumber();
      // Извлекаем позиции для текущей страницы
      $query = "SELECT * FROM {$this->tablename}
                {$this->where}            
                {$this->order}
                LIMIT $first, {$this->get_pnumber()}";
      $tbl = mysql_query($query);
      if(!$tbl)
      {
        throw new ExceptionMySQL(mysql_error(), 
                                 $query,
                                 "Ошибка извлечений позиций");
      }
      // Если имеется хотя бы один элемент,
      // заполняем массив $arr
      if(mysql_num_rows($tbl))
      {
        while($arr[] = mysql_fetch_array($tbl));
      }
      // Удаляем последний нулевой элемент 
      // массива $arr
      unset($arr[count($arr) - 1]);

      return $arr;
    }
  }

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования