Как исключить пустые выводы файлов?

150
25 марта 2019, 18:20

Здравствуйте сделал постраничный вывод файлов и вот например задано по скажем 10 файлов на страницу а файлов например 13 выводятся пустые строки как избавиться подскажите пожалуйста

    <?php 
 $site="http://".$_SERVER['SERVER_NAME'];
$files = glob("../data/telegram/*.*");
//sort($files);
//$summa = 0;
$id = 0;
foreach($files as $file){
    $name = basename($file);
    $arr[$id]['name'] = basename($file);
    $arr[$id]['size'] = round(filesize($file)/1024,2);    
    $arr[$id]['count'] = count(file($file));    
    $summa += count(file($file)); 
    $id++;   
}

$count_file = count($files);
$pages = ceil($count_file/$tnumber);
$page = $_GET['page'];  
if(!$page OR $page=='')  
{  
        $nav_min = 0;  
        $nav_max = $tnumber - 1;  
}else{  
        $nav_min = ($page * $tnumber) - $tnumber;  
        $nav_max = ($tnumber * $page) - 1;  
}  
# Вывод  
 for($i = $nav_min; $i <= $nav_max; $i++)
{  
      $names = $arr[$i]['name'];
      $size =  $arr[$i]['size'];
      $count = $arr[$i]['count'];
        echo "<tr>
    <td class=\"par\" style=\"padding:3px 0px 1px 20px; \">$names</td>
    <td align=\"center\" width=\"100\" class=\"par\"><b>$size</b> кб</td>
    <td align=\"center\" width=\"80\" class=\"par\"><b>$count</b></td>      
    <td align=\"center\" width=\"50\" class=\"par\"><a href='$site/data/telegram/".$names."' target=\"_blank\" download=\"\" ><img border='0' width='16' src='skin/image/downloads.png' title='Скачать файл'></a></td>
    <td  align=\"center\" width=\"50\" class=\"par\"><a title='ссылка' href='#' onclick=\"prompt('Ссылка на Файл. Для копирования выделите и скопируйте или нажмите Ctrl+C.','$site/data/telegram/$names'); return false;\"><img border=0 src=skin/image/linck.png title='Ссылка на файл'></a></td>
    <td  align=\"center\" width=\"50\" class=\"par\"><a href='telegram_delete_file.php?remove=".$names."' onclick='return confirmDelete();' ><img border=0 src=skin/image/b_drop.png title='Удалить файл'></a></td>
      </tr>";
}
          echo "<tr>
    <td align=\"left\" colspan =\"2\"  style=\"padding:10px 0px 10px 20px; \">Файлов : <b style='font-size: 14px';>$count_file</b></td>
    <td align=\"center\" width=\"100\" ><b>$summa</b></td>
    <td colspan =\"3\" width=\"150\" ></td>     
  </tr>";
?>
<?php 
    # Навигация  
    for($fpr = '', $i =1; $i <= $pages; $i++)
    {
        echo $fpr=(($i == 1 || $i == $pages || abs($i-$page) < 2) ? ($i == $page ? "<b style='font-size: 14px'>[$i]</b> | " : ' <a href="?page='.$i.'">'.$i.'</a> | ') : (($fpr == ' ... ' || $fpr == '')? '' : ' ... '));
    }
    ?>
Answer 1

В данном случае если у файлов всегда есть имя, то можно обойтись простой проверкой на empty($value), т.е. выводить на страницу поля у которых есть имя.

 # Вывод  
for ($i = $nav_min; $i <= $nav_max; $i++) {  
    $names = $arr[$i]['name'];
    $size =  $arr[$i]['size'];
    $count = $arr[$i]['count'];
    if(!empty($names)){
       echo "<tr>
                 <td class=\"par\" style=\"padding:3px 0px 1px 20px; \">$names</td>
                 <td align=\"center\" width=\"100\" class=\"par\"><b>$size</b> кб</td>
                 <td align=\"center\" width=\"80\" class=\"par\"><b>$count</b></td>      
                 <td align=\"center\" width=\"50\" class=\"par\"><a href='$site/data/telegram/".$names."' target=\"_blank\" download=\"\" ><img border='0' width='16' src='skin/image/downloads.png' title='Скачать файл'></a></td>
                 <td  align=\"center\" width=\"50\" class=\"par\"><a title='ссылка' href='#' onclick=\"prompt('Ссылка на Файл. Для копирования выделите и скопируйте или нажмите Ctrl+C.','$site/data/telegram/$names'); return false;\"><img border=0 src=skin/image/linck.png title='Ссылка на файл'></a></td>
                 <td  align=\"center\" width=\"50\" class=\"par\"><a href='telegram_delete_file.php?remove=".$names."' onclick='return confirmDelete();' ><img border=0 src=skin/image/b_drop.png title='Удалить файл'></a></td>
             </tr>";
    }
}
Answer 2

Нужно ограничить цикл не $nav_max а длинной фактического массива

for($i = $nav_min; $i < count($arr); $i++)
{  
  $names = $arr[$i]['name'];
  $size =  $arr[$i]['size'];
  $count = $arr[$i]['count'];
    echo "<tr>
<td class=\"par\" style=\"padding:3px 0px 1px 20px; \">$names</td>
<td align=\"center\" width=\"100\" class=\"par\"><b>$size</b> кб</td>
<td align=\"center\" width=\"80\" class=\"par\"><b>$count</b></td>      
<td align=\"center\" width=\"50\" class=\"par\"><a href='$site/data/telegram/".$names."' target=\"_blank\" download=\"\" ><img border='0' width='16' src='skin/image/downloads.png' title='Скачать файл'></a></td>
<td  align=\"center\" width=\"50\" class=\"par\"><a title='ссылка' href='#' onclick=\"prompt('Ссылка на Файл. Для копирования выделите и скопируйте или нажмите Ctrl+C.','$site/data/telegram/$names'); return false;\"><img border=0 src=skin/image/linck.png title='Ссылка на файл'></a></td>
<td  align=\"center\" width=\"50\" class=\"par\"><a href='telegram_delete_file.php?remove=".$names."' onclick='return confirmDelete();' ><img border=0 src=skin/image/b_drop.png title='Удалить файл'></a></td>
  </tr>";
}
READ ALSO
Curl PHP авторизация на сайте не проходит

Curl PHP авторизация на сайте не проходит

Необходимо написать авторизацию через Curl на php, но возникла одна проблемаСайт каким-то образом, кроме данных логина и пароля ещё должен получить...

178
Instagram Data Mining

Instagram Data Mining

Есть вопрос: как собрать всех подписчиков определенного аккаунта Instagram? Пробовал сам, получилось только со стороны клиента с помощью JSКак...

147
Как вывести 2х байтовый символ на PHP?

Как вывести 2х байтовый символ на PHP?

Хочу вывести смайл U+0263A

142
Обновление данных в БД на PDO

Обновление данных в БД на PDO

Друзья подскажите как быть! Я с помощью Ajax отправляю данные на сервер для добавления в БД, на сервере обычный код с UPDATE

125