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

Форум PHP

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

 

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

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

тема: как передать переменные ссылке через implode
 
 автор: ladan   (30.11.2011 в 17:26)   письмо автору
 
 

Добрый день. Хочу сделать постраничную навигацию, материал брал с этого сайта, навигация работает отлично, но при передачи ссылке от 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.'&center='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page 1) .'>Следующая</a>
?>

Функция implode почему-то отказывается выводить все переменные в ссылке из массива sql. Корректно работает лишь когда в массиве хранится 1 переменная, в противном случае перемеенные zone='.$zone.'&class='.$class.'&center='.$center.'&sea='.$sea.'&price='.$price.'&page= удаляются автоматически.

При выборке из БД implode работает как надо, а ссылками вот беда(

  Ответить  
 
 автор: cheops   (30.11.2011 в 17:34)   письмо автору
 
   для: 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.'&center='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page 1) .>Следующая</a
?>

  Ответить  
 
 автор: ladan   (30.11.2011 в 17:49)   письмо автору
 
   для: cheops   (30.11.2011 в 17:34)
 

сделал так и не помогло, не скажите куда именно и как правильно вставить его?


<?
<a href=form.php?'.implode(" & ", $sql2).'&'.'zone='.$zone.'&class='.$class.'&center='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page + 1) .'>Следующая</a>
?>


после отправки одной переменной $car, ссылка правильно сформировалась

form.php?car=1&zone=&class=&center=&sea=&price=

а после отправки $car и $mir, ссылка делается такой:

form.php?mir=1

  Ответить  
 
 автор: ladan   (30.11.2011 в 18:07)   письмо автору
 
   для: 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.'&center='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page 1) .>Следующая</a>  
?>





и все равно не ясно почему из одного массива в ссылке переменные выводятся только по 1 :(

  Ответить  
 
 автор: Blizard   (30.11.2011 в 18:16)   письмо автору
 
   для: ladan   (30.11.2011 в 18:07)
 

В первом варианте замените implode(" & ", $sql).'&'.'zone='.$zone.' на implode(" & ", $sql).'&zone='.$zone.'

  Ответить  
 
 автор: ladan   (30.11.2011 в 18:25)   письмо автору
 
   для: Blizard   (30.11.2011 в 18:16)
 

Спасибо, попробовал и так, но проблема осталась... придется для каждой переменной прописывать свой массив отдельно :(

  Ответить  
 
 автор: cheops   (30.11.2011 в 18:33)   письмо автору
 
   для: ladan   (30.11.2011 в 17:26)
 

Погодите, а откуда у вас пробелы? Это не допустимо для адреса, замените
implode(" & ", $sql)
на
implode("&", $sql)

  Ответить  
 
 автор: ladan   (30.11.2011 в 18:52)   письмо автору
 
   для: cheops   (30.11.2011 в 18:33)
 

сейчас попробую без пробелов

  Ответить  
 
 автор: ladan   (30.11.2011 в 18:58)   письмо автору
 
   для: ladan   (30.11.2011 в 18:52)
 

И правда, все теперь работает! =) Спасибо, не первый раз выручаете :)

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

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