Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 53
1

Правильный вывод формы поиска на экран

22.11.2015, 20:11. Показов 1458. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Повторюсь еще раз: в анкете пользователя есть три переменные $metrofirst, $metrosecond, $metrothird
Мне удалось:
  1. Создать поле выбора значения переменной из выпадающего списка
  2. Сделать грамотный вывод переменной на странице анкеты
  3. Написать поисковый запрос для трех переменных
  4. Сделать форму поиска в виде выбора значения выпадающего меню
Теперь стоит задача объединить в одну поисковую форму поиск по значениям трех переменных. Что имею?

Поисковых запрос для трех переменных:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if ($_POST['metrofirst']) {
        $metrofirst = (int)$_POST['metrofirst'];
        $metrofirst = (string)$_POST['metrofirst'];
        $meta_query[] = array(
            'key' => 'metrofirst',
            'value' => $metrofirst,
            'compare' => '='
        );
    }   
    
    if ($_POST['metrosecond']) {
        $metrosecond = (int)$_POST['metrosecond'];
        $metrosecond = (string)$_POST['metrosecond'];
        $meta_query[] = array(
            'key' => 'metrosecond',
            'value' => $metrosecond,
            'compare' => '='
        );
    }   
    
    if ($_POST['metrothird']) {
        $metrothird = (int)$_POST['metrothird'];
        $metrothird = (string)$_POST['metrothird'];
        $meta_query[] = array(
            'key' => 'metrothird',
            'value' => $metrothird,
            'compare' => '='
        );
    }
РАБОЧАЯ! Форма поиска только для переменной $metrofirst
PHP
1
2
3
4
5
6
7
8
9
10
11
                    <div class="form-label">
                        <label for="metrofirst"><?php echo "Поиск по метро (beta):"; ?></label>
                    </div>
                    <div class="form-input">
                        <select name="metrofirst" id="metrofirst" class="metrofirst">
                            <option value=""><?php echo "Выберите станцию метро"; ?></option>
                            <?php foreach($metro_a as $key=>$m) { ?>
                                <option value="<?php echo $key; ?>"<?php if($metrofirst == $key) { echo ' selected="selected"'; } ?>><?php echo $m; ?></option>
                            <?php } ?>
                        </select>
                    </div>
Мне нужно в форму поиска объединить все три переменные, чтобы не делать три формы поиска.
Искал вариант решения здесь с помощью if else но это привело страницу к падению. В PHP очень не силен, помогите пожалуйста дописать правильную форму поиска!
PHP
1
<?php if($metrofirst == $key) { echo ' selected="selected"'; } ?>
Добавлено через 1 час 57 минут
HTML5
1
<select name="metrofirst"
Как можно в селекторе name задать несколько имен? ):

Добавлено через 4 часа 10 минут
Неужели никто не знает? ):
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2015, 20:11
Ответы с готовыми решениями:

Не правильный вывод на экран.
Здравствуйте. Только начинаю изучать C++ Есть такой код #include &quot;stdafx.h&quot; #include &quot;conio.h&quot;...

Правильный вывод сообщения на экран
Как правильно с помощью QMessageBox вывести окно с текстом на экран, по аналогии с MessageBox. ...

Суммирование элементов массива и правильный вывод суммы на экран
Программа определяет, сколько экспертов сказали, что товар i лучше товара j. По всем товарам. Такая...

вывод запроса из формы поиска
у меня на сайте 30 блоков div,у каждого блока свое название.когда в форме поиска по сайту я в вожу...

30
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 53
22.11.2015, 21:30  [ТС] 21
Author24 — интернет-сервис помощи студентам
Куда можно нарисовать?))
Я сам вижу, что донести не могу идею)

Добавлено через 4 минуты
А нельзя сделать одним селектом?)

Добавлено через 2 минуты
Тобишь то, что Вы говорите логично и безусловно работает!
Но мне в ПОИСКЕ нужен лишь один селект который будет включать в себя поиск по всем трем переменным, а значит при регистрации три селекта (3 списка и три переменные), а в поиске 1 селект (1 список поиска по трем переменным)

Добавлено через 3 минуты
Я могу прямо совсем по тупому и не правильно, я знаю, но чтобы Вы поняли)
PHP
1
2
3
4
5
6
7
8
<div class="form-input">
                        <select name="metro" id="metro" class="metro">
                            <option value=""><?php echo "Выберите станцию метро"; ?></option>
                            <?php foreach($metro_a as $key=>$m) { ?>
                                <option value="<?php echo $key; ?>"<?php if($metrofirst == $key) or($metrosecond == $key) or($metrothird == $key) { echo ' selected="selected"'; } ?>><?php echo $m; ?></option>
                            <?php } ?>
                        </select>
                    </div>
Тобишь в поиске 1 селект, который учитывает выбранные значения в 3х селекатх при регистрации
Я, наверное, дико тупой...
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.11.2015, 23:12 22
karkomak, Пока не сможешь донести нормально не сможем понять чего ты хочешь
скорой всего у тебя так же как здесь
Как передать тегом Select несколько переменных

Добавлено через 10 минут
karkomak, хотя можно попробовать что то вроде этого создаёшь один селект со списком своих станций
раз они у тебя все равно берутся с одного массива
PHP
1
2
3
4
5
6
7
8
<div class="form-input">
<select name="metro_search[]"  multiple size="4" >
    <option value=""><?php echo "Выберите станции метро"; ?></option>
    <?php foreach($metro_a as $key=>$m) { ?>
    <option value="<?php echo $key; ?>"<?php if($metrofirst == $key) { echo ' selected="selected"'; } ?>><?php echo $m; ?></option>
            <?php } ?>
</select>
</div>
тут получаем список с возможностью выбрать несколько значений как показано http://htmlbook.ru/html/select/multiple

и тогда получаем массив с этим выбором
выбираем несколько значений и нажимаем кнопку поиска и смотрим что получили

PHP
1
2
3
4
if (isset($_POST['search'])) {
    var_dump($_POST['metro_search']);
    
}
выведет массив с выбранными значениями, потом значения можешь использовать как хочешь
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 53
22.11.2015, 23:21  [ТС] 23
Спасибо, буду пробовать. Наверное я выбрал далеко не тот метод решения задачи. Изначально все довольна-таки просто.

1. При регистрации анкеты человек из предлагаемого списка должен выбрать от 1 до 3 штук станций метро.
2. После сохранения анкеты, выбранные станции должны выводится на экран в профиле анкеты.
3. На сайте должна быть форма поиска по станциям метро в виде выпадающего списка.

Как-то так.

Вывод в форме заранее созданного списка (в моем случае массива данных из станций метро) сделан с целью исключить орфографические ошибки при заполнении анкеты профиля, ну по сути дать выбор из списка.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.11.2015, 23:23 24
Цитата Сообщение от karkomak Посмотреть сообщение
3. На сайте должна быть форма поиска по станциям метро в виде выпадающего списка.
так а зачем надо сразу 3 станции выбирать, сделай с одной и ищи совпадения
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 53
22.11.2015, 23:29  [ТС] 25
Так одну в поиске и выбираем!)
А при регистрации указываем три станции, вот.

Добавлено через 2 минуты
Но в данном примере, который я опубликовал выше, он ищет только по значениям поля $metrofirst и если я указываю в форме поиска значение которые висит в $metrosecond он не выдает результата поиска.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.11.2015, 23:30 26
Цитата Сообщение от karkomak Посмотреть сообщение
Так одну в поиске и выбираем!)
А при регистрации указываем три станции, вот.
Да
Так в чем проблема? Эти три станции пишутся в БД в одну ячейку таблицы или в разные?
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 53
22.11.2015, 23:31  [ТС] 27
Разные) три ячейки: metrofirst, metrosecond, metrothird
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.11.2015, 23:37 28
Цитата Сообщение от karkomak Посмотреть сообщение
Разные) три ячейки: metrofirst, metrosecond, metrothird
ну и создай запрос типа
SQL
1
SELECT * FROM `table_name` WHERE `metrofirst`='значение с селекта' OR `metrosecond`='значение с селекта' OR `metrothird`='значение с селекта'
и выводи всех кто попал в эти критерии
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 53
22.11.2015, 23:41  [ТС] 29
Легко сказать)
Я в этих вопросах очень шаток. Ладно, сейчас посмотрим, что мне скажет гугл)
Спасибо!
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.11.2015, 23:45 30
Цитата Сообщение от karkomak Посмотреть сообщение
Легко сказать)
Я в этих вопросах очень шаток. Ладно, сейчас посмотрим, что мне скажет гугл)
что то я не понимаю, Вы же делаете запись в БД по средством запроса например
PHP
1
mysqli_query($link, "INSERT .....");
так же сделайте выборку
PHP
1
2
mysqli_query($link, "SELECT * FROM `table_name` WHERE `metrofirst`='значение с селекта' OR `metrosecond`='значение с селекта' OR `metrothird`='значение с селекта'
");
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 53
23.11.2015, 12:46  [ТС] 31
Я делал более тривиально, по аналогии кода шаблона.
Напрямую, именно осознано запросы не делал) Все бывает в первый раз)

Добавлено через 14 минут
PHP
1
2
3
4
5
6
7
8
9
if ($_POST['metrofirst']) {
            $metrofirst = (int)$_POST['metrofirst'];
            $metrofirst = (string)$_POST['metrofirst'];
            $meta_query[] = array(
                'key' => 'metrofirst',
                'value' => $metrofirst,
                'compare' => '='
            );
        }
Выборка у меня вот осуществлялась, но как видите только по значению metrofirst

Добавлено через 10 часов 48 минут
Выходит, что нужно так?
Еще раз повторюсь, я здесь "здравствуй дерево", но понять хочется!

MySQL
1
$sql = "SELECT `metrofirst`, `metrosecond`, `metrothird`  FROM `wp_postmeta` WHERE `metrofirst` LIKE '%$m%' OR `metrosecond` LIKE '%$m%' OR `metrothird` LIKE '%$m%' ";
Сама поисковая форма выглядит так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
                        <!-- METRO -->
                        <div class="form-label">
                            <label for="metrofirst"><?php echo "Поиск по метро (beta):"; ?></label>
                        </div>
                        <div class="form-input">
                            <select name="metrofirst" id="metrofirst" class="metrofirst">
                                <option value=""><?php echo "Выберите станцию метро"; ?></option>
                                <?php foreach($metro_a as $key=>$m) { ?>
                                    <option value="<?php echo $key; ?>"<?php if($metrofirst == $key) { echo ' selected="selected"'; } ?>><?php echo $m; ?></option>
                                <?php } ?>
                            </select>
                        </div><div class="formseparator"></div>
                        <!-- //METRO -->
Добавлено через 1 час 55 минут
Ничерта не получается, не хватает мозгов создать запрос...
Других методов нет?

Условно:
HTML5
1
<select name="metrfirst" name="metrosecond"></select>
0
23.11.2015, 12:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2015, 12:46
Помогаю со студенческими работами здесь

Вывод на экран результатов поиска
Здрасте! В тексте есть слово с буквой д. Я хочу найти это слово и вывести его экран....

Бинарное дерево поиска (вывод на экран)
Бинарное дерево поиска (вывод на экран) Помогите, не могу вывести нормально дерево на экран,...

Вывод второй формы на экран
Подскажите пожалуйста, как чтобы при выполнения условия if выводилась вторая форма на экран и...

Вывод на экран всех элементов формы
Здравствуйте, уже достаточно долго хожу вокруг да около, но не могу понять как делать одну вещь......


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru