За последние 24 часа нас посетили 17193 программиста и 1594 робота. Сейчас ищет 1181 программист ...

как остановить на выбраном месте в селекте

Тема в разделе "PHP для новичков", создана пользователем leon2009, 25 апр 2020.

  1. leon2009

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

    С нами с:
    1 янв 2015
    Сообщения:
    104
    Симпатии:
    0
    Здравствуйте! почему прыгает селект? т.е. я выбираю город, по теории в select он должен остаться, а вместо этого возвращается на первую строчку(город).
    PHP:
    1. <?php
    2. echo "<form method=post>";
    3. echo "<select  name=\"cityeng\" onchange=\"this.form.submit()\">";
    4. foreach(glob('db/city.dat') as $filename)
    5. {
    6. $file_handle = fopen($filename, "r");
    7. while (!feof($file_handle))
    8. {
    9.     $line = fgets($file_handle);
    10.     echo "<option>$line</option>";
    11.     }
    12. fclose($file_handle);
    13. echo "</select></form>";
    14. }
    15. if($_POST['cityeng'])
    16. {
    17. $s_city =  substr(htmlspecialchars(trim($_POST['cityeng'])), 0, 100);
    18. }
    19. echo "<form id='form1' method='post' action='index.php'>
    20. <div class=hidden><input type=text name=cityeng value=$s_city></div>
    21. </div>";
    22.  
    23. echo $s_city;
    24. ?>
    citi.dat

     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.853
    Симпатии:
    748
    Адрес:
    Татарстан
    Потому что не надо ссылки в option ставить.... Да и вообще зачем две формы?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
  4. leon2009

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

    С нами с:
    1 янв 2015
    Сообщения:
    104
    Симпатии:
    0
    можно примерчик? если список читаю с XML то все норма! а с текстовика... возвращаться на первый город, а не тот который выбрал.
    PHP:
    1. <form method=post>
    2. <div class=selectind>";
    3. if(!empty($xml_city->city->page))
    4. {
    5.    $agrs = $xml_city->city->page;
    6.    echo "<select  name=\"cityeng\" onchange=\"this.form.submit()\">";
    7.     foreach ($agrs as $vals)
    8.     {
    9.     $selected = '';
    10. if ($_POST['cityeng'] == $vals[ob]) $selected = 'selected';
    11. echo  "<option value=\"" . $vals[ob] . "\" " . $selected . ">" . $vals . "</option>";
    12.    
    13. }
    14.     echo "</select></form>";
    15. }
    16. if($_POST['cityeng'])
    17. {
    18. $s_city =  substr(htmlspecialchars(trim($_POST['cityeng'])), 0, 100);
    19. }
    20. echo "<form id='form1' method='post' action='index.php'>
    21. <div class=hidden><input type=text name=cityeng value=$s_city></div>
    22. </div>";
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.853
    Симпатии:
    748
    Адрес:
    Татарстан
    Куда подробнее то?
    Вы сначала ответьте зачем две формы? Для того что просто были?

    По сути вопроса - вы посмотрите чем текстовый файл от хмл отличается. В текстовом у вас в качестве элементов option - ссылки! Понимаете? Выбрав какой то пункт select вы переходите по ссылке.. честно говоря такой бред вижу впервые
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.576
    Симпатии:
    1.759
    Видим разницу?
    Ну и как сказали, пихать ссылки в select супер странно.
     
  8. leon2009

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

    С нами с:
    1 янв 2015
    Сообщения:
    104
    Симпатии:
    0
    :( проще код написал, что б разобраться
    PHP:
    1.  <form name=sender method=post onchange="this.form.submit()" >
    2. <select name="cityeng" onchange="this.form.submit()">
    3. <option>1</option>
    4.   <option>2</option>
    5.    <option>3</option>
    6. </select>
    7. </form>
    8. <?php
    9. if($_POST['cityeng'])
    10. {
    11. $s_city =  substr(htmlspecialchars(trim($_POST['cityeng'])), 0, 100);
    12. }
    13. echo "<input type=text name=gorod value=$s_city></div>";
    14. ?>
    в option значение меняется :( выбрал 3, после отправки оно меняется на 1 :(
    --- Добавлено ---
    это то что на ум пришло:
    PHP:
    1.  <form name=sender method=post  >
    2. <select name="cityeng" onchange="this.form.submit()">
    3. <?php
    4. if($_POST['cityeng'])
    5. {
    6. $s_city =  substr(htmlspecialchars(trim($_POST['cityeng'])), 0, 100);
    7. }
    8. echo " <option>1</option>
    9.  <option selected>".$s_city."</option>
    10.   <option>3</option>";
    11. ?>
    12. </select>
    13. </form>
     
  9. leon2009

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

    С нами с:
    1 янв 2015
    Сообщения:
    104
    Симпатии:
    0
    а в с файлом не прокатило :(:(:(
    PHP:
    1.  <form name=sender method=post  >
    2. <select name="cityeng" onchange="this.form.submit()">
    3. <?php
    4. if($_POST['cityeng'])
    5. {
    6. $line =  substr(htmlspecialchars(trim($_POST['cityeng'])), 0, 100);
    7. }
    8. foreach(glob('db/city.dat') as $filename)
    9. {
    10. $file_handle = fopen($filename, "r");
    11. while (!feof($file_handle))
    12. {
    13.     $line = fgets($file_handle);
    14.     echo "<option selected>$line</option>";  
    15. }
    16. fclose($file_handle);
    17. echo "</select></form>";
    18. };
    19. ?>
    20. </select>
    21. </form>
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.576
    Симпатии:
    1.759
    @leon2009, я тебе прямо показал на строчки разницы, почему в одном случае прокатывает, в другом нет, из твоих же листингов. Ну обязательно что-ли в рот ложить прямо?