За последние 24 часа нас посетили 63370 программистов и 1740 роботов. Сейчас ищут 799 программистов ...

запоминание выбранного города

Тема в разделе "Прочие вопросы по PHP", создана пользователем xweb, 14 апр 2016.

  1. xweb

    xweb Новичок

    С нами с:
    14 апр 2016
    Сообщения:
    2
    Симпатии:
    0
    Привет всем, имеется вот такая форма:

    <form action="gorod.php" method="post">
    <select name="city_select">
    <option value="0" selected>Выберите свой город для покупки товара</option>
    <option value="1"> Город1 </option>
    <option value="2"> Город2</option>
    </select>
    <input type="submit" value="Нажать для перехода"/>
    </form>

    Суть в том, что выбрав город, человека должно редиректить на index.php и прописывать в спан выбранный им город по кукам
    <span class="city_selected"></span>

    Содержимое gorod.php:
    <?php

    $cities = array(
    "Выберите...",
    " Абаза ",
    " Абакан ",
    " Яхрома "



    );

    if (isset($_POST['city_select'])) // обработка селекта
    {
    $city_id = (int) $_POST['city_select'];
    if ($city_id>0)
    {
    //$query = "SELECT `name` FROM `cities` WHERE `id` = '{$city_id}'";
    //$result = mysql_query($query);
    //if ($row = mysql_fetch_assoc($result)) {

    if (isset($cities[$city_id]))
    {
    //$city_name = $row['name'];

    $city_name = $cities[$city_id];

    setcookie('city_select', $city_name);
    setcookie('city_select_id', $city_id);
    header("Location: /?/".$city_id);
    die();
    }
    }
    }
    ?>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">


    <select name="city_select">
    <option value="0"<?php if (!(isset($_COOKIE['city_select']))) echo " selected"; ?>>Выберите свой город </option>
    <?php
    $i = 1;
    //while($row = mysql_fetch_assoc($result))
    while(isset($cities[$i]))
    {
    echo "<option value="{$i}"";
    if (isset($_COOKIE['city_select_id']))
    {
    if ($_COOKIE['city_select_id']==$i) echo " selected";
    }
    echo ">{$cities[$i]}</option>";
    $i++;
    }

    ?>
    </select> <input type="submit" value="Нажать для перехода"/>
    </form>

    Т.е выбрав например Город1 должно кидать на ссылку такого вида index.php/?/1 и с прописанным по кукам <span class="city_selected">Город1</span> но ничего не происходит

    Выдаёт вот такую ошибку:
    Parse error: syntax error, unexpected '{', expecting ',' or ';' in Z:\home\test2.ru\www\gorod.php on line 46
    Помогите пожалуйста разобраться
     
  2. Administrator

    Administrator Старожил
    Администрация Модератор

    С нами с:
    1 янв 1970
    Сообщения:
    10.113
    Симпатии:
    7
    PHP:
    1. echo "<option value="{$i}"";
    Кавычки экранировать надо:

    PHP:
    1. echo "<option value=\"{$i}\"";
    или

    PHP:
    1. echo '<option value="'.$i.'"';
    p.s. новичок а спойлерами пользоваться умет, круто! :)
     
  3. xweb

    xweb Новичок

    С нами с:
    14 апр 2016
    Сообщения:
    2
    Симпатии:
    0
    Спасибо), но теперь денвер начал ругаться вот так:
    Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test2.ru\www\gorod.php:1) in Z:\home\test2.ru\www\gorod.php on line 28

    Warning
    : Cannot modify header information - headers already sent by (output started at Z:\home\test2.ru\www\gorod.php:1) in Z:\home\test2.ru\www\gorod.php on line 29

    Warning
    : Cannot modify header information - headers already sent by (output started at Z:\home\test2.ru\www\gorod.php:1) in Z:\home\test2.ru\www\gorod.php on line 30

    На эти вот строки:
    setcookie('city_select', $city_name);
    setcookie('city_select_id', $city_id);
    header("Location: /?/".$city_id);
    Не подскажете как это исправить?
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    gorod.php - этот файл на первой строке начинает вывод информации, а заголовки (setcookie, header) нужно отправлять до вывода информации.

    Denwer лучше замени на хостинг с SSH или на виртуальный сервер с linux.
    Хочешь дальше мучатся, то поставь хотя бы Open-Server.ru с PHP7.