28.04.2017, 22:03
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Sakhet
|
Я не понимаю, что значит склеивать.
|
То что вы пытаетесь сделать и что вам предлагают, это соединение значений нескольких флажков в строку. Остается понять, это ли ожидает сервер?
Код по второй ссылке, это не клиентский код, а серверный, прием данных, и в нем описана обработка массива (!) меток (значений флажков), а не склеенных в строку нескольких значений.
Для того чтобы действительно знать как поступить правильно, нужно знать организацию хранения тегов на сервере и их связей. Сомнительно, чтобы хранение тегов было в навал и запрос бы пытался в них найти произвольный набор, такое возможно только в полнотекстовом поиске по заданной логике.
|
|
28.04.2017, 22:04
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от Sakhet
|
Да, если есть теги "труля-ля" "опа-на". Поставьте себе Wordpress куда-нибудь и вы сами увидите. Я не обманываю.
Вот ошибка, её показывает браузер.
Дальше я подтверждаю действие и ничего. Вообще ничего.
Тестирую не на сервере, а на своем компьютере в браузере. Но сервер мне тут и не нужен, т.к. javascript исполняется в брауере у клиента, и уже дальше отправляет нужный запрос.
Вот, к примеру я пробовала так сделать:
<form action="http://localhost/wp/" method="get">
<div><select name='cat' id='category' class='postform' >
<option value='0'>Выберите категорию</option>
<option value="1">Категория 1</option>
<option value="2">Категория 2</option>
</select>
<select name="tag">
<option value=''>Выберите тэг</option>
<option value="tag1">Тэг1</option>
<option value="tag2">Тэг2</option>
<option value="tag3">тэг3</option>
</select>
<input type="submit" value="Submit">
</div></form>
И такой вариант работает прямо в браузере, но WP ищет только по одной категории и одному тэгу. А вот, чтобы по одной категории и нескольким тегам, нужно разделять их плюсами. И вот сделать так, чтобы были "+" не получается.
Если добавить в мой код еще раз:
<select name="tag">
<option value=''>Выберите тэг</option>
<option value="tag1">Тэг1</option>
<option value="tag2">Тэг2</option>
<option value="tag3">тэг3</option>
</select>
То форма выдаст в адресную строку: http://localhost/wp/?cat=1&tag=1&tag=2
Такой вариант тоже работает в WP, но ищет как попало. С плюсами же, ищет как надо.
|
Вот теперь стало понятно-вы не знаете,как работает форма.
Если форма работает без скрипта, то она отправляет значение всех полей: имя=значение
У вас это первый вариант.
Если же форма работает со скриптом- как в примере рони или моем- то там отменяются действия по умолчанию и посылка формируется программным образом. Но в наших примерах не производится отправка на сервер, а выдается сообщение со сформированной строкой отправки, которое вы сочли сообщением об ошибке.
С отправкой на сервер-мой последний пример
|
|
29.04.2017, 14:57
|
Интересующийся
|
|
Регистрация: 28.04.2017
Сообщений: 12
|
|
Скопировала ваш последний пример. Загрузила за сервер (localhost), в одну папку поместила index.html и test.php. Не работает. Просит подтвердить действие и ничего дальше не происходит.
Изображение с ошибкой.
|
|
29.04.2017, 15:31
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Sakhet,
Это не ошибка, это сообщение, вернувшееся на клиент с сервера - программа test.php правильно приняла tag и вернула его в ответ.
Вы что, совсем не понимаете программы?
|
|
29.04.2017, 16:40
|
Интересующийся
|
|
Регистрация: 28.04.2017
Сообщений: 12
|
|
Не понимаю. Понимала бы, не приходила на форум за помощью.
И мне это не нужно. В смысле программа test.php это не то, что нужно. Нужно, чтобы скрипт молча передавал в адресную строку example.ru/?cat=1&tag=tag1+tag2+tag3+tagN без подтверждений каких-либо.
|
|
29.04.2017, 19:48
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Все, я сдаюсь
<!DOCTYPE html>
<html>
<head>
<title>Test Tags</title>
</head>
<body>
<form>
Тег 1<input type="checkbox" name="tag1" value = "Тег1"><br>
Тег 2<input type="checkbox" name="tag2" value = "Тег2"><br>
Тег 3<input type="checkbox" name="tag3" value = "Тег3"><br>
<input type="submit" value="Отправить">
</form>
<script>
document.querySelector('form').onsubmit = function (e) {
e.preventDefault();
var data = "cat=1&tag=";
var boxes = document.querySelectorAll('input[type="checkbox"]:checked');
for (var i = 0; i < boxes.length; i++) {
data += (i == 0 ? "" : "+") + boxes[i].value;
}
window.location = "example.ru/?" + data;
}
</script>
</body>
</html>
Последний раз редактировалось Dilettante_Pro, 29.04.2017 в 20:33.
|
|
29.04.2017, 21:42
|
Интересующийся
|
|
Регистрация: 28.04.2017
Сообщений: 12
|
|
Идеально. Это как раз именно то, что мне так нужно.
Спасибо вам большое.
|
|
02.05.2017, 18:29
|
Интересующийся
|
|
Регистрация: 28.04.2017
Сообщений: 12
|
|
Здравствуйте.
Прошу меня простить за наглость, но как в скрипт добавить выпадающий список, чтобы поиск еще и по категориям велся?
example.ru/?cat=1&tag=tag1+tag2+tag3+tagN
cat=N - это id категории.
Вот, как я писала ранее в моей попытке реализовать:
<form action="http://localhost/wp/" method="get">
<div><select name='cat' id='category' class='postform' >
<option value='0'>Выберите категорию</option>
<option value="1">Категория 1</option>
<option value="2">Категория 2</option>
</select>
<select name="tag">
<option value=''>Выберите тэг</option>
<option value="tag1">Тэг1</option>
<option value="tag2">Тэг2</option>
<option value="tag3">тэг3</option>
</select>
<input type="submit" value="Submit">
</div></form>
|
|
|
|