помогите кто знает... можно ли вообще это сделать..... есть три селекта для выбора страны, региона и города, с помощью скрипта выбирается регион в зависимости от страны и город в зависимости от региона, короче все как обычно id страны, города и региона передаются GET и сидят в адресной строке (country=6®ion=42&city=218) ПРОБЛЕММА в том, как сделать так чтобы названия страны, города и региона в форме были установлены те, которые соответствуют значениям в адресной строке (если они есть) вот код одного селекта: <!-- Select для страны --> <select name="country" onChange="onChange(this,'1');document.getElementById('region').disabled=''; document.getElementById('city').innerHTML='';" class="input"> <option value='0'>- Выберите страну -</option> <?php function sel_country($a) { $b = isset($_POST['country'])?$_POST['country']:NULL; if($a == $b) { return 'selected="selected"'; }} switch ($_SESSION['lang']) { case '1' : $query_country = "SELECT country_id,country_rus as name FROM country"; break ; } $res = mysql_query($query_country, $site) or die(mysql_error()); // выводим все строки из столбца name таблицы country while($row = mysql_fetch_array($res)) echo "<option ".sel_country($row['country_id'])." value='" . $row['country_id'] . "'>" . $row['name'] . "</option>"; mysql_free_result($res); ?> </select>
serj011 Например, у тебя страна - это переменная $co. В строке адресной она у тебя такова - index.php?co=22 Потом когда ты выводишь весь список стран в цикле, делаешь одну фигнюшку. PHP: <?php echo '<select name="co">'; $country_ar = mysql_query("SELECT * FROM `countries`"); while($country = mysql_fetch_assoc($country_ar)) { if($co == $country['id']) $temp = ' selected'; else $temp = null; echo '<option value="'.$country['id'].'"'.$temp.'>'.$country['name'].'</option>'; } echo '</select>'; при проходе цикла твоя $co будет сверяться с текущей страной, и если они равны - значит выделяем как выбранный. всякие проверки и прочая лапша уже должна быть понятной
Апельсин Теоритически я суть понял, но практически не получается если тебе не трудно, напиши на моем примере как нужо сделать...
$country = isset($_POST['country'])?(int)$_POST['country']:0; while($row = mysql_fetch_array($res)) { if($country == $row['country_id']) $temp = ' selected'; else $temp = null; echo "<option value='" . $row['country_id'] . "' '.$temp.'>" . $row['name'] . "</option>"; }
Апельсин не выходит почемуто... посмотри пожалуйста, может где ошибка.... <!-- Select для страны --> <select name="country" onChange="onChange(this,'1');document.getElementById('region').disabled=''; document.getElementById('city').innerHTML='';" class="input"> <option value='0'>- Выберите страну -</option> <?php function sel_country($a) { $b = isset($_POST['country'])?$_POST['country']:NULL; if($a == $b) { return 'selected="selected"'; }} switch ($_SESSION['lang']) { case '1' : $query_country = "SELECT country_id,country_rus as name FROM country"; break ; } $res = mysql_query($query_country, $site) or die(mysql_error()); // выводим все строки из столбца name таблицы country $country = isset($_POST['country'])?(int)$_POST['country']:0; while($row = mysql_fetch_array($res)) { if($country == $row['country_id']) $temp = ' selected'; else $temp = null; echo "<option value='" . $row['country_id'] . "' '".$temp."'>" . $row['name'] . "</option>"; } mysql_free_result($res); ?> </select>
Апельсин, спасибо получилось работает, но только без этой строки $country = isset($_POST['country'])?(int)$_POST['country']:0; оно как то сразу непонятно для чего она нужна была...
у меня только вот другая проблемма не получаеться также сделать с регионом и городом... НОЧЕГО НЕ МОГУ ПОНЯТЬ может быть из за того что там немного другая структура кода!? а может не получаться из за того что регион и город подсажуються с помощью скрипта в зависимости от страны???? СДЕЛ ВЕДЬ ТАК ЖЕ САМО <!-- Select для региона --> <select name="region" id="region" <?=($_POST['country']?'':'disabled="disabled"')?> onChange="onChange(this,'2');document.getElementById('city').disabled='';" class="input" /> <option value='0'>- Выберите регион -</option> <?php function sel_region($a) { $b = isset($_POST['region'])?$_POST['region']:NULL; if($a == $b) { $_SESSION['recoun']='poi' ; return 'selected="selected"'; } } if(isset($_POST['country'])) { switch ($_SESSION['lang']) { case '1' : $query = "SELECT region_id,region_rus as name FROM `region` WHERE `country_id`='".(int)$_POST['country']."'"; break ; } $res = mysql_query($query); while($row = mysql_fetch_array($res)) { if($region == $row['region_id']) $temp_r = ' selected'; else $temp_r = null; echo "<option ".sel_region($row['region_id'])." value='" . $row['region_id'] . "'".$temp_r.">" . $row['name'] . "</option>"; } mysql_free_result($res); } ?> </select>