|
|
|
| пожалуйста покажите в чем проблема?
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> ";
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] ";
echo'</div>';
echo'<div class="link">';
echo " <img src={$yava[yava]}> ";
echo'</div>';
echo'<div class="link">';
echo "$yava[boby] ";
echo'</div>';
echo'<div class="link">';
echo "<a href='$yava[big]'>скачать</a> ";
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 файлу но выводит в любом каталоге по два((( | |
|
|
|
|
|
|
|
для: сотка
(15.01.2012 в 17:35)
| | В этом блоке вторым параметром нужно задать WHERE-условие, которое бы позволяло выбрать файлы каталога
$obj = new pager_mysql($tbl_yava_position,
"",
"",
$pnumber,
$page_link);
|
PS Надо было сразу делать так, чтобы SQL-запрос был виден полностью, если сподобимся третье издание писать, будем использовать другой класс (который сейчас в промышленной версии используется для многотабличных запросов). | |
|
|
|
|
|
|
|
для: 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,"");
|
| |
|
|
|
|
|
|
|
для: 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(), конечно, такой наглядностью и гибкостью похвастаться не может - он проектировался под одну таблицу.
Да, лучше унаследовать новую версию класса. | |
|
|
|
|
|
|
|
для: cheops
(16.01.2012 в 13:36)
| | В своём запросе я обращаюсь к одной таблице...
Получается, что для каждого вложенного запроса в классе надо создать свой метод? | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.01.2012 в 14:36)
| | Нет. Если честно, даже затрудняюсь проследить логику, как вы пришли к такому заключению? | |
|
|
|
|
|
|
|
для: cheops
(16.01.2012 в 15:14)
| | Я тоже затрудняюсь...)))
Пока очень слабо ориентируюсь в ООП, поэтому и попросил подсказать. | |
|
|
|
|
|
|
|
для: cheops
(16.01.2012 в 01:36)
| | Спасибо,понял в чем ошибка! Еще можно вопрос когда мы отдаем данные в браузер например $yava[boby] ,то каким образом можно защитить данные? | |
|
|
|
|
|
|
|
для: сотка
(16.01.2012 в 16:19)
| | А от чего хотите защититься? От XSS-инъекции? Тогда содержимое $yava[boby] лучше пропустить через htmlspecialchars().
PS Под новые вопросы, лучше заводить новые темы. | |
|
|
|