Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изменения в $_GET

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: вставка GET параметров в ссылку
svbPavel
Отправлено: 14 Марта, 2011 - 07:26:34
Post Id



Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Март 2011  
Откуда: Свободный


Помог: 0 раз(а)




Господа, помогите разобраться в ситуации, а то запутался.
допустим есть урла с параметрами:
itemsget.php?cid=321654&count=123&props=3211:111;32156:13256
количество переданных параметров может меняться!!!
в $props передаются НОМЕР:ЗНАЧЕНИЕ;НОМЕР:ЗНАЧЕНИЕ

как сделать ссылку, чтобы сохранялись все переданные GET параметры, и при этом можно было изменить параметр props, поменять в каком нибудь НОМЕРе значение, пример:
открыли ссылку вида:
itemsget.php?cid=321654&count=123&props=3211:111;32156:13256
прочитали инфу с БД и показали на страницу ссылки типа:
itemsget.php?cid=321654&count=123&props=3211:222;32156:13256
itemsget.php?cid=321654&count=123&props=3211:333;32156:13256

Заранее благодарю за ответ Улыбка

UPD: если непонятно объяснил, может в исходнике поймете проблемку Улыбка
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if(isset($_GET['props'])) { // если есть, значит какаято пропертя уже передана
  5.         $props = $_GET['props'] ;
  6. }
  7. $prop_arr = explode(';', $props) ; //разбиваем в массив переданые пропертя
  8. //НОМЕР:ЗНАЧЕНИЕ ; НОМЕР:ЗНАЧЕНИЕ ; N...
  9.  
  10. /*
  11. Есть массив со списком пропертей и их возможными значениями
  12. Property[item_prop] =>[name] - название проперти
  13.                                         =>[pid] - номер проперти
  14.                                         =>[prop_val][0]=>[name] - название значения
  15.                                                                    =>[vid] - номер зачения
  16.                                                                 [1]=>[name] - название значения
  17.                                                                    =>[vid] - номер зачения
  18. */
  19. for($i=0; $i<count($Property);$i++) // цикл по кол-ву проперти
  20. {
  21.         echo $Property[$i][name].":<br />" ;
  22.         for($ii=0;$ii<count($Property[$i][prop_val])){ //цикл по кол-ву возможных значений проперти
  23.                 /* тут нужно создать ссылку.
  24.                 Вот тут и появляется проблемка,
  25.                 GET['props'] передается в виде 123:32155;2566:35556;2568:23566
  26.                 номер проперти : значение проперти.
  27.                 разделитель между различными пропертями ';'
  28.                 как можно изменить допустим значение 123:32155 на 123:32225, при этом
  29.                 остальные значения должны остаться без изменений, и все другие переданые параметры в ссылке должны остаться
  30.                 */
  31.                 for($c = 0; $c<count($prop_arr); $c++){
  32.                         if(!stripos($prop_arr[$c], $Propperty[$i][pid])) {
  33.                                 echo "Проперти ".$Propperty[$i][pid]." не найдена в переданных параметрах<br />" ;
  34.                                 $prop_arr[] = $Property[$i][pid].":".$Property[$i][prop_val][$ii][vid] ; // добавляем
  35.                         } else {
  36.                                 echo "Проперти ".$Propperty[$i][pid]." найдена<br />" ; //если найдена в списке переданых то
  37.                                 $prop_arr[$c] = $Property[$i][pid].":".$Property[$i][prop_val][$ii][vid] ; // изменяем
  38.                         } // собираем массив в строчку и пихаем в линк
  39.                         echo "<a href='itemsget.php?props=>".implode(';', $prop_arr)."'>".."<a/><br />" ;
  40.                 }
  41.         }
  42. }
  43.  

(Добавление)
Спойлер (Отобразить)

(Отредактировано автором: 14 Марта, 2011 - 08:20:59)

 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Марта, 2011 - 09:22:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ошибочка:
echo "<a href='itemsget.php?props=>".implode(';', $prop_arr)."'>".."<a/><br />" ;

(Отредактировано автором: 14 Марта, 2011 - 09:25:34)

 
 Top
EuGen Администратор
Отправлено: 14 Марта, 2011 - 09:26:00
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




svbPavel пишет:
itemsget.php?cid=321654&count=123&props=3211:111;32156:13256
прочитали инфу с БД и показали на страницу ссылки типа:
itemsget.php?cid=321654&count=123&props=3211:222;32156:13256
itemsget.php?cid=321654&count=123&props=3211:333;32156:13256

Смотря что требуется. Например, можно:
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgProperties=array();
  3. foreach(explode(';', $_GET['props']) as $propertyPair)
  4. {
  5.    $rgTmp=explode(':',$propertyPair);
  6.    $rgProperties[$rgTmp[0]]=$rgTmp[1];
  7. }
  8.  

На выходе будет:
PHP:
скопировать код в буфер обмена
  1.  
  2. array(2) {
  3.   [3211]=>
  4.   string(3) "222"
  5.   [32156]=>
  6.   string(5) "13256"
  7. }
  8.  

и, зная, что же конкретно нужно изменить (то есть значение конкретного свойства), думаю, получить требуемое уже несложно. Дело другое, что если структура предполагается действительно сложная, то, может, стоит посмотреть в сторону serialize ?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
svbPavel
Отправлено: 14 Марта, 2011 - 09:40:10
Post Id



Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Март 2011  
Откуда: Свободный


Помог: 0 раз(а)




EuGen, спасибо огромное!!! Улыбка мозги у меня уже кипят, сам не додумался еще раз разбить строчку в массив
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB