За последние 24 часа нас посетили 202107 программистов и 2180 роботов. Сейчас ищут 1509 программистов ...

selected

Тема в разделе "PHP для новичков", создана пользователем serj011, 2 авг 2010.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    помогите кто знает... можно ли вообще это сделать.....

    есть три селекта для выбора страны, региона и города, с помощью скрипта выбирается регион в зависимости от страны и город в зависимости от региона, короче все как обычно:)

    id страны, города и региона передаются GET и сидят в адресной строке (country=6&region=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>
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    serj011
    Например, у тебя страна - это переменная $co.
    В строке адресной она у тебя такова - index.php?co=22

    Потом когда ты выводишь весь список стран в цикле, делаешь одну фигнюшку.
    PHP:
    1. <?php
    2. echo '<select name="co">';
    3. $country_ar = mysql_query("SELECT * FROM `countries`");
    4. while($country = mysql_fetch_assoc($country_ar))
    5. {
    6. if($co == $country['id']) $temp = ' selected';
    7. else $temp = null;
    8.  
    9. echo '<option value="'.$country['id'].'"'.$temp.'>'.$country['name'].'</option>';
    10. }
    11. echo '</select>';
    при проходе цикла твоя $co будет сверяться с текущей страной, и если они равны - значит выделяем как выбранный.

    всякие проверки и прочая лапша уже должна быть понятной
     
  3. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Апельсин
    Теоритически я суть понял, но практически не получается:)

    если тебе не трудно, напиши на моем примере как нужо сделать...
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    $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>";

    }
     
  5. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Апельсин

    не выходит почемуто... посмотри пожалуйста, может где ошибка....

    <!-- 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>
     
  6. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Апельсин, спасибо получилось:)

    работает, но только без этой строки $country = isset($_POST['country'])?(int)$_POST['country']:0;

    оно как то сразу непонятно для чего она нужна была...
     
  7. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    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>