[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: порядок вывода файлов
anr
Приветствую всех . Нужна помощь . Есть код :

PHP
<?
// Подсчитать количество файлов
$sPath     './db/news/'.$newsee.'/'
$dDir      opendir($sPath);   
$aFileList = array();
while (
$sFileName=readdir($dDir)) 
{if (
$sFileName!='.' && $sFileName!='..') { $aFileList[]=$sFileName
} } 
closedir ($dDir); $iNumFiles=count($aFileList); 
$news_s $iNumFiles
// Настройка вывода
$max_news 10;
$news_str $news_s $max_news;
//Начало анализа и подгрузки
$desired_extension 'php';
$dirname "db/news/$newsee/";
$files = array();
$dir opendir($dirname); 
while(
false != ($file readdir($dir))) { if(($file != ".") and ($file != "..")) 
{
$fileChunks explode("."$file);
 if(
$fileChunks[1] == $desired_extension)
{
 
$files[] = $dirname.$file;
} } }
 
closedir($dir); 
$c count($files);
//Подсчёт вывода новостей
$list_d '1';
if (
$page) {$page_d $page 1;}
if (
$page) {$list_d $max_news $page_d 1;}
natsort($files);
print_r($files);
for(
$i $c $list_d$i > -1$i--) {
$info pathinfo($files[$i]);
// Подгрузка новостей
if ($news_c $max_news) {
$news_c $news_c 1;
natsort($info);
$info2 =  $info['filename'];

include 
"db/news/".$newsee."/".$info2.".php";
if (
$name_news == ""){}else {include "templates/10_news.tpl";}
}
if (
$name_news == ""){}else {$news_c_all $news_c_all 1;}
}
// Создание кнопок страниц
if ($page) {}
else{
$page 1;}
$page_next=$page+1;
$page_back=$page-1;
$int_news_str ceil($news_str);
echo 
'<br><div class="navigation" align="center" style="margin-bottom:10px; margin-top:10px;">';
if (
$page == 1) {
echo 
"<span>Назад</span>";
}
else {
echo 
"<a href='index.php?newsee=$newsee&page=$page_back'>Назад</a>";
}
$v 0;
while (
$v<=$news_str) {
$v++;
$page_echo $page_echo ;
if (
$page_echo == $page) {
echo 
"<span>".$page_echo."</span>";
}else {
echo 
"<a href='index.php?newsee=$newsee&page=$page_echo'>$page_echo</a>";
}
}
if (
$page == $int_news_str){
echo 
"<span>Дальше</span> ";
}
else {
echo 
"<a href='index.php?newsee=$newsee&page=$page_next'>Дальше</a>";

echo 
"</div>";


Проблема в том , что при загрузки новостей из папки , вывод становится не правельным , когда файлов больше 10 .
Тобишь порядок вывода идёт такой 1.php,2.php,3.php - 9.php ... Если есть файл 10.php ( + ) то порядок становится таким : 1.php , 10.php , 2.php и так далее ... Помогите пожалуйста наладить нормальный порядок вывода .

Благодарствую .



Спустя 4 минуты, 48 секунд (14.09.2009 - 23:50) twin написал(а):

Спустя 4 минуты, 44 секунды (14.09.2009 - 23:54) anr написал(а):
Да, использую я natsort ... в коде в принципе 2 переменных , которые отвечают за вывод списка файлов , я их "отсортировал"

natsort($files);
natsort($info);

И даже вот вывел print_r($files);

Array ( [0] => db/news/home/1.php [2] => db/news/home/2.php [3] => db/news/home/3.php [4] => db/news/home/4.php [5] => db/news/home/5.php [6] => db/news/home/6.php [7] => db/news/home/7.php [8] => db/news/home/8.php [9] => db/news/home/9.php [1] => db/news/home/10.php )



Спустя 5 часов, 18 минут, 29 секунд (15.09.2009 - 05:13) twin написал(а):
Действительно... Винни-Пух... Вот что значит нечитабельный код.
Так а в чем загвоздка то? Если всё по порядку.

Спустя 1 час, 37 минут, 35 секунд (15.09.2009 - 06:50) anr написал(а):
PHP
for($i $c $list_d$i > -1$i--) {
$info pathinfo($files[$i]);
// Подгрузка новостей
if ($news_c $max_news) {
$news_c $news_c 1;
natsort($info);
$info2 =  $info['filename'];

include 
"db/news/".$newsee."/".$info2.".php";
if (
$name_news == ""){}else {include "templates/10_news.tpl";}
}
if (
$name_news == ""){}else {$news_c_all $news_c_all 1;}
}


Вот в этой части кода идёт подгрузка новостей , но они выводяться всё равно не по порядку , 1.php,10.php,2.php

Посмотрите пожалуйста Код в первом посте и подскажите , почему natsort не сортирует ... с этой проблемой уже 3 дня сижу sad.gif(


Спустя 1 час, 3 минуты, 57 секунд (15.09.2009 - 07:54) twin написал(а):
Так. Давай начнем с другого. Чтобы обращаться с такими просьбами:
Цитата
Посмотрите пожалуйста Код в первом посте и подскажите

и надеяться на успешный исход дела, нужно уважать собеседника, то есть сделать код читабeльным. Иначе нет никакого желания разгребать эту кучу каракулей.
Вот хотя бы так для начала:
Свернутый текст
PHP
<?
$newsee 1;
// Подсчитать количество файлов
$sPath     './db/news/'.$newsee.'/';   
$aFileList = array();

  
$dDir opendir($sPath);
  while (
false != ($sFileName readdir($dDir))) 
  {
    if (
$sFileName!='.' && $sFileName!='..'
    
$aFileList[] = $sFileName
  }
  
closedir ($dDir); 
  
$iNumFiles count($aFileList);  
  
$news_s $iNumFiles
  
// Настройка вывода
  
$max_news 10;
  
$news_str $news_s $max_news;
  
//Начало анализа и подгрузки
  
$desired_extension 'php';
  
$dirname "db/news/$newsee/";
  
$files = array();
  
  
$dir opendir($dirname); 
  while (
false != ($file readdir($dir))) 
  { 
    if(
$file != "." and $file != ".."
    
$fileChunks explode("."$file);
    
      if(
$fileChunks[1] == $desired_extension)
      
$files[] = $dirname $file;
  } 
  
closedir($dir);
  
$c count($files);
  
//Подсчёт вывода новостей
  
$list_d '1';
  if (
$page)
  
$page_d $page 1;
  
  if (
$page
  
$list_d $max_news $page_d 1;
  
natsort($files);
print_r($files);

  for(
$i $c $list_d$i > -1$i--) 
  {
  
$info pathinfo($files[$i]);
// Подгрузка новостей
    
if ($news_c $max_news
    {
    
$news_c $news_c 1;
    
natsort($info);
    
$info2 =  $info['filename'];

    include 
"db/news/".$newsee."/".$info2.".php";
    
    if (
$name_news !== "")
    include 
"templates/10_news.tpl";
    
    }
    
    if (
$name_news !== "")
    
$news_c_all $news_c_all 1;
    
  }
// Создание кнопок страниц
  
if (!$page)
  
$page 1;
  
  
$page_next=$page+1;
  
$page_back=$page-1;
  
$int_news_str ceil($news_str);
?>  
<br><div class="navigation" align="center" style="margin-bottom:10px; margin-top:10px;">
<?php  
  
if ($page == 1
  echo 
"<span>Назад</span>";
  else 
  echo 
"<a href='index.php?newsee=$newsee&page=$page_back'>Назад</a>";

  
$v 0;
  while (
$v <= $news_str
  {
  
$v++;
  
$page_echo $page_echo ;
  
    if (
$page_echo == $page)
    echo 
"<span>".$page_echo."</span>";
    else 
    echo 
"<a href='index.php?newsee=$newsee&page=$page_echo'>$page_echo</a>";
  }
  
  if (
$page == $int_news_str)
  echo 
"<span>Дальше</span> ";
  else
  echo 
"<a href='index.php?newsee=$newsee&page=$page_next'>Дальше</a>";
?> 
</div>

Тогда худо-бедно можно попытаться понять логику приложения. Хотя чесно говоря, я этого места так и не понял:
PHP
for($i $c $list_d$i > -1$i--) {
$info pathinfo($files[$i]);
// Подгрузка новостей
if ($news_c $max_news) {
$news_c $news_c 1;
natsort($info);

Зачем сортировать массив, полученный функцией pathinfo() да еще и в цикле...
Ну а почему здесь не сделать print_r($info) и не посмотреть, что там за беда получается?

Спустя 1 час, 15 минут, 24 секунды (15.09.2009 - 09:10) anr написал(а):
Вот , выводит меж новостей такое :

Array ( [filename] => 9 [basename] => 9.php [dirname] => db/news/home [extension] => php )

Array ( [filename] => 8 [basename] => 8.php [dirname] => db/news/home [extension] => php )


Array ( [filename] => 7 [basename] => 7.php [dirname] => db/news/home [extension] => php )


Array ( [filename] => 6 [basename] => 6.php [dirname] => db/news/home [extension] => php )


Array ( [filename] => 5 [basename] => 5.php [dirname] => db/news/home [extension] => php )


Array ( [filename] => 4 [basename] => 4.php [dirname] => db/news/home [extension] => php )


Array ( [filename] => 3 [basename] => 3.php [dirname] => db/news/home [extension] => php )


Array ( [filename] => 2 [basename] => 2.php [dirname] => db/news/home [extension] => php )

Array ( [filename] => 10 [basename] => 10.php [dirname] => db/news/home [extension] => php )


Array ( [filename] => 1 [basename] => 1.php [dirname] => db/news/home [extension] => php )

Прошу прощения за не читаемый код ... послушался вашему примеру и сделал его удобней wink.gif

Спустя 13 минут, 8 секунд (15.09.2009 - 09:23) twin написал(а):
На счет читабельности, вот, ты сподвиг к написанию biggrin.gif

А то, что print_r($info) выведет, я знал и без твоего листинга. Мне непонятно, зачем ты пытаешься сортировать этот массив:

Array ( [filename] => 9 [basename] => 9.php [dirname] => db/news/home [extension] => php )

Спустя 19 минут, 35 секунд (15.09.2009 - 09:43) anr написал(а):
Я просто не могу понять , какую переменную надо сортировать , чтобы 10 была больше 9 , а не больше 1 smile.gif

Вот я вас и прошу подсказать .

rolleyes.gif

Спустя 12 минут, 4 секунды (15.09.2009 - 09:55) twin написал(а):
Ну, приплыли... Если ты сам не понимаешь, что написал, то как же я то смогу понять?
Ну вот смотри, у тебя здесь получился массив с путями до файлов, которые нужно подключить, правильно?
PHP
natsort($files);

А дальше как я понял ты пытаешься разобрать его в цикле. Только для чего эти танцы с бубнами?
PHP
for($i = $c - $list_d; $i > -1; $i--) 
  
{
  $info = pathinfo($files[$i]);
// Подгрузка новостей
    if ($news_c < $max_news) 
    
{
    $news_c = $news_c + 1;
    natsort($info);
    $info2 =  $info['filename'];

Почему нельзя просто разобрать его форечем, ведь он же готов к употреблению... Как то так например:
PHP
foreach($files as $info) 
  include $info
;

Спустя 8 минут, 52 секунды (15.09.2009 - 10:03) anr написал(а):
PHP
foreach($files as $info
  include 
$info;


Так выводится только последняя новость , в данном с случае 10.php

А я пытаюсь вывести 1.php,2.php,3.php - 10.php в нормальном порядке цыфр smile.gif

Спустя 3 минуты, 17 секунд (15.09.2009 - 10:07) twin написал(а):
Цитата
Так выводится только последняя новость , в данном с случае 10.php
Это еще почему. Попробуй сначала)))

Спустя 13 минут, 24 секунды (15.09.2009 - 10:20) anr написал(а):
Работает , выводит от 1 - 10 , но в прошлом варианте у меня новости выводились с последней до первой ( 10 - 1 ) и был постраничный вывод , щас новости выводятся все разом ...

Как можно в первом варианте код поправить , чтобы сортировка просто нормальная была ?

Спустя 16 минут, 48 секунд (15.09.2009 - 10:37) twin написал(а):
С первой до последней, это надо просто перевернуть массив.
А что касаемо постраничного режима, то надо вообще пересмотреть логику формирования. Вот так наверно, только с $page осторожнее
PHP
//Количество новостей на странице
$num 10;

$files array_reverse($files);
$news array_slice($files$page 1$num);

  foreach(
$news as $info
  include 
$info;

Спустя 15 минут, 36 секунд (15.09.2009 - 10:53) anr написал(а):
Прощу прощения за надоедливость , но всё же это не то получается ...

Вот именно в этом коде , какую Array надо сортировать , чтобы 10 была больше 9 ... больше нечего не требуется smile.gif

PHP
<?
// Подсчитать количество файлов
$sPath     './db/news/'.$newsee.'/'

$dDir      opendir($sPath); 
  
$aFileList = array();

while (
$sFileName=readdir($dDir)) 
{
if (
$sFileName!='.' && $sFileName!='..') { 
$aFileList[]=$sFileName
} } 
closedir ($dDir); 
$iNumFiles=count($aFileList); 
$news_s $iNumFiles

// Настройка вывода

$max_news 10;
$news_str $news_s $max_news;

//Начало анализа и подгрузки

$desired_extension 'php';

$dirname "db/news/$newsee/";

$files = array();

$dir opendir($dirname); 
while(
false != ($file readdir($dir))) 

if((
$file != ".") and ($file != "..")) 
{
$fileChunks explode("."$file);

 if(
$fileChunks[1] == $desired_extension)
{
 
 
$files[] = $dirname.$file;



}

 
closedir($dir); 
 
$c count($files);
//Подсчёт вывода новостей
$list_d '1';

if (
$page) {
$page_d $page 1;
}
if (
$page) {
$list_d $max_news $page_d 1;
}

for(
$i $c $list_d$i > -1$i--) {

$info pathinfo($files[$i]);

// Подгрузка новостей

if ($news_c $max_news) {

$news_c $news_c 1;



$info2 =  $info['filename'];
include 
"db/news/".$newsee."/".$info2.".php";

if (
$name_news == "")
{
}else 
{
include 
"templates/10_news.tpl";
}
}
if (
$name_news == ""){
}
else {
$news_c_all $news_c_all 1;
}
}

// Создание кнопок страниц

if ($page) {}

else{
$page 1;
}
$page_next=$page+1;

$page_back=$page-1;

$int_news_str ceil($news_str);

echo 
'<br><div class="navigation" align="center" style="margin-bottom:10px; margin-top:10px;">';

if (
$page == 1) {

echo 
"<span>Назад</span>";

}

else {

echo 
"<a href='index.php?newsee=$newsee&page=$page_back'>Назад</a>";

}

$v 1;

while (
$v<=$int_news_str) {

$v++;

$page_echo $page_echo ;

if (
$page_echo == $page) {

echo 
"<span>".$page_echo."</span>";

}
else {

echo 
"<a href='index.php?newsee=$newsee&page=$page_echo'>$page_echo</a>";

}
}
if (
$page == $int_news_str){

echo 
"<span>Дальше</span> ";

}
else {

echo 
"<a href='index.php?newsee=$newsee&page=$page_next'>Дальше</a>";


echo 
"</div>";

Спустя 4 минуты, 32 секунды (15.09.2009 - 10:57) twin написал(а):
Ну если не доходит, что именно этот код нужно выкинуть на помойку и написать нормальный, то мучайся дальше. Только из г ничего не слепишь выйдет. Я же русским по белому написал - нужно пересмотреть логику.

Спустя 2 минуты, 8 секунд (15.09.2009 - 10:59) anr написал(а):
Блин плохо ... я только всё преспособил под это говно ,а теперь менять ... чтож поделать , буду опять пытаться , что-то сделать .

Благодарю за помощь . Всего вам доброго .

Спустя 8 минут, 53 секунды (15.09.2009 - 11:08) twin написал(а):
Ничего менять не нужно, все будет работать так же. Просто этот кусок нужно пересмотреть. Ну вот что за упрямый народ, чего ты жалеешь код, это же всего навсего буквы. Что, трудно написать так:
Свернутый текст
PHP
<?php
//Количество новостей на странице
$num = 10;
// Подсчитать количество файлов
$sPath     = './db/news/'.$newsee.'/';   
$aFileList 
= array();

  $dDir = opendir($sPath);
  while (false != ($sFileName = readdir($dDir))) 
  
{
    if ($sFileName!='.' && $sFileName!='..') 
    $aFileList
[] = $sFileName; 
  
}
  closedir ($dDir); 
  $iNumFiles 
= count($aFileList);  
  $news_s 
= $iNumFiles; 
  
// Настройка вывода
  $max_news = 10;
  $news_str = $news_s / $max_news;
  
//Начало анализа и подгрузки
  $desired_extension = 'php';
  $dirname = "db/news/$newsee/";
  $files = array();
  
  $dir 
= opendir($dirname); 
  while 
(false != ($file = readdir($dir))) 
  
{ 
    if
($file != "." and $file != "..") 
    $fileChunks 
= explode(".", $file);
    
      if
($fileChunks[1] == $desired_extension)
      $files[] = $dirname . $file;
  } 
  closedir
($dir);
  $c = count($files);
  
//Подсчёт вывода новостей
  $list_d = '1';
  if ($page)
  $page_d = $page - 1;
  
  if 
($page) 
  $list_d 
= $max_news * $page_d + 1;
  
  natsort
($files);

  $files = array_reverse($files);
  $news = array_slice($files, $page - 1, $num);

  foreach($news as $info) 
  include $info
;
    
    if 
($name_news !== "")
    $news_c_all = $news_c_all + 1;

// Создание кнопок страниц
  if (!$page)
  $page = 1;
  
  $page_next
=$page+1;
  $page_back=$page-1;
  $int_news_str = ceil($news_str);
?>  
<br><div class="navigation" align="center" style="margin-bottom:10px; margin-top:10px;">
<?php  
  if 
($page == 1) 
  echo 
"<span>Назад</span>";
  else 
  echo 
"<a href='index.php?newsee=$newsee&page=$page_back'>Назад</a>";

  $v = 0;
  while ($v <= $news_str) 
  
{
  $v++;
  $page_echo = $page_echo + 1 ;
  
    if 
($page_echo == $page)
    echo "<span>".$page_echo."</span>";
    else 
    echo 
"<a href='index.php?newsee=$newsee&page=$page_echo'>$page_echo</a>";
  }
  
  if 
($page == $int_news_str)
  echo "<span>Дальше</span> ";
  else
  echo 
"<a href='index.php?newsee=$newsee&page=$page_next'>Дальше</a>";
?> 
</div>
и посмотреть как сформировать $page ?

Спустя 1 день, 3 часа, 27 минут, 28 секунд (16.09.2009 - 14:36) anr написал(а):
twin , благодарю вас за сдержанность , очень приятно общаться с такими людьми .

Вопросик таков

Вот участок этого кода :
PHP
foreach($news as $info
  include 
$info;


Он как я понял подгружает нужную новость , за вывод новостей отвечает файл стиля :

PHP
include $style."/10_news.tpl";


Я его добовляю в код

PHP
foreach($news as $info
  include 
$info;
 include 
$style."/10_news.tpl";


И выводится только первая новость ( 1.php ) , почему так ?

Благодарствую


Спустя 14 минут, 34 секунды (16.09.2009 - 14:50) twin написал(а):
foreach($news as $info) это тот же цикл, что и for(), только специально для разбора массива. Звучит примерно так:
пройти по массиву $news, присваивая его элементы переменной $info.

То есть это идентично записи
PHP
<?php
    
for($i 0$i count($news); ++$i)
    
$info $news[$i];

Тебя наверно сбило отсутствие фигурных скобок, так они не нужны, если исполняется одна инструкция. А если надо несколько, то поставь их да и всё:

PHP
foreach($news as $info)

  include 
$info;
 include 
$style."/10_news.tpl";
}

И учи матчасть, без неё никуда не уедешь.

Спустя 1 день, 1 час, 45 минут, 13 секунд (17.09.2009 - 16:35) anr написал(а):
Приветствую всех - это снова я smile.gif

Переписал я этот кусок кода , всё работает отлично , но вот загвоздка небольшая :

Выво как бы идёт по страницам и с самой последней на первую . к примеру от новости 30 к 1 ... Выглядит примерно так :

30
29
28
27
...

Но что-то я напортачил и выводит теперь :
27
28
29
30
...

Если перейти на вторую страницу :

23
24
25
26

Подскажите мою ошибку .
( Повторюсь , нужно чтобы выводило :
30
29
28
27
...
)

PHP
<?php
//--------------------------------------------------------------------------
// мини настройка
//--------------------------------------------------------------------------
$max_news = 10;
$page_num_str = 0;
if (!$page) {$page=1;}
//--------------------------------------------------------------------------
$desired_extension = 'php';$dirname = "db/news/$newsee/";$files = array();
$dir = opendir($dirname); while (false != ($file = readdir($dir))) 
{ if($file != "." and $file != "..") $fileChunks = explode(".", $file);
if(
$fileChunks[1] == $desired_extension)$files[] = $dirname . $file;} closedir($dir);
  $c = count($files);
  natsort($files);
//--------------------------------------------------------------------------
// Подсчёт нужных новостей и установка вывода их
//--------------------------------------------------------------------------
$news_see = array_slice($files, $c - $c, $c);
 foreach($news_see as $info2) 
  
{
  include $info2;
  if ($name_news !== "") {
  $news_ok_num = $news_ok_num + 1;
    $page_num = $page_num+1;
  if ($page_num == $max_news) {
  $page_num = 1;
  $page_num_str = $page_num_str+1;
  }
  }
  }
if ($page) {$news_ok = $max_news * $page;}
//--------------------------------------------------------------------------
// Настройка вывода и вывод новостей .
//--------------------------------------------------------------------------

$news = array_slice($files,$news_ok_num - $news_ok, $max_news);
  
  foreach
($news as $info) 
  
{
  include $info;
  if ($name_news !== "") {
  include $style."/10_news.tpl";
    }
  }
  
//--------------------------------------------------------------------------
// Создание страниц и их нумеровка
//--------------------------------------------------------------------------

 ?>
<br><div class="navigation" align="center" style="margin-bottom:10px; margin-top:10px;">
<?php 
// Создание кнопок страниц
  if ($page) {
  if ($max_news <= $news_ok) {
  $page_next=$page+1;
  $page_back=$page-1;
  }
  }
 
  if 
($page == 1) {
  echo "<span>Назад</span>";
  }
  else {
  echo "<a href='index.php?newsee=$newsee&page=$page_back'>Назад</a>";
  }
$v = 0;
$page_echo = 0;
while ($v < $page_num_str) 
  
{
  $v = $v+1;
  $page_echo = $page_echo + 1 ;
  
    if 
($page_echo == $page)
    {
    echo "<span>".$page_echo."</span>";
    }
    else 
    
{
    echo "<a href='index.php?newsee=$newsee&page=$page_echo'>$page_echo</a>";
    }
  }
  
  if 
($page == $page_num_str)
  {
  echo "<span>Дальше</span> ";
  }
  else
  
{
  echo "<a href='index.php?newsee=$newsee&page=$page_next'>Дальше</a>";
  }

Спустя 21 минута, 4 секунды (17.09.2009 - 16:56) twin написал(а):
Я расскажу чуть позже, почему так. Позже, потому что ты обрадуешься и оставишь все как есть. Работать то оно будет, но если что то делать, то надо стараться делать хорошо. По этому сначала объясни мне смысл вот этого куска, я его никак не уловлю:

PHP
$news_see = array_slice($files, $c - $c, $c);
 foreach($news_see as $info2) 
  
{
  include $info2;
  if ($name_news !== "") {
  $news_ok_num = $news_ok_num + 1;
    $page_num = $page_num+1;
  if ($page_num == $max_news) {
  $page_num = 1;
  $page_num_str = $page_num_str+1;
  }
  }
  }

Спустя 5 часов, 21 минута, 5 секунд (17.09.2009 - 22:18) anr написал(а):
К примеру новости лежат в папке HOME - она считаетя категорией для новостей . К примеру мы хотим посмотреть все новости этой категории , заходим в неё и читаем новости , к примеру чудесным образом один файл в БД оказался пустой ( админ случайно залил ) и тут нам выручает этот код , он досчитывает количество НЕ постых новостей + создаёт количество страниц для них ...

Спустя 25 минут, 58 секунд (17.09.2009 - 22:43) twin написал(а):
Ну давай по порядку тогда. Вот тут ты смотришь, что в директории и считаешь файлы (и не пиши код в строчку, не читается ведь):
PHP
$desired_extension = 'php';
$dirname = "db/news/$newsee/";
$files = array();
$dir = opendir($dirname); 
    while 
(false != ($file = readdir($dir))) 
    
{ 
        if
($file != "." and $file != "..") 
        $fileChunks 
= explode(".", $file);

        if($fileChunks[1] == $desired_extension)
        $files[] = $dirname . $file;
    }
 closedir($dir);

  $c = count($files);

А дальше ты зачем то еще раз перебираешь массив, причем подключая все файлы в нем по очереди, что бы убедиться, что нет пустых.
Вот если бы ты внимательно читал тбы учебники, то нашел бы кучу интересных функций, упрощающих жизнь. Одна из них - filesize(). Она возвращает размер файла. То есть пустые ты можешь исключить уже в первом цикле, не гоняя второй и тем более не подключая ничего по пять раз:

PHP
while (false !== ($file = readdir($dir))) 
    
{ 
        if
($file != "." and $file != "..") 
        $fileChunks 
= explode(".", $file);

        if($fileChunks[1] == $desired_extension && filesize($dirname . $file) !== 0)
        $files[] = $dirname . $file;
    }

Обрати внимание на !== Это не опечатка.
Так вот, теперь надобность в том куске кода, который я не мог понять, вообще пропадает. Я даже не буду комментировать ошибки в нем. Просто убери его с глаз долой.

А что касается вывода наоборот, ты где то потерял array_reverse(). Поищи в моём листинге.

Спустя 24 минуты, 58 секунд (17.09.2009 - 23:08) anr написал(а):
Добовляю строчку

PHP
$files array_reverse($files);


после

PHP
$c count($files);
  
natsort($files);


И новости выводятся таким образом теперь

10
9
8
7
...
1

Переходим на вторую страницу
21
20
19
18
...
11

На третий
30
29
28
27
...
22

Не правельно они выводятся ...

Если убрать


PHP
$files array_reverse($files);


То боле мене правельно , но всё равно как то криво ....

Тобишь при добавлении этой строчки , просто попа становится передом , а перед - попой

А нужно чтобы просто выводилось
30
29
28
...
1

Спустя 12 минут, 40 секунд (17.09.2009 - 23:21) twin написал(а):
А думать теперь я буду? Я уже 2 раза написал, что нужно с $page решать вопрос, а не копипастить просто так.
Вот эта функция выдает кусок массива с позиции, находящейся во втором аргументе, длинной обозначенной в третьем.
PHP
$news = array_slice($files,$news_ok_num - $news_ok, $max_news);

У меня разве так было?

Спустя 15 часов, 41 минута, 40 секунд (18.09.2009 - 15:03) anr написал(а):
Уважаемый twin , не могли бы вы помочь ещё с одной маленькой проблемкой . Как из $info изьять только название файла а не путь к нему ?

Если прописать echo $info , выводится такое : db/news/home/30.php
А как изьять просто название файла без расширения - "30" ?

Спустя 48 минут, 49 секунд (18.09.2009 - 15:52) twin написал(а):
PHP
echo basename($info);

А с остальным разобрался? Очень интересно взглянуть...

Спустя 3 минуты, 25 секунд (18.09.2009 - 15:55) twin написал(а):
Ой, без расширения... Тогда так:
PHP
$file basename($info);
$num_page substr($file0strrpos($file'.'));
echo 
$num_page;

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.