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

Форум PHP

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

 

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

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

тема: Постраничный вывод массива
 
 автор: tima2010   (07.10.2011 в 15:19)   письмо автору
 
 

Здравствуйте!
помогите пожалуйста разобраться с задачей: нужно вывести массив постранично...

вид массива:


Array
(
    [2715] => stdClass Object
        (
            [ID] => 2715
            [post_author] => 1
            [post_date] => 2011-10-07 15:35:02
            [post_date_gmt] => 2011-10-07 10:35:02
            [post_content] =>
            [post_title] => myimages
            [post_excerpt] =>
            [post_status] => inherit
            [comment_status] => open
            [ping_status] => closed
            [post_password] =>
            [post_name] => myimages
            [to_ping] =>
            [pinged] =>
            [post_modified] => 2011-10-07 15:35:02
            [post_modified_gmt] => 2011-10-07 10:35:02
            [post_content_filtered] =>
            [post_parent] => 2714
            [guid] => http://www.url.ru/wp-content/uploads/2011/10/myimages.jpg
            [menu_order] => 0
            [post_type] => attachment
            [post_mime_type] => image/jpeg
            [comment_count] => 0
            [filter] => raw
        )
       // и так далее в таком же духе

)


есть данные:

<?php
// $attachment это сам массив
$imgcount count($attachment);  // количество 


// вывожу данные из массива через foreach 
?>


спасибо!

  Ответить  
 
 автор: cheops   (07.10.2011 в 15:27)   письмо автору
 
   для: tima2010   (07.10.2011 в 15:19)
 

Возможно вас заинтересует скрипт по ссылке http://softtime.ru/scripts/pager.php.

  Ответить  
 
 автор: tima2010   (07.10.2011 в 15:34)   письмо автору
 
   для: cheops   (07.10.2011 в 15:27)
 

спасибо за ответ, получается мы просто заменяем файл на мой массив, что то типа:



<?php
 
  $filename 
$attachmen// мой массив $attachmen
  // Число позиций на странице
  
$pnumber 3;

/*
это нам не нужно
  // Открываем файл для чтения
  $bufer = file_get_contents($filename);

  // Находим все строки при помощи регулярного выражения
  preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U",
                 $bufer, 
                 $out,
                 PREG_PATTERN_ORDER);
*/

/* В этом месте я немного запутался, тоже получается не нужно? или нужно сейчас что то сделать с массивом?  */
  // Формируем промежуточный массив
  
for($i 0$i count($out[1]); $i++)
  {
    
$temp[] = trim($out[2][$i]);
  }

  
// Проверяем передан ли номер текущей страницы
  
if(isset($_GET['page'])) $page $_GET['page'];
  else 
$page 1;
  
// Число страниц
  
$total count($temp);
  
$number = (int)($total/$pnumber);
  if((float)(
$total/$pnumber) - $number != 0$number++;

  
$start = (($page 1)*$pnumber 1);
  
$end $page*$pnumber 1;
  if(
$end $total$end $total;

  
// Выводим содержимое страниц
  
for($i $start$i $end$i++)
  {
    echo 
$temp[$i]."<br>";
  }

  
// Постраничная навигация
  
for($i 1$i <= $number$i++)
  {
    
// Если это произвольная страница
    
if($i != $number)
    {
      if(
$page == $i)
      {
        echo 
"[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]&nbsp;";
      }
      else
      {
        echo 
"<a href='$_SERVER[PHP_SELF]?page=$i'>[".
             ((
$i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;";
      }
    }
    
// Если это последняя страница заменяем последнюю цифру 
    // максимальным числом позиций в массиве $temp
    
else
    {
      if(
$page == $i)
      {
        echo 
"[".(($i 1)*$pnumber 1)."-".($total 1)."]&nbsp;";
      }
      else
      {
        echo 
"<a href='$_SERVER[PHP_SELF]?page=$i'>[".
             ((
$i 1)*$pnumber 1)."-".($total 1)."]</a>&nbsp;";
      }
    }
  }
?>

  Ответить  
 
 автор: cheops   (07.10.2011 в 15:39)   письмо автору
 
   для: tima2010   (07.10.2011 в 15:34)
 

Совершенно верно.

  Ответить  
 
 автор: tima2010   (07.10.2011 в 15:56)   письмо автору
 
   для: cheops   (07.10.2011 в 15:39)
 

Спасибо получилось, еще помогло array_slice

  Ответить  
 
 автор: tima2010   (07.10.2011 в 17:01)   письмо автору
 
   для: cheops   (07.10.2011 в 15:39)
 

Подскажите пожалуйста, не могу сообразить как посчитать
Разбиваю массив через array_slice
как посчитать с какой строки показывать? на данный момент делаю таким кодом, но хочется чтобы было автоматически

вывожу по 12 записей:


<?
$pnumber 
12;

if (
$page == 1) { $arrayslice 0; }
elseif (
$page == 2) { $arrayslice 12; }
elseif (
$page == 3) { $arrayslice 24; }
elseif (
$page == 4) { $arrayslice 36; }
elseif (
$page == 5) { $arrayslice 48; }
elseif (
$page == 6) { $arrayslice 60; }
elseif (
$page == 7) { $arrayslice 72; }
elseif (
$page == 8) { $arrayslice 84; }
elseif (
$page == 9) { $arrayslice 96; }
elseif (
$page == 10) { $arrayslice 108; }

$arraysliceend$arrayslice $pnumber;

// foreach (array_slice($filename,$arrayslice,$arraysliceend) as $file) :
// ....
?>

  Ответить  
 
 автор: Lotanaen   (07.10.2011 в 17:25)   письмо автору
 
   для: tima2010   (07.10.2011 в 17:01)
 

$arrayslice = $pnumber*($page-1);

  Ответить  
 
 автор: tima2010   (07.10.2011 в 21:05)   письмо автору
 
   для: Lotanaen   (07.10.2011 в 17:25)
 

Спасибо, у вас 3D мозг ))

  Ответить  
 
 автор: tima2010   (08.10.2011 в 16:00)   письмо автору
 
   для: Lotanaen   (07.10.2011 в 17:25)
 

Вы не знаете почему данные в массиве при такой постраничной навигации с разбивкой через array_slice начинают скакать? бывает на 2 странице повторяются данные что и на первой и так далее...

  Ответить  
 
 автор: tima2010   (08.10.2011 в 16:44)   письмо автору
 
   для: tima2010   (08.10.2011 в 16:00)
 

что то array_slice глючит, если выводим с 0 по 12 то все ок
но если с 12-24 то выводит 24 записи в не промежуток между 12 и 24

$foreacharray = array_slice($filename,$arrayslice,$arraysliceend);


разве нельзя выбирать с середины?

видимо придется разбивать массив с помощью array_chunk

  Ответить  
 
 автор: tima2010   (08.10.2011 в 18:03)   письмо автору
 
   для: tima2010   (08.10.2011 в 16:44)
 

В итоге сделал так:


<?php
if ($page == '')
 {
$arraychunkvalue 0
}
else {
$arraychunkvalue $page 1// так как ключ массива с 0
}

$filename array_chunk($filename$pnumber);

foreach (
$filename[$arraychunkvalue] as $file) :
// ....

?>

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

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