Помогите с GET запросом.

Тема в разделе "Как сделать...", создана пользователем Serega75, 17 авг 2012.

Статус темы:
Закрыта.
  1. Serega75

    Serega75 Постоялец

    Регистр.:
    17 дек 2008
    Сообщения:
    87
    Симпатии:
    35
    На сайте делаю сортировку, через список отправляю GET запросы вида:
    ?sort_by=created&sort_order=DESC
    ?sort_by=created&sort_order=ASC

    но они ломаются и приходят в таком виде:
    ?sort_by=created%26sort_order%3DDESC
    ?sort_by=created%26sort_order%3DASC

    И нифига не работает, помогите победить это.
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Приложи код, который работает с этими запросами.
     
  3. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Хм, странно.. Куда приходят, как смотрите? Про это в курсе?
     
  4. Serega75

    Serega75 Постоялец

    Регистр.:
    17 дек 2008
    Сообщения:
    87
    Симпатии:
    35
    Там обычный селект:
    HTML:
    <form method="get" class="list_order"
                                          action="/category/ginuwracreph">
                                    <select name="sort_by" onchange='this.form.submit()' style="width:150px" class="styled">
                                        <option value="title&sort_order=ASC">по заголовку</option>
                                        <option value="created&sort_order=DESC" selected="selected">по дате (новые)</option>
                                        <option value="created&sort_order=ASC">по дате (старые)</option>
                                        <option value="changed&sort_order=ASC">по дате изменения</option>
                                    </select>
                                </form>
    В адресную строку смотрю.
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Не html код

    А код движка - php, asp или pl скрипт.
     
  6. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Serega75, когда говорят
    обычно имеют в виду серверный код, который обрабатывает поступивший запрос.
    Это серьезно :) Покажи всё-таки код, который разбирает запрос а затем делает выборку из БД(можно без подробностей по части БД)
     
  7. Serega75

    Serega75 Постоялец

    Регистр.:
    17 дек 2008
    Сообщения:
    87
    Симпатии:
    35
    движек друпал, модулю views делает выборку

    вот так работает:
    HTML:
    <form method="get" class="list_order"
          action="/category/ginuwracreph">
    <select name="sort_by" onchange='this.form.submit()' style="width:150px" class="styled">
        <option value="title">по заголовку</option>
        <option value="created" selected="selected">по дате (новые)</option>
        <option value="created">по дате (старые)</option>
        <option value="changed">по дате изменения</option>
    </select>
    </form>
    но сортирует в одну сторону.
     
  8. motzmo

    motzmo Создатель

    Регистр.:
    20 июн 2007
    Сообщения:
    43
    Симпатии:
    16
    ТС имеет ввиду что его браузер превращает форму гет запроса в галимотью, проблема не сервер сайд.
    вот решение проблемы:
    HTML:
    <html>
    <head>
     
    <script type="text/javascript">
        function OnDropDownChange(dropDown) {
            var selectedValue = dropDown.options[dropDown.selectedIndex].value;
         
            if(selectedValue == 1)
            {
            document.sorting.sort_by.value = "title";
            document.sorting.sort_order.value = 'ASC';
            }
            else if(selectedValue == 2)
            {
            document.sorting.sort_by.value = 'created';
            document.sorting.sort_order.value = 'DESC';
            }
                    else if(selectedValue == 3)
            {
            document.sorting.sort_by.value = 'created';
            document.sorting.sort_order.value = 'ASC';
            }
                    else if(selectedValue == 4)
            {
            document.sorting.sort_by.value = 'created';
            document.sorting.sort_order.value = 'ASC';
            }
            document.sorting.submit();
        }
     
    </script>
    </head>
    <body>
     
    <form method="get" name="sorting" class="list_order" action="/category/ginuwracreph">
                                    <select onChange="OnDropDownChange(this);" style="width:150px" class="styled">
                                    <option>-- sort --</option>
                                        <option value="1">по заголовку</option>
                                        <option value="2">по дате (новые)</option>
                                        <option value="3">по дате (старые)</option>
                                        <option value="4">по дате изменения</option>
                                    </select>
    <input type="hidden" name="sort_by" value="" />
    <input type="hidden" name="sort_order" value="" />
    </form>
                             
                                <body>                        </html>


    функцию OnDropDownChange перенесите в свой .js файл, а так же модифицируйте её и <option> под свой лад


    п.с. проблема в том, что нельзя в value пихать value&var=value&.. как было у вас
     
    Serega75 нравится это.
  9. Kudin

    Kudin Писатель

    Регистр.:
    2 апр 2007
    Сообщения:
    0
    Симпатии:
    0
    Если ссылка ломается в браузере, попробуйте вместо
    Код:
    ?sort_by=created&sort_order=DESC
    ?sort_by=created&sort_order=ASC
    Использовать:
    Код:
    ?sort_by=created&amp;sort_order=DESC
    ?sort_by=created&amp;sort_order=ASC
     
  10. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.722
    Симпатии:
    2.097
    дествительно, почему бы не добавить дополнительный контрол для сортировки? он находится вовнутри формы, принимает нужные значение, поститься вместе с ней, всё будет пучком
    sort_order

    ещё небось друпал проверит sort_by=created&amp;sort_order=ASC и отстрелит всё что после криейтед, так что лучше использовать два контрола с точными параметрами, хотя может и сработать.
     
Статус темы:
Закрыта.