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

Форум PHP

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

 

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

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

тема: ошибка при выводе
 
 автор: сотка   (15.01.2012 в 17:35)   письмо автору
 
 

пожалуйста покажите в чем проблема?
 require("filesize.php");
  // Устанавливаем соединение с базой данных
  require_once("config/config.php");
  // Подключаем SoftTime FrameWork
  require_once("config/class.config.php");
 

  

  try
  {
  
    // Если не передан параметр id_position - выводим список разделов
    if(empty($_GET['id_position']))
    {
      // Проверяем GET-параметры, предотвращая SQL-инъекцию
      $_GET['page']       = intval($_GET['page']);
      $_GET['id_catalog'] = intval($_GET['id_catalog']);
  
      if(empty($_GET['id_catalog']))
      {
        // Запрашиваем параметры текущего раздела
        $query = "SELECT * FROM $tbl_yava_catalog 
                  WHERE id_catalog = $_GET[id_catalog]";
        $cat = mysql_query($query);
        if(!$cat)
        {
          throw new ExceptionMySQL(mysql_error(), 
                                   $query,
                                  "Ошибка при извлечении 
                                   параметров текущего раздела");
        }
        $catalog = mysql_fetch_array($cat);
      }
  
     
  
      // Запрашиваем подразделы текущего раздела
      $query = "SELECT * FROM $tbl_yava_catalog
                WHERE hide = 'show' AND id_parent = $_GET[id_catalog]
                ORDER BY pos";
      $sub = mysql_query($query);
      if (!$sub)
      {
        throw new ExceptionMySQL(mysql_error(), 
                                 $query,
                                "Ошибка при обращении к 
                                 блоку подразделов");
      }
      if(mysql_num_rows($sub))
      {
        
         // Верхний шаблон
              $pagename = "скачать приложения";
      $keywords = "скачать приложения";
        require_once ("templates/top.php");
        
        
        while($subcatalog = mysql_fetch_array($sub))
        {
          echo "<div class=\"link\"><a href=\"".$_SERVER['PHP_SELF']."?id_catalog=".$subcatalog['id_catalog']."\" >".
                       htmlspecialchars($subcatalog['name'])."</a></div>";
                     
                       
        }
     
                     //Подключаем нижний шаблон
    require_once ("templates/bottom.php");
      }

       
    }

  

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


                 // Верхний шаблон
              $pagename = "скачать приложения";
      $keywords = "скачать приложения";
          
        require_once ("templates/top.php");                  
   // Получаем записи базы данных в виде массива
    $yava = $obj->get_page();
   // Если имеется хотя бы одна запись - выводим 
   if(!$yava) exit();
   
{

      for($i = 0; $i < count($yava); $i++)
      {

 
         
     
      
     echo "<div class=\"link\"><a href=yava.php?id_position={$yava[$i][id_position]}>{$yava[$i][name]}</a>&nbsp;";
       echo getfilesize($yava[$i][big]);
 echo " </div>";
      
}
  } 
     
      // Выводим ссылки на другие страницы
        echo'<div class="razdel">';
      echo $obj ;
echo'</div>';

echo "<div class=\"link\"><a href='mp3_cat.php'>музыка</a></div>";
       echo "<div class=\"link\"><a href='flash_cat.php'>Flash</a></div>";
       echo "<div class=\"link\"><a href='gallery.php'>картинки</a></div>";
      echo "<div class=\"link\"><a href='index.php'>на главную</a></div>";
   
      require_once("templates/bottom.php");
  

}
 // Если GET-параметр id_position передан - выводим информацию
    // о файле и ссылку скачать
    else
    {
      // Проверяем, является ли параметр id_position числом
      $_GET['id_position'] = intval($_GET['id_position']); 
      // Выводим выбраннй файл
      $query = "SELECT id_position,
                       name,
                       boby,
                       yava,
                       small,
                       big ,
                       hide ,
                       pos ,
                       id_catalog 
                FROM $tbl_yava_position
                WHERE hide = 'show' AND
                      id_position = $_GET[id_position]";
      $res = mysql_query($query);
      if(!$res)
      {
        throw new ExceptionMySQL(mysql_error(), 
                                 $query,
                                "Ошибка при извлечении 
                                 текущей позиции");
      }
      $yava = mysql_fetch_array($res);
  
      
 // Верхний шаблон
              $pagename =  $yava['name'];
      $keywords =  $yava['name'];
        require_once ("templates/top.php");
echo'<div class="link">';
  echo" $yava[name]&nbsp; ";
echo'</div>';
echo'<div class="link">';
  echo "  <img src={$yava[yava]}>  ";
echo'</div>';
echo'<div class="link">';
      echo "$yava[boby]&nbsp;&nbsp; ";
echo'</div>';

         echo'<div class="link">';
     echo "<a href='$yava[big]'>скачать</a>&nbsp;&nbsp;";
echo'</div>';
echo"<div class=\"link\"><a href=# onClick='history.back()'>назад</a></div>";

 echo'<div class="razdel">скачать бесплатно</div>';


       echo "<div class=\"link\"><a href='mp3_cat.php'>музыка</a></div>";
       echo "<div class=\"link\"><a href='flash_cat.php'>Flash</a></div>";
       echo "<div class=\"link\"><a href='gallery.php'>картинки</a></div>";
      echo "<div class=\"link\"><a href='index.php'>на главную</a></div>";

                     //Подключаем нижний шаблон
    require_once ("templates/bottom.php");
            
    }
}
  
  catch(ExceptionMySQL $exc)
  {
    require_once("exception_mysql_debug.php");
  }
  catch(ExceptionMySQL $exc)
  {
    require_once("exception_mysql_debug.php"); 
  }
  catch(ExceptionMember $exc)
  {
    require_once("exception_member_debug.php"); 
  }


проблема вот в чем...выводит каталоги(2штуки) в каждом из них по 1 файлу но выводит в любом каталоге по два(((

  Ответить  
 
 автор: cheops   (16.01.2012 в 01:36)   письмо автору
 
   для: сотка   (15.01.2012 в 17:35)
 

В этом блоке вторым параметром нужно задать WHERE-условие, которое бы позволяло выбрать файлы каталога
 $obj = new pager_mysql($tbl_yava_position, 
                             "", 
                             "", 
                             $pnumber, 
                             $page_link);

PS Надо было сразу делать так, чтобы SQL-запрос был виден полностью, если сподобимся третье издание писать, будем использовать другой класс (который сейчас в промышленной версии используется для многотабличных запросов).

  Ответить  
 
 автор: Slo_Nik   (16.01.2012 в 03:06)   письмо автору
 
   для: cheops   (16.01.2012 в 01:36)
 

я использовал класс из второго издания, в запросе сделал два вложенных запроса, всё работает...
как Вы посоветуете, надо ли унаследовать от pager новый класс или можно оставить в таком виде?

<?php
$query 
"`city`, `firmname`, `adress`, `email`, `telephone`,
(SELECT `id_firm` FROM "
.$table_firm." WHERE `id_firm` > ".intval($sub_id).$sect.$subsect." LIMIT 1) AS `next`,
(SELECT `id_firm` FROM "
.$table_firm." WHERE `id_firm` < ".intval($sub_id).$sect.$subsect." ORDER BY `id_firm` DESC LIMIT 1) AS `prev`";
$where "WHERE `id_firm` = ".intval($sub_id)."";
 
$obj = new pager_mysql($query,$table_firm,$where,"",1,1,"");

  Ответить  
 
 автор: cheops   (16.01.2012 в 13:36)   письмо автору
 
   для: Slo_Nik   (16.01.2012 в 03:06)
 

Можно, конечно, но класс уже вместо того, чтобы помогать, уже явно мешает... вы под него подстраиваетесь, вместо того, чтобы ООП-схема подстраивалась под вас. У нас как то вот так сейчас выглядит постраничная навигация
<?php
  
...
  
// Объявляем объект постраничной навигации
  
$query "SELECT 
              SQL_CALC_FOUND_ROWS
              id_account,
              name,
              pnumber,
              pagelink,
              countsymbols
            FROM
              
$tbl_accounts
            ORDER BY
              name"
;
  
$obj = new pager(
               
$query,
               
$pnumber,
               
$page_link);
  ...
?>
т.е. запрос виден сразу и его легко модифицировать. pager_mysql(), конечно, такой наглядностью и гибкостью похвастаться не может - он проектировался под одну таблицу.

Да, лучше унаследовать новую версию класса.

  Ответить  
 
 автор: Slo_Nik   (16.01.2012 в 14:36)   письмо автору
 
   для: cheops   (16.01.2012 в 13:36)
 

В своём запросе я обращаюсь к одной таблице...
Получается, что для каждого вложенного запроса в классе надо создать свой метод?

  Ответить  
 
 автор: cheops   (16.01.2012 в 15:14)   письмо автору
 
   для: Slo_Nik   (16.01.2012 в 14:36)
 

Нет. Если честно, даже затрудняюсь проследить логику, как вы пришли к такому заключению?

  Ответить  
 
 автор: Slo_Nik   (16.01.2012 в 16:01)   письмо автору
 
   для: cheops   (16.01.2012 в 15:14)
 

Я тоже затрудняюсь...)))
Пока очень слабо ориентируюсь в ООП, поэтому и попросил подсказать.

  Ответить  
 
 автор: сотка   (16.01.2012 в 16:19)   письмо автору
 
   для: cheops   (16.01.2012 в 01:36)
 

Спасибо,понял в чем ошибка! Еще можно вопрос когда мы отдаем данные в браузер например $yava[boby] ,то каким образом можно защитить данные?

  Ответить  
 
 автор: cheops   (16.01.2012 в 20:50)   письмо автору
 
   для: сотка   (16.01.2012 в 16:19)
 

А от чего хотите защититься? От XSS-инъекции? Тогда содержимое $yava[boby] лучше пропустить через htmlspecialchars().

PS Под новые вопросы, лучше заводить новые темы.

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

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