|
|
|
| Добрый день. Хочу сделать постраничную навигацию, материал брал с этого сайта, навигация работает отлично, но при передачи ссылке от 2 и более перемен к уже существующим, она показывает только одну, а остальные удаляет
вот фрагмент кода, взятый от сюда http://www.softtime.ru/article/index.php?id_article=33 и мои изменения
<?
// Проверяем нужны ли стрелки вперед
/* Через форму передаю переменные */
if(isset($car) or isset($mir) or isset($pir))
{
if (isset($car)) {$sql[] = "car=1"}
if (isset($mir)) {$sql[] = "mir=1"}
if (isset($pir)) {$sql[] = "pir=1"}
}
if ($page != $total) $nextpage = ' | <a href=form.php?'.implode(" & ", $sql).'zone='.$zone.'&class='.$class.'¢er='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page + 1) .'>Следующая</a>
?>
|
Функция implode почему-то отказывается выводить все переменные в ссылке из массива sql. Корректно работает лишь когда в массиве хранится 1 переменная, в противном случае перемеенные zone='.$zone.'&class='.$class.'¢er='.$center.'&sea='.$sea.'&price='.$price.'&page= удаляются автоматически.
При выборке из БД implode работает как надо, а ссылками вот беда( | |
|
|
|
|
|
|
|
для: ladan
(30.11.2011 в 17:26)
| | Сразу после implode() нужен еще один амперсанд
<?
// Проверяем нужны ли стрелки вперед
/* Через форму передаю переменные */
if(isset($car) or isset($mir) or isset($pir))
{
if (isset($car)) {$sql[] = "car=1"}
if (isset($mir)) {$sql[] = "mir=1"}
if (isset($pir)) {$sql[] = "pir=1"}
}
if ($page != $total) $nextpage = ' | <a href=form.php?'.implode(" & ", $sql).'&zone='.$zone.'&class='.$class.'¢er='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page + 1) .>Следующая</a>
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(30.11.2011 в 17:34)
| | сделал так и не помогло, не скажите куда именно и как правильно вставить его?
<?
<a href=form.php?'.implode(" & ", $sql2).'&'.'zone='.$zone.'&class='.$class.'¢er='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page + 1) .'>Следующая</a>
?>
|
после отправки одной переменной $car, ссылка правильно сформировалась
form.php?car=1&zone=&class=¢er=&sea=&price=
а после отправки $car и $mir, ссылка делается такой:
form.php?mir=1 | |
|
|
|
|
|
|
|
для: ladan
(30.11.2011 в 17:49)
| | проблему решил немного подругому
<?
// Проверяем нужны ли стрелки вперед
/* Через форму передаю переменные */
if(isset($car) or isset($mir) or isset($pir))
{
if (isset($car)) {$sql1[] = "car=1&"}
if (isset($mir)) {$sql2[] = "mir=1&"}
if (isset($pir)) {$sql3[] = "pir=1&"}
}
if ($page != $total) $nextpage = ' | <a href=form.php?'.@implode(" ", $sql1) .@implode(" ", $sql2).@implode(" ", $sql3). $zone.'&class='.$class.'¢er='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page + 1) .>Следующая</a>
?>
|
и все равно не ясно почему из одного массива в ссылке переменные выводятся только по 1 :( | |
|
|
|
|
|
|
|
для: ladan
(30.11.2011 в 18:07)
| | В первом варианте замените implode(" & ", $sql).'&'.'zone='.$zone.' на implode(" & ", $sql).'&zone='.$zone.' | |
|
|
|
|
|
|
|
для: Blizard
(30.11.2011 в 18:16)
| | Спасибо, попробовал и так, но проблема осталась... придется для каждой переменной прописывать свой массив отдельно :( | |
|
|
|
|
|
|
|
для: ladan
(30.11.2011 в 17:26)
| | Погодите, а откуда у вас пробелы? Это не допустимо для адреса, замените на | |
|
|
|
|
|
|
|
для: cheops
(30.11.2011 в 18:33)
| | сейчас попробую без пробелов | |
|
|
|
|
|
|
|
для: ladan
(30.11.2011 в 18:52)
| | И правда, все теперь работает! =) Спасибо, не первый раз выручаете :) | |
|
|
|