Параметр появляется в URL только после второго нажатия кнопки

#php

#php

Вопрос:

У меня странная проблема с моей формой поиска. После того, как я ввожу ключевое слово и выполняю поисковый запрос, я получаю пустое значение параметра.

Например, я ввожу в поле поиска слово «что-то»

Я вижу пустое значение:

 search.php?keyword=
  

После этого я ввожу ключевое слово «else» и получаю:

search.php?keyword=something вместо search.php?keyword=else

Они каким-то образом появляются с «одним шагом назад»

Я пытался выполнить отладку с помощью print_r и var_dump, но я могу напечатать только некоторые значения, которые не объясняют мою проблему.

Я упускаю что-то очень тривиальное?

Вот что у меня есть:

Функция моего класса:

 public function show_search_result() {


        $this->search_keywords = strip_tags($_GET['keyword']);

        $this->_db->query("SELECT * from posts WHERE post_title LIKE '%$this->search_keywords%' OR post_content LIKE '%$this->search_keywords%' LIMIT 100");
        $this->rows_results_found = $this->_db->resultset();
    }
  

И моя форма:

 <form action="search.php?keyword=<?php
                    if (isset($search_results->rows_results_found) amp;amp; isset($_POST['search_requested'])) {
                        print strip_tags($_POST['search_keywords']);
                    }
                    ?>" method="post">
                        <input type="hidden" name="search_requested">
                        <input type="text" name="search_keywords" value="<?php
                        if (isset($search_results->rows_results_found) amp;amp; isset($_POST['search_requested'])) {
                            print strip_tags($_POST['search_keywords']);
                        }
                        ?>"><input type="submit" value="Search">
                    </form>
  

Комментарии:

1. вместо этого ваше имя для ввода текста — это name="search_keywords" когда вы ищете keyword ..

2. Также почему вы смешиваете GET amp; POST ? Он будет установлен только во втором раунде ( когда они выполнят поиск ), потому что у POST элемента есть значение.

3. Я понял, что я сделал с получением и отправкой. Я исправил это. Все с GET и это поведение исчезло.

Ответ №1:

  <form action="" method=get>
    <input type=text id=se>
       <?php 
           if($_GET != null){
              $sekw = $_GET ['se'];
              $sql = //the query like='$sekw' limit=100;
       ?>
 <input type=submit>
 </form>
  

Простой код.

Ваша проблема в том, что при отправке формы ключевые слова сохраняются до второй отправки.

Комментарии:

1. Вам нужно улучшить этот ответ, он выходит за рамки низкого качества.

2. Да, извините, я на телефоне.

3. @wwwanaya Я на телефоне ? Серьезно? Это Интернет, ему не нужно взаимодействие в реальном времени. Никого не волнует, разговариваете ли вы по телефону, просто завершите звонок и напишите полезный ответ впоследствии. Или кто-то заставил вас написать ответ во время вашего звонка?!

4. Я в приложении телефона, а не в вызове.

Ответ №2:

измените свой метод с post на get. также я бы посоветовал вам использовать фреймворк для простого и быстрого кодирования. некоторые включают symfony2, laravel