Реклама на сайте Advertise with us

Опять постраничный вывод :( (php)

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 02/03/05 в 21:39       Ответить с цитатойцитата 

есть 3 массива(многомерных) - в определенных пропорциях нужно раскидать их содержимое по страницам если количество страниц больше 1
$new_array
$popular_array
$normal_array
количество страниц = общее количество элементов массивов/количество элементов массивов на странице
приоритетность
на 1 странице
- все элементы $new_array
- $popular_array*0.7
- остаток $normal_array
на 2 странице
- остаток от $popular_array1*0.7
- остаток от $normal_array1
и так далее
на последней странице
- остаток $popular_array
- остаток от $normal_array
Подозреваю, что можно смешать элементы трех массивов в один в нужной пропорции а затем в одном цикле раздать по страницам с записью в файл каждой страницы
Любые намеки приветствуются. +8

крипта на ByBit

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 02/03/05 в 23:06       Ответить с цитатойцитата 

я бы подсказал с удовольствием если бы ты побольше про эти скромные массивы рассказал , и зачем их три, какой тип данных там ? в каких пропорциях ,из чего исходить ?

1
 



С нами с 20.01.03
Сообщения: 18003
Рейтинг: 9760


Передовик Master-X (01.03.2005) Передовик Master-X (16.03.2005) Передовик Master-X (16.10.2016) Передовик Master-X (01.11.2016) Передовик Master-X (16.11.2016) Ветеран трепа Master-X (01.12.2016)
Ссылка на сообщениеДобавлено: 02/03/05 в 23:11       Ответить с цитатойцитата 

смутно как-то..

на 1 странице
- все элементы $new_array
- $popular_array*0.7
- остаток $normal_array

1
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 02/03/05 в 23:30       Ответить с цитатойцитата 

mr.GOD:
$new_array - новые линки
$popular_array - популярные линки
$normal_array - обычные линки
тип данных - выборка из mysql-ной таблицы
т е каждый элемент массива - многомерный массив
пропорции
новые линки - все на первой странице (не бывает больше 10)
популярные линки - 50% от общего количества популярных линков (на последующей странице 50% от остатка с предыдущей) - но не более половины всех линков на странице
обычные линки - дополняют количество линков до стандарта (скажем 20)
вроде понятно написал...
SAV:
имеется ввиду остаток (общее количество линков любого массива минус задействованное на предыдущих страницах)
вот

крипта на ByBit

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 03/03/05 в 00:06       Ответить с цитатойцитата 

Ну поехали icon_smile.gif
Значит
1)Новые линки - не больше 10 на одной странице.($new_links)
2)Популярные линки - первая старница 50 % , дальше остаток ($popular_links)
раскидываем 50 % от предыдущего.
3)Нормальные линки - $standart - ($popular_links+new_links)
4) $popular_links+new_links < $standart\2

Теперь вопрос правильно ли я все понял ? Положение линков на странице идет в стиле ?(см.ниже)

Новые линки
Популярные линки
Обчные линки.

Как ответишь напишу ...

1
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 03/03/05 в 00:13       Ответить с цитатойцитата 

mr.GOD писал:
Ну поехали icon_smile.gif
Значит
1)Новые линки - не больше 10 на одной странице.($new_links)
2)Популярные линки - первая старница 50 % , дальше остаток ($popular_links)
раскидываем 50 % от предыдущего.
3)Нормальные линки - $standart - ($popular_links+new_links)
4) $popular_links+new_links < $standart\2
Теперь вопрос правильно ли я все понял ? Положение линков на странице идет в стиле ?(см.ниже)
Новые линки
Популярные линки
Обчные линки.
Как ответишь напишу ...

1)новых линков больше 10 вряд ли будет, поэтому они все на первой странице
2) да
3)да
4)$popular_links+new_links < $standart*0,7
приоритетность правильная

крипта на ByBit

0
 



С нами с 20.01.03
Сообщения: 18003
Рейтинг: 9760


Передовик Master-X (01.03.2005) Передовик Master-X (16.03.2005) Передовик Master-X (16.10.2016) Передовик Master-X (01.11.2016) Передовик Master-X (16.11.2016) Ветеран трепа Master-X (01.12.2016)
Ссылка на сообщениеДобавлено: 03/03/05 в 00:16       Ответить с цитатойцитата 

Цитата:
Sterx:
новые линки - все на первой странице (не бывает больше 10)


Цитата:
mr.GOD:
1)Новые линки - не больше 10 на одной странице.($new_links)


разница существенна

1
 



С нами с 20.01.03
Сообщения: 18003
Рейтинг: 9760


Передовик Master-X (01.03.2005) Передовик Master-X (16.03.2005) Передовик Master-X (16.10.2016) Передовик Master-X (01.11.2016) Передовик Master-X (16.11.2016) Ветеран трепа Master-X (01.12.2016)
Ссылка на сообщениеДобавлено: 03/03/05 в 00:24       Ответить с цитатойцитата 

алгоритм вряд ли сложный.. просто неясно что на выход надо до конца..
первая страница: все новые + половина популярных (это и задает кол-во линков на пагу)
вторая следущие: половина от остатка популярных + довесок из кучи (до нужного количества)

так?

1
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 03/03/05 в 00:27       Ответить с цитатойцитата 

Опять вы уходите от сабжа icon_smile.gif

Цитата:
1)новых линков больше 10 вряд ли будет, поэтому они все на первой странице


Комрад я алгоритм пишу , меня мало волнует что там будет а что нет :-)
будет так будет а нет так нет.


Цитата:
4)$popular_links+new_links < $standart*0,7


тогда уже делаем так чтобы не париться :

Код:
$popular_links+new_links < $standart*$page_percent


Вообщем щас будем думать ...

1
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 03/03/05 в 01:00       Ответить с цитатойцитата 

надеюсь ты нечего не курил smail102.gif

1
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 03/03/05 в 01:14       Ответить с цитатойцитата 

прикалываешься?

крипта на ByBit

0
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 03/03/05 в 01:24       Ответить с цитатойцитата 

Я весь топик прочитал, да так вопроса и не увидел icon_smile.gif

0
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 03/03/05 в 01:36       Ответить с цитатойцитата 

Dr.Syshalt:
алгоритм нужен

крипта на ByBit

0
 



С нами с 20.01.03
Сообщения: 18003
Рейтинг: 9760


Передовик Master-X (01.03.2005) Передовик Master-X (16.03.2005) Передовик Master-X (16.10.2016) Передовик Master-X (01.11.2016) Передовик Master-X (16.11.2016) Ветеран трепа Master-X (01.12.2016)
Ссылка на сообщениеДобавлено: 03/03/05 в 01:51       Ответить с цитатойцитата 

Sterx писал:
Dr.Syshalt:
алгоритм нужен

хех.. начнем сначала по шагам
А - новые
Б - популярные
В - остальные
на выдаче А+Б+В элементов на Р страниц

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 03/03/05 в 01:55       Ответить с цитатойцитата 

Sterx писал:
прикалываешься?


нет , у меня складываеться впечатление что ты пока еще сам до конца не понял что тебе нужно ...

Например это условие смысла не имеет :

Цитата:
4) $popular_links+new_links < $standart\$some_percent


это количество линков на паге оно не может быть дробным , следовательно нужное нам число , при таком условии(меньше) :
есть ($standart\$some_percent -1) , причем тут,то что слева я так и не понял ...

Вот наработка , писал отруки , надеюсь поймешь :
Код:

<?php
/*На входе */
$page = 0; //Номер старницы
$standart = 20; //Общее кол-во линков на странице
$percent_popandnew_forstandart = 0.7;// Проц.соотношение к сумме новых+популярных
$next_standart = $standart*$percent_popandnew_forstandart;//Узнаем число большее standart*$percent_popandnew_forstandart
         $next_standart=(int)floor($next_standart);
         $updateminus=gettype($next_standart);
   if($updateminus!="integer")
      $next_standart--;
$normal_links = $standart-($next_standart);//Макс. норм.линк на паге
$max_newlinks = 10 ;//Макс. кол-во новых линков на паге
$pop_links = 5 ;// Максимальное кол-во популярных на паге
/* Считаем размеры сабжей */
$newl_size =  sizeof($new_links);
$pop1_size = sizeof($popular_links);
$norml_size = sizeof($normal_links);

/* Собсно начинаем думать :-)  */   
   /*Узнаем на скольких пагах будут новые линки и сколько будет на последней паге их*/   
   $realpages=$newl_size/$max_newlinks;
      $updateplus=gettype($realpages);
            $realpages=(int)floor($realpages);
   if($updateplus!="integer")
         $realpages++;
$lastpage_newlinks=($realpages*$max_newlinks)-$newl_size; // на последней паге
$realpages_newlinks = $realpages; // паг для новых линков всего
      /*Та же ботва для остальных типов линков*/
   $realpages=$norml_size/$normal_links;
      $updateplus=gettype($realpages);
            $realpages=(int)floor($realpages);
   if($updateplus!="integer")
         $realpages++;
$lastpage_normlinks=($realpages*$normal_links)-$norml_size; // на последней паге для норм.
$realpages_normlinks = $realpages; // паг для норм линков всего      
/* Батва продолжаеться , можно в цикле но мне в лом писать :-) */
   $realpages=$pop1_size/$pop_links;
      $updateplus=gettype($realpages);
            $realpages=(int)floor($realpages);
   if($updateplus!="integer")
         $realpages++;
$lastpage_poplinks=($realpages*$pop_links)-$pop1_size; // на последней паге для попс
$realpages_poplinks = $realpages; // паг для попс линков всего      

echo "
new links pages:$realpages_newlinks<br>
new links last page :$lastpage_newlinks<br>
<br>
pop links pages : $realpages_poplinks<br>
pop links lastpage:$lastpage_poplinks<br>
<br>
normal links pages :$realpages_normlinks<br>
normal links lastpage : $lastpage_normlinks
<br>
";
?>

На красоту не притендует.
Все делаеться т.к. как ты хотел кроме как не считаеться количество популярных линков -50 % на каждой последующей паге , но сделать можно , просто уже поздно и мозг в отказе icon_smile.gif
Ну а попагам там сам выведешь не сложно.

1
 



С нами с 05.07.03
Сообщения: 357
Рейтинг: 68

Ссылка на сообщениеДобавлено: 03/03/05 в 10:41       Ответить с цитатойцитата 

Я бы как истиный ленивец склеивал бы все массивы в один массив в нужной последовательности. А дальше все просто - делаем выборку из этого массива с извезтным смещением ($current_page*$items_per_page) с известным количеством элементов ($items_per_page).

Общее количество страниц вычисляется так:

$pages_count = ceil($total_items/$items_per_page);

где $total_items = sizeof($big_array);

где $big_array - общий массив icon_smile.gif

0
 



С нами с 24.02.05
Сообщения: 75
Рейтинг: 123

Ссылка на сообщениеДобавлено: 03/03/05 в 11:49       Ответить с цитатойцитата 

что-то мне подсказывает что человека как раз интересует алгоритм склеивания в правильную последовательность, а не кол-во страниц или $big_array=array_merge($array1,$array2);

1
 



С нами с 16.02.05
Сообщения: 123
Рейтинг: 155

Ссылка на сообщениеДобавлено: 03/03/05 в 12:05       Ответить с цитатойцитата 

Тут как-то стремны предполагается вывод на 1ую страницу, там может оказаться слишком много элементов.
Надо или больши информации, или менять принцип постраничной разбивки. Даже может не менять, а просто дополнить.

0
 



С нами с 24.02.05
Сообщения: 75
Рейтинг: 123

Ссылка на сообщениеДобавлено: 03/03/05 в 12:18       Ответить с цитатойцитата 

да нет, imho ничего стремного,
указано что максимальное число новых ссылок всегда
меньше чем максимальное кол-во ссылок на одной странице, все новые ссылки должны быть на первой

Вот что требует уточнения, так это момент когда популярные ссылки кончатся. Это же не апория ахилл и черепаха, в конце концов :).

Т.е. когда после страницы X останутся в выводе только стандратные линки - это приемлемо или в выводе обязательно должно присутствовать N-ое кол-во популярных ссылок, убывающее в арифмтической или геометрической (указать) прогрессии?

0
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 03/03/05 в 20:16       Ответить с цитатойцитата 

всем спасибо, сам написал

крипта на ByBit

0
 



С нами с 05.07.03
Сообщения: 357
Рейтинг: 68

Ссылка на сообщениеДобавлено: 03/03/05 в 20:49       Ответить с цитатойцитата 

И тебе за понижение рейтинга спасибо.

1
 



С нами с 24.02.05
Сообщения: 75
Рейтинг: 123

Ссылка на сообщениеДобавлено: 03/03/05 в 20:56       Ответить с цитатойцитата 

получилось что-то вроде

<?php

$newlinks=array();
$popular=array();
$norm=array();

$per_page=20;

for($i=1;$i<=6;$i++)
{$newlinks[]="New".$i;}

for($i=1;$i<=25;$i++)
{$popular[]="Pop".$i;}

for($i=1;$i<=100;$i++)
{$norm[]="Norm".$i;}

$n2=count($newlinks);

$p1=0; $p2=count($popular);

$pop_from_arr=50/100; //max part of left popular links in array on page
$pop_on_page=50/100; //max part of popular links on page

$s1=0; $s2=count($norm);

$page_max=ceil(($n2+$p2+$s2)/$per_page);
//print("Pages:".$page_max."<br>"); //Pages

$out=array();

function add_value($arr)
{global $out;global $page;$out[$page][]=$arr;}

function add_normval($num)
{global $s1;global $norm;
for($i=0;$i<$num;$i++)
{add_value($norm[$s1]);
$s1++;}}

function add_popval($num){
global $p1; global $popular;
for($i=0;$i<$num;$i++)
{add_value($popular[$p1]);
$p1++;}}

$page=1;
$y=0; //currently links on page

foreach($newlinks as $key=>$value) {add_value($value);$y++;}

while($s1<$s2) {

if($page<>$page_max)
{
$add_pop=min($per_page-$y,min(ceil(($p2-$p1)*$pop_from_arr),floor(($per_page-$y)*$pop_on_page)));
$add_norm=min($s2-$s1,$per_page-$y-$add_pop);
} else {
$add_pop=$p2-$p1;
$add_norm=$s2-$s1; }

add_popval($add_pop);
add_normval($add_norm);


$y=0; $page++;

}



foreach($out as $key=>$value){print("<br><br><b>Page ".$key."<br></b>");
foreach($value as $key1=>$value1) {print($value1."<br>");}}

?>

1
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 03/03/05 в 21:06       Ответить с цитатойцитата 


косяк борды.
всем + поставил - у двоих минусы получились :/
счас +8 поставил тебе

крипта на ByBit

0
 



С нами с 07.06.00
Сообщения: 3516
Рейтинг: 1802

Ссылка на сообщениеДобавлено: 04/03/05 в 00:10       Ответить с цитатойцитата 

Sterx писал:
косяк борды.
всем + поставил - у двоих минусы получились :/

Это ИМХО не косяк борды.
Ты видимо прокрутку колесом мыши делал при активном окне оценки... оно и прокрутилось. Надо мышкой на страницу кликать после выставления оценки.
ЗЫ: Я обнулил выставленные тобой минусы. Ты ведь вроде не против?

Elitist Club и Adult Yellow Pages

0
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 04/03/05 в 09:51       Ответить с цитатойцитата 

да, конечно
может и от прокрутки

крипта на ByBit

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »