function createPaginatorPost($total, $page)
{
$url = '<a id="dlet" class="dlet" href= ./page.php?ind='.(int)$_GET['ind'].'>←|</a>';
$url_long = '<a id="dlet" class="dlet" href= ./page.php?ind='.(int)$_GET['ind'].'&page=';
$menu = '';
// Проверяем нужны ли стрелки назад
if ($page != 1)
$menu .= $url.$url_long.($page - 1).'>←</a>';
if($page > 5)
$menu .= $url_long.($page - 5) .'>-5</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0)
$menu .= $url_long.($page - 2).'>'.($page - 2).'</a>';
if($page - 1 > 0)
$menu .= $url_long.($page - 1).'>'.($page - 1).'</a>';
$menu .= '<div id="dlet" class="dlet_active">'.$page.'</div>';
if($page + 1 <= $total)
$menu .= $url_long.(int)($page + 1).'>'.($page + 1).'</a>';
if($page + 2 <= $total)
$menu .= $url_long.($page + 2).'>'.($page + 2).'</a>';
if($page + 5 <= $total)
$menu .= $url_long.(int)($page + 5).'>+5</a>';
// Проверяем нужны ли стрелки вперед
if ($page != $total)
$menu .= $url_long.($page + 1).'>→</a>'.$url_long.$total.'>|→</a>';
return $menu;
}
А есть еще и вот такая...
function createPaginatorComment($total, $page)
{
$url = '<a class="dlet" href= ./page_view_you_mail.php?view='.$_GET['view'].'>←|</a> ';
$url_long = '<a class="dlet" href= ./page_view_you_mail.php?view='.$_GET['view'].'&page=';
$menu = '';
// Проверяем нужны ли стрелки назад
if ($page != 1)
$menu .= $url.$url_long.($page - 1).'>←</a>';
if($page > 5)
$menu .= $url_long.($page - 5) .'>-5</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0)
$menu .= $url_long.($page - 2).'>'.($page - 2).'</a>';
if($page - 1 > 0)
$menu .= $url_long.($page - 1).'>'.($page - 1).'</a>';
$menu .= '<div id="dlet" class="dlet_active">'.$page.'</div>';
if($page + 1 <= $total)
$menu .= $url_long.(int)($page + 1).'>'.($page + 1).'</a>';
if($page + 2 <= $total)
$menu .= $url_long.($page + 2).'>'.($page + 2).'</a>';
if($page + 5 <= $total)
$menu .= $url_long.(int)($page + 5).'>+5</a>';
// Проверяем нужны ли стрелки вперед
if ($page != $total)
$menu .= $url_long.($page + 1).'>→</a>'.$url_long.$total.'>|→</a>';
return $menu;
}
Собственно эти 2 функции отличаются только первыми 2 строками. А точнее переменными
$url
$url_long
Как можно объединить эти структуры? Спасибо...
Спустя 15 минут, 5 секунд (4.04.2011 - 10:00) kasichvadim написал(а):
Это как объединить?
Спустя 2 минуты, 31 секунда (4.04.2011 - 10:02) Trianon написал(а):
m4a1fox
переписать заново, написав именно тот код, который требуется.
(внутрь не глядел, в такой постановке задача решается независимо от кода.)
переписать заново, написав именно тот код, который требуется.
(внутрь не глядел, в такой постановке задача решается независимо от кода.)
Спустя 3 минуты, 45 секунд (4.04.2011 - 10:06) m4a1fox написал(а):
Trianon
Интересно. Значит нельзя получается сделать что то общее... например функция в функции....
Интересно. Значит нельзя получается сделать что то общее... например функция в функции....
Спустя 1 час, 10 минут, 57 секунд (4.04.2011 - 11:17) Basili4 написал(а):
общее можно. Функции внутри других не объявить
Спустя 23 минуты, 38 секунд (4.04.2011 - 11:41) m4a1fox написал(а):
Basili4
Жаль! А так хотелось!
Жаль! А так хотелось!
Спустя 18 минут, 43 секунды (4.04.2011 - 12:00) RAZZOR написал(а):
Так а почему бы не добавить третий параметр?
function createPaginatorComment($total, $page, $filename)И потом назначать $filename либо page.php, либо page_view_you_mail.php в зависимости от ситуации. В чём пролема-то ?
{
$url = '<a class="dlet" href= ./' . $filename . '?view='.$_GET['view'].'>←|</a> ';
$url_long = '<a class="dlet" href= ./' . $filename . '?view='.$_GET['view'].'&page=';
$menu = '';
// Проверяем нужны ли стрелки назад
if ($page != 1)
$menu .= $url.$url_long.($page - 1).'>←</a>';
if($page > 5)
$menu .= $url_long.($page - 5) .'>-5</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0)
$menu .= $url_long.($page - 2).'>'.($page - 2).'</a>';
if($page - 1 > 0)
$menu .= $url_long.($page - 1).'>'.($page - 1).'</a>';
$menu .= '<div id="dlet" class="dlet_active">'.$page.'</div>';
if($page + 1 <= $total)
$menu .= $url_long.(int)($page + 1).'>'.($page + 1).'</a>';
if($page + 2 <= $total)
$menu .= $url_long.($page + 2).'>'.($page + 2).'</a>';
if($page + 5 <= $total)
$menu .= $url_long.(int)($page + 5).'>+5</a>';
// Проверяем нужны ли стрелки вперед
if ($page != $total)
$menu .= $url_long.($page + 1).'>→</a>'.$url_long.$total.'>|→</a>';
return $menu;
}
Спустя 11 минут, 38 секунд (4.04.2011 - 12:11) RAZZOR написал(а):
Или даже лучше так:
Теперь, если вы при вызове функции не указываете третий параметр - будет как в createPaginatorComment, если указываете 'page', то будет как в createPaginatorPost, если укажете что-нибудь другое, то будет херня, но можно сделать лишнюю проверку.
function createPaginator($total, $page, $filename = 'page_view_you_mail')
{
$url = '<a class="dlet" href= ./' . $filename . '.php?view='.$_GET['view'].'>←|</a> ';
$url_long = '<a class="dlet" href= ./' . $filename . '.php?view='.$_GET['view'].'&page=';
Теперь, если вы при вызове функции не указываете третий параметр - будет как в createPaginatorComment, если указываете 'page', то будет как в createPaginatorPost, если укажете что-нибудь другое, то будет херня, но можно сделать лишнюю проверку.
$filename = ($filename != 'page_view_you_mail') ? 'page' : 'page_view_you_mail';
Спустя 1 час, 43 минуты, 3 секунды (4.04.2011 - 13:54) m4a1fox написал(а):
RAZZOR
Спасибо. Сейчас попробую...
Но собственно интересовала такая возможность, что избавиться от этого
Так как он у меня повторяется... Насколько понял Ваш вариант все равно предполагает, что я буду использовать код выше 2 раза...
Спасибо. Сейчас попробую...
Но собственно интересовала такая возможность, что избавиться от этого
$menu = '';
// Проверяем нужны ли стрелки назад
if ($page != 1)
$menu .= $url.$url_long.($page - 1).'>←</a>';
if($page > 5)
$menu .= $url_long.($page - 5) .'>-5</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0)
$menu .= $url_long.($page - 2).'>'.($page - 2).'</a>';
if($page - 1 > 0)
$menu .= $url_long.($page - 1).'>'.($page - 1).'</a>';
$menu .= '<div id="dlet" class="dlet_active">'.$page.'</div>';
if($page + 1 <= $total)
$menu .= $url_long.(int)($page + 1).'>'.($page + 1).'</a>';
if($page + 2 <= $total)
$menu .= $url_long.($page + 2).'>'.($page + 2).'</a>';
if($page + 5 <= $total)
$menu .= $url_long.(int)($page + 5).'>+5</a>';
// Проверяем нужны ли стрелки вперед
if ($page != $total)
$menu .= $url_long.($page + 1).'>→</a>'.$url_long.$total.'>|→</a>';
return $menu;
Так как он у меня повторяется... Насколько понял Ваш вариант все равно предполагает, что я буду использовать код выше 2 раза...
Спустя 8 часов, 53 минуты, 26 секунд (4.04.2011 - 22:48) RAZZOR написал(а):
Мой вариант вариант предполагал, что у Вы теперь можете удалить две свои функции и использовать одну мою. Я так понял вы именного этого добивались. Вот вам итоговый вариант со всеми правками
Например $menu = createPaginator(первая_переменная, вторая_переменная, true);. Там где вторую - вызываете её же, но пропускаете третий параметр. Функция автоматически подставит false и вернёт нужный результат.
Вы этого добивались?
function createPaginator($total, $page, $what = false)Там, где вы вызывали свою первую функцию, вызываете мою, задавая третий параметр true.
{
$filename = $what ? 'page' : 'page_view_you_mail';
$url = '<a class="dlet" href= ./' . $filename . '.php?view='.$_GET['view'].'>←|</a> ';
$url_long = '<a class="dlet" href= ./' . $filename . '.php?view='.$_GET['view'].'&page=';
$menu = '';
// Проверяем нужны ли стрелки назад
if ($page != 1)
$menu .= $url.$url_long.($page - 1).'>←</a>';
if($page > 5)
$menu .= $url_long.($page - 5) .'>-5</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0)
$menu .= $url_long.($page - 2).'>'.($page - 2).'</a>';
if($page - 1 > 0)
$menu .= $url_long.($page - 1).'>'.($page - 1).'</a>';
$menu .= '<div id="dlet" class="dlet_active">'.$page.'</div>';
if($page + 1 <= $total)
$menu .= $url_long.(int)($page + 1).'>'.($page + 1).'</a>';
if($page + 2 <= $total)
$menu .= $url_long.($page + 2).'>'.($page + 2).'</a>';
if($page + 5 <= $total)
$menu .= $url_long.(int)($page + 5).'>+5</a>';
// Проверяем нужны ли стрелки вперед
if ($page != $total)
$menu .= $url_long.($page + 1).'>→</a>'.$url_long.$total.'>|→</a>';
return $menu;
}
Например $menu = createPaginator(первая_переменная, вторая_переменная, true);. Там где вторую - вызываете её же, но пропускаете третий параметр. Функция автоматически подставит false и вернёт нужный результат.
Вы этого добивались?