Автор Тема: одинаковые name в checkbox  (Прочитано 5582 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Erikson

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.eriksona.net
одинаковые name в checkbox
« : 17 Февраля 2007, 05:39:25 »
Привет, доки. Прошу помощи!
Пытаюсь создать страницу, которая выводит данные по трем городам. Листинг (weather_info.php):

if (!IsSet($_GET[\'city\'])) {
   print("Выберите город:\\n
");
   print("\\n");
   print("\\n");
   print(" Санкт-Петербург
\\n");
   print(" Нерюнгри
\\n");
   print(" Салават
\\n");
   print("\\n");
   print("\\n");
} else {
   if (IsSet($_GET[\'city\']) && ($_GET[\'city\'] == (("SPb") or ("Nerungri") or ("Salavat")))) {
      if ($_GET[\'city\'] == "SPb") {
         print("Санкт-Петербург!!!!!!");
      }
      if ($_GET[\'city\'] == "Nerungri") {
         print("Нерюнгри!!!!!!");
      }
      if ($_GET[\'city\'] == "Salavat") {
         print("Салават!!!!!!");
      }
   }
}

Это часть сайта. Должна выводить инфу о погоде. Смысл в том, что когда URL выглядит ?section=weather должен выводиться список городов (и выводится). Когда выбираешь город (URL ?section=weather&city=SPb) то выводится инфа о Санкт-Петербурге, но когда выбираешь несколько городов, то выводится инфа о последнем выбранном городе. Судя по урлу (?section=weather&city=SPb&city=Nerungri&city=Salavat) так и должно быть.

Так как же сделать правильно, чтоб при выборе нескольких городов выводилась инфа обо всех выбранных городах? Или хотябы как привести урл к нормальной форме, типа ?section=weather&city=SPb+Nerungri+Salavat или ?section=weather&city=SPb,Nerungri,Salavat? Не хотелось бы заморачиваться с CGI, а решить все посредством PHP.

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
одинаковые name в checkbox
« Ответ #1 : 17 Февраля 2007, 06:02:05 »

Оффлайн Erikson

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.eriksona.net
одинаковые name в checkbox
« Ответ #2 : 17 Февраля 2007, 15:04:08 »
Тогда урл получается вида ?section=weather&city%5B%5D=SPb&city%5B%5D=Nerungri&city%5B%5D=Salavat.

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
одинаковые name в checkbox
« Ответ #3 : 17 Февраля 2007, 16:53:13 »
Erikson, тогда может стоить рассмотреть примерно такой вариант


	
<
script language="JavaScript" type="text/javascript">
	
	
function 
choose_town (checkedname)
	
	
{
	
	
	
var 
FormElement document.forms[\'test_form\'];
	
	
	

	
	
	
if(checked)
	
	
	
{
	
	
	
	
if(FormElement.cities.value.length == 0)
	
	
	
	
{
	
	
	
	
	
FormElement.cities.value+= name;
	
	
	
	
}
	
	
	
	
else
	
	
	
	
{
	
	
	
	
	
FormElement.cities.value+= \' \'+name;
	
	
	
	
}
	
	
	
	
	

	
	
	
}
	
	
	
else
	
	
	
{
	
	
	
	
var pos = FormElement.cities.value.indexOf(name+\' \');
	
	
	
	
if(pos != -1)
	
	
	
	
{
	
	
	
	
	
FormElement.cities.value = FormElement.cities.value.replace(name+\' \', \'\');
	
	
	
	
}
	
	
	
	
else
	
	
	
	
{
	
	
	
	
	
FormElement.cities.value = FormElement.cities.value.replace(name, \'\');
	
	
	
	
}
	
	
	
}
	
	
	

	
	
}
	
</script>
	
<form action="" method="GET" name = "test_form">
	
	
<input type="checkbox" value="Moscow" onClick = "choose_town(this.checked, this.value)"> Moscow

	
	
<input type="checkbox" value="Newyork" onClick = "choose_town(this.checked, this.value)"> Newyork

	
	
<input type="checkbox" value="London" onClick = "choose_town(this.checked, this.value)"> London

	
	
<input type="hidden" name="cities" value="">
	
	
<input type="submit" value="Отправить">
	
</form>

Оффлайн Erikson

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.eriksona.net
одинаковые name в checkbox
« Ответ #4 : 17 Февраля 2007, 17:24:45 »
Так работает. Значит одним PHP не реализовать?

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
одинаковые name в checkbox
« Ответ #5 : 17 Февраля 2007, 21:18:28 »
Цитировать
Erikson:
Значит одним PHP не реализовать?


Ну а чем тебе не подходит способ от hanslinger?

Если ты хочешь красивые урлы, то нет! А что за требование такое одним PHP?

Оффлайн Erikson

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.eriksona.net
одинаковые name в checkbox
« Ответ #6 : 18 Февраля 2007, 01:02:22 »
Цитировать
html_coder:
Ну а чем тебе не подходит способ от hanslinger?


Ну я объяснял выше, что урл получается совсем не корректный.

Цитировать
html_coder:
Если ты хочешь красивые урлы, то нет! А что за требование такое одним PHP?


Изучаю PHP. Пытаюсь узнать возможности. А тема возникла при написании конкретного сайта, зашел в ступор. Обычно сам разбирался, а тут и книги не помогли. :-)

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
одинаковые name в checkbox
« Ответ #7 : 18 Февраля 2007, 03:25:32 »
УРЛ можно составлять так
?section=weather&SPb&Nerungri&Salavat ...
а потом проверять, какие ключи есть в массиве GET

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
одинаковые name в checkbox
« Ответ #8 : 18 Февраля 2007, 19:17:41 »
Если хочешь красивые урлы, не используй в форме GET, вот и все.

Оффлайн Erikson

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.eriksona.net
одинаковые name в checkbox
« Ответ #9 : 20 Февраля 2007, 01:12:47 »
Цитировать
hanslinger:
Если хочешь красивые урлы, не используй в форме GET, вот и все.


post не позволит сохранять ссылки на страницы. Или я не прав?

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
одинаковые name в checkbox
« Ответ #10 : 20 Февраля 2007, 09:47:24 »
А тупо поменять имена чекбоксов, чтобы они были разными, а уже на стороне сервера пройтись по всему их множеству и проверить, какие из них заданы?

city1, city2 etc в форме

и проверяем $city$i в цикле? :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28