сохранение значания выпадающего списка.

motobyba

Новичок
сохранение значания выпадающего списка.

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

PHP:
<form  action="index.php" method="POST" enctype="multipart/form-data" onsubmit="MySubmit();">  
  <table width="900" border="0" height="48px">  
  <tr>  
  <td width="164"  align="center" valign="middle" class="vvod"> 
     
    <input type="tel_number" class="long" align="center"   
size="20" name="v_number" tabindex="3" id="find1" value="введите номер"   
onFocus="this.style.backgroundColor='#F0F0F0';this.value='';" onBlur="this.style.backgroundColor='#FFFFFF';  
if (this.value != '') {this.onfocus = function(){this.style.backgroundColor='#F0F0F0';};}   
else this.value='введите номер';"/> 
</td>  
      
        <td width="184"  align="center" valign="middle" class="vvod">  
        <input type="tel_surname"  width="120px" class="long" align="center" size="20" name="v_surname" tabindex="3"  
 id="find2" value="введите фамилию" onFocus="this.style.backgroundColor='#F0F0F0';this.value='';"  
 onBlur="this.style.backgroundColor='#FFFFFF';if (this.value != '') {this.onfocus = function()  
{this.style.backgroundColor='#F0F0F0';};} else this.value='введите фамилию';"/>  
        </td>  
      
           
  <td width="191" align="center" valign="middle">   
                  <select name="v_street" size="1" id="select_street" style="width:140px">  
                  <option first value="" >Выбор улицы</option>  
                <option value="Молокова">Молокова  
                <option value="Одесская">Одесская  
                <option value="Автодоровская">Автодоровская  
                <option value="Корабельная">Корабельная  
                <option value="Ленина">Ленина  
                <option value="ВОРОВСКОГО">воровского  
                </select></td>  
  <td width="194" align="center" valign="middle">  
                  <select name="v_town" size="1" id="select_town"style="width:150px">  
                <option first value="" >Выбор нас.пункта</option>    
                <option value="С БРОД">С БРОД                
                <option value="Л ГОРА ">Л ГОРА                
                <option value="МИГЕЯ">МИГЕЯ                 
                <option value="БАНДУРКА">БАНДУРКА              
               <option value="ЧАУСОВО">ЧАУСОВО               
                </select></td>  
   <td width="125" align="center" valign="middle" class="submit">  
   <input type="submit"  value="Найти" tabindex="6" class="submit" /></td>  
  </tr>  
</table></form>
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
motobyba
Для начала сделай так:

<option value="1">Молокова</option>
и т.д.

Дальше уже виднее будет. Тебе нужно будет запомнить где-то твой выбор в селекте и потом проверить, если выбор скажем равен value="1" то выделить опшн с данными Молокова
 

motobyba

Новичок
важно чтоб было именно <option value="Молокова">Молокова так как value="Молокова" участвует в формировании запроса к БД.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
motobyba
ты мне мозги не парь, ага)) Делай как тебе советуют. А в запросе ставить будешь where id=1
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
motobyba
Что показать, ты не знаешь как вывести данные из mysql? или что-то еще?
 

motobyba

Новичок
я знаю как вывести данные из бд, не знаю как сделать так чтобы после того как я выберу из списка улицу и нажму на ПОИСК, та улица которую я выбрал при обновлении страницы не сбрасывалась, на начальное пустое значение <option first value="" >Выбор улицы</option>
 

eltoko

Новичок
после того как ты нажмешь ПОИСК у тебя index.php получит массив $_POST с данными формы.
когда опять показываешь свою форму проверяй значение $_POST['v_street']:

<option if($_POST['v_street']==="Молокова") { selected="selected" } value="Молокова">Молокова

ну как правильно это написать, думаю сообразишь :) я лишь суть показал нагляднее.
 

motobyba

Новичок
Спасибо огромное, разобрался, все работает! но улиц много, прийдется для каждой улицы делать делать такую провурку?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Видимо о том, что POST массив существует не на всех страницах сайта, а только на тех, куда была отправлена форма, последний оратор не учел...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
motobyba
в общем так:

1. выводишь данные как я написал выше, используешь id/streetname в запросе к бд, надеюсь, что улицы у тебя там лежат как надо. И сделать селект вида <option value="1">Молокова</option> ты сможешь.

2. После того как сделал селект - отправляйешь данные к скрипту, скажем, search.php там смотрим, есть ли параметр:
if(!empty($_POST['v_street'])){
$_SESSION['streetid'] = (int) $_POST['v_street'];
}

аналогично для других параметров, то есть запоминаем их. После того как проверили все данные - делаем редирект, как правильно писать в мануале -> header('location: result.php');

На result.php уже ищем по базе с использованием $_SESSION['streetid'] и т.д. и выводим то, что тебе надо, плюс в форме проверяешь в цикле, если у тебя value в option совпадает с $_SESSION['streetid'] - делаешь ему selected='selected'
 

motobyba

Новичок
буду пробовать, так как много нужно переделывать.
И еще вопрос по бд, список улиц может лучше загнать в отдельную таблицу?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
motobyba
для каждой сущности надо делать отдельную таблицу, будь то город или улица
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Fortop
о чем я и писал... Что то, что ему дали - это не решение а фиг знает что, и рано или поздно - придется переписать все нормально. Через работу с бд и/или сессии
 

motobyba

Новичок
c0dex
в этом то и дело, сначала обрадовался что оно "якобы" что-то сохраняет. но потом то увидел что ет все не так то и просто делается. по этому на данный момент стараюсь следовать тому что ты мне посоветовал, хоть и многое мне дейсвительно еще не понятно. Да, у меня нет никакго опыта, но я пытаюсь что-то делать!
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
motobyba
ну вот и молодец, что непонятно спрашивай.
 

motobyba

Новичок
селект вида <option value="1">Молокова</option> сделал:


PHP:
  $db = mysql_connect ("localhost","lut","12345");
mysql_select_db ("tel", $db); /*Соединяемся с БД*/
$ret = "SELECT * FROM streets";
$resultat = mysql_query($ret) or die('Query failed: ' . mysql_error());
echo "<select name='v_street' size='1' id='' style='width:140px'>";
while ($line = mysql_fetch_array($resultat, MYSQL_ASSOC)) {
    echo '<option value="'.$line['id'].'">'.$line['streets'];
}
echo "</select>\n";
далее мне интерестно, ты сказал что надо отправить данные скрипту search.php в котором смотрим есть ли параметр:
PHP:
if(!empty($_POST['v_street']))
{
	$_SESSION['street_id'] = (int)$_POST['v_street'];
}
тоисть кроме $_POST['v_street'] сюда будут отсылатся и остальные параметры с формы? Например v_number, v_surname, v_town. и что именно происходит в этой строке $_SESSION['street_id'] = (int)$_POST['v_street']; ?
и как тут быть с другими параметрами?
 
Сверху