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

HTML+CSS+JavaScript

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

 

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

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

тема: Не выводить пустое значение GET в <select>
 
 автор: mister_pipin   (19.07.2012 в 08:52)   письмо автору
 
 

Всем привет!
Пример
<select name="region" onchange="document.form.submit();">
<option value="">Выбрать регион</option>
<option value="1">Первый регион</option>
<option value="2">Второй регион</option>
<option value="3">Третий регион</option>
</option>

Если я выбираю какой то регион в адресной строке все нормально и она придает вида
Выбрал Первый регион
index.php?region=1

А если выбираю Выбрать регион, то в адресной строке получается
index.php?region=


Возможно ли как то сделать что бы region= не выводился?
Заранее спасибо

  Ответить  
 
 автор: mister_pipin   (19.07.2012 в 08:57)   письмо автору
 
   для: mister_pipin   (19.07.2012 в 08:52)
 

Извините за беспокойство, решил

if(!isset($region)){
            <select name="region" onchange="document.form.submit();">
        }
        else{
            <select name="" onchange="document.form.submit();">
        }
<option value="">Выбрать регион</option>
<option value="1">Первый регион</option>
<option value="2">Второй регион</option>
<option value="3">Третий регион</option>
</option>

  Ответить  
 
 автор: confirm   (19.07.2012 в 09:01)   письмо автору
 
   для: mister_pipin   (19.07.2012 в 08:57)
 

Разве это решение, это ужас!

<select name="region" onchange="if(this.value) this.form.submit()">
<option value="" >Выбрать регион</option> 
<option value="1">Первый регион</option> 
<option value="2">Второй регион</option> 
<option value="3">Третий регион</option>

  Ответить  
 
 автор: mister_pipin   (19.07.2012 в 09:19)   письмо автору
 
   для: confirm   (19.07.2012 в 09:01)
 

Спасибо

  Ответить  
 
 автор: mister_pipin   (19.07.2012 в 19:14)   письмо автору
 
   для: confirm   (19.07.2012 в 09:01)
 

Но ведь так не получается как я хотел, что бы переменная GET не показывалась в виде &region=, в примере вашего кода при выборе любого региона он правильно работает и выводит нужный регион, но если после выбранного региона выбрать "Выбрать регион" то ничего не происходит

  Ответить  
 
 автор: mister_pipin   (19.07.2012 в 19:26)   письмо автору
 
   для: mister_pipin   (19.07.2012 в 19:14)
 

Вот код по которому я проверял

<?php
$arr 
= array('1'=>'Первый регион''2'=>'Второй регион''3'=>'Третий регион');
$region $_GET['region'];
?> 
<form method="get" name="form" action="./del.php">
    <select name="region" onchange="if(this.value) this.form.submit();">
         <option value="" >Выбрать регион</option> 
        <?php
        
        
foreach($arr as $key => $value){
            if(
$region == $key){
                echo 
'<option value='.$key.' selected>'.$value.'</option>';
            }
            else{
                echo 
'<option value='.$key.'>'.$value.'</option>';
            }
        }
        
?>

    </select>
</form>

  Ответить  
 
 автор: confirm   (19.07.2012 в 22:24)   письмо автору
 
   для: mister_pipin   (19.07.2012 в 19:26)
 

Вы вообще соображаете, какую хрень сморозили ранее?
Вам что вообще надо? Если вам нужно получать и пустое значение, значит отправляйте форму без условий. Если при этом вам страшно, что ключ region в адресной строке не имеет значение, отправляйте методом POST.
А это, что вы привели к проверке отношения не имеет никакого, это просто вывод списка с отметкой выбора пользователя. И пишут подобное так:
<?
   
foreach($arr as $key => $value) echo '<option value='.$key.($region == $key ' selected' '').'>'.$value.'</option>';

  Ответить  
 
 автор: mister_pipin   (19.07.2012 в 23:30)   письмо автору
 
   для: confirm   (19.07.2012 в 22:24)
 

я написал тоже самое, только не в такой сокращенной форме. POST запрос тут не нужен, он будет лишний, нужен GET.

  Ответить  
 
 автор: confirm   (19.07.2012 в 23:37)   письмо автору
 
   для: mister_pipin   (19.07.2012 в 23:30)
 

Вы пишите лишнее.
Большая разница каким методом передать форму?
Передавайте GET, если это так важно для вас.
Запомните, элементы формы не имеющие имени на сервер не передаются, то есть то, что вы пытались вернуть назад без имени, вам вообще ничего не передаст.
Если вы хотите, чтобы после первого выбора пользователя он уже не мог выбрать опцию "Выберите...", то при возврате формы не выводите эту опцию списка.

  Ответить  
 
 автор: mister_pipin   (19.07.2012 в 23:53)   письмо автору
 
   для: confirm   (19.07.2012 в 23:37)
 

Данная форма нужна только для того что бы передать параметр ГЕТ в командную строку(благодаря этому сервер обработает данный параметр как нужно). Но если же пользователь меняет значение и в конечном итоге выбирает "Самое первое" код должен приобрести исходное состояние. Поэтому спрашиваю у Вас совет

  Ответить  
 
 автор: confirm   (20.07.2012 в 00:01)   письмо автору
 
   для: mister_pipin   (19.07.2012 в 23:53)
 

Что значит исходное состояние? Если это выбранная опция "Выбрать...", то чего тогда вы боретесь с пустым значением параметра?
Я не хочу решать ваших загадок "передать в командную строку...", нет у браузера командной строки, есть адресная. Напишите просто словами чего вам надо в зависимости от условий, а то по вашим действиям в коде не понять, то вы боретесь с параметром, то он вам нужен...

  Ответить  
 
 автор: mister_pipin   (20.07.2012 в 00:50)   письмо автору
 
   для: confirm   (20.07.2012 в 00:01)
 

Когда страница открывается по умолчанию адрес сайта имеет вид
http://site/

после того как выбираю регион, адресная строка принимает вид исходя из выбранного региона
http://site/?region=1
http::/site/?region=2

и так дальше.
но когда я выбираю "Выбрать регион" (вот оно исходное состояние), адресная строка должна принять вид первоначальный
http://site/

Реально ли сделать подобное?
Заранее спасибо

  Ответить  
 
 автор: confirm   (20.07.2012 в 02:57)   письмо автору
 
   для: mister_pipin   (20.07.2012 в 00:50)
 

Если ваш список ради этого, типа навигатора, то зачем вообще форма и ее отправка? Пропишите в качестве значений опций нужные url и меняйте адрес объекта location:
<select onchange="location.href = this.value">
<option value="http://site/">Выберите...</option>
<option value="http://site/?region=1">Регион 1</option>
<option value="http://site/?region=2">Регион 2</option>
<option value="http://site/?region=3">Регион 3</option>
</select>

  Ответить  
 
 автор: mister_pipin   (20.07.2012 в 11:41)   письмо автору
 
   для: confirm   (20.07.2012 в 02:57)
 

А это идея, спасибо, попробую

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

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