Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Отправка выбора Select в data-group (https://javascript.ru/forum/jquery/68872-otpravka-vybora-select-v-data-group.html)

Niliya 15.05.2017 12:50

Отправка выбора Select в data-group
 
Есть 2 таблицы mysql.
Первая: sortable в ней колонки ord(отвечает за позицию) id(ai) nick(Varchar имя) rank_name(Varchar должность)
Вторая: sortable2 в ней колонка rank(Varchar unicode_ci) в ней написаны значения которые должны отправляться при выборе в data-group элемента в котором был сделан выбор..

Вот php:
<?php include( 'db_connection.php' );
$select = "SELECT * FROM sortable, sortable2 ORDER BY ord, rank ASC"; 
echo mysql_error();
$perform = mysql_query( $select ); 
echo mysql_error();
while( $array = @mysql_fetch_array( $perform ) ){ 
$id = $array['id'];
$rank = $array['rank'];
$nick = $array['nick'];
$rank_name = $array['rank_name'];
 ?>
<?php require "body.php" ?>
<?php
}
?>


Вот то что в body.php
<figure class="portfolio-item" data-groups='["<?php echo $rank ?>"]'>
<figcaption>
<div class="col-md-4" id='item-<?php echo $id ?>'>
<strong class="st-member-name"><?php echo $nick ?></strong>
<p class="st-member-pos"><?php echo $rank_name ?></p>
////тут много много <div>											</div>
</div>
</div>
<select> <option value="<?php echo $rank ?>"><?php echo $rank_name ?></option>
</select>               
</div>
</div>
</div>        
</figcaption>
</figure>

Фильтры вынесены каждый на кнопку т.е. при нажатии меняется.. Например жму на кнопку Водители и показывает анкеты водителей.. Жму грузчики.. Убирает водителей и показываются грузчики.. Так вот
У меня таких должностей 15 и получается страница "бесконечная" оно дублируется или умножает 15*15 и выводит например: nick Вася rank_name Грузчик 15 раз подряд.. ну с этим разберусь думаю тут чтото связано с UPDATE.. так вот в каждой Анкете человека я установила кнопку <select> в которой выбор все должности. И например Вася стал грузчиком а был водителем)) И должно сработать так чтобы отправило Васю из категории грузчики в категорию водители т.е. смена data-group фильтра самой анкеты где был сделан выбор произошла.. Помогите пожалуйста.. Я просто поставила себе такую задачу научится этому я не делаю не для предприятия не деньги за это не получу и т.д. я делаю для себя.. Вот хочу научится так чтобы при выборе в анкете всю анкету перемещало в другую data-group чтобы фильтр принимал ее там.. :cray: но я похоже не в том разделе создала надо было в php но может тут чтото с джейквери.. Мне ненужно чтобы написали мне код мне нужно помочь подтолкнуть что я делаю не так.. Да и думаю тем кто тут давно тоже интересно будет такая задачка но вам легко.. а мне нет я новенькая(:cray:

laimas 15.05.2017 15:27

echo mysql_error(); - это зачем?

$perform = mysql_query( $select ) or die(здесь вывод ошибок, но выводить их нужно по условию отладки, а вываливать на страницу всем, это плохо);

while( $array = @mysql_fetch_array( $perform ) ){ - убрать собаку, и mysql_fetch_assoc, но $id = $array['id']; (и другие) в цикле будет означать, что после окончании цикла $id будет иметь значение последней записи. А вы чего хотите?

Расставьте акценты и приоритеты в описании. Многое чего вам хочется реализуется в рамках sql запроса.

Niliya 15.05.2017 16:09

Цитата:

Сообщение от laimas (Сообщение 452463)
echo mysql_error(); - это зачем?

$perform = mysql_query( $select ) or die(здесь вывод ошибок, но выводить их нужно по условию отладки, а вываливать на страницу всем, это плохо);

while( $array = @mysql_fetch_array( $perform ) ){ - убрать собаку, и mysql_fetch_assoc, но $id = $array['id']; (и другие) в цикле будет означать, что после окончании цикла $id будет иметь значение последней записи. А вы чего хотите?

Расставьте акценты и приоритеты в описании. Многое чего вам хочется реализуется в рамках sql запроса.

Убрала собаку теперь выводит только одну запись и то без параметров.. Да assoc помогает делала уже но потом чет переделала и забыла про него)) Да блин я просто хотела реализовать вот есть анкета.. Я беру выбираю категорию для анкеты и оно переносит анкету в другую категорию(в моем случае фильтр с дата группой).. Вот и все что я хотела сделать перерыла весь интернет.. Негде примеров схожего нет.. Мне просто нужно чтобы выбор селект переносил блок с анкетой и все.. это я уже намудрила знаю.. 2 таблицы даже сделала потому что мне нужно в отдельной держать должности латиницей потомучто я не понимаю как можно с одной например я хочу Вася чтобы был грузчиком а не водителем.. оно не возьмет данные
<form id="filter"><fieldset class="group"><label class="btn btn-default"><input type="radio" name="filter" value="Gruz4ik">Грузчик</label></fieldset>
</form>
где Gruz4ik это и есть то что записано во второй таблице то что и должно выводится вот сюда
<figure class="portfolio-item" data-groups='["<?php echo $rank ?>"]'>

laimas 15.05.2017 16:40

Цитата:

Сообщение от Niliya
Убрала собаку теперь выводит только одну запись и то без параметров..

Собака не управляет параметрами запроса, она блокирует вывод предупреждений. Нужно проверять результат запроса, а не блокировать предупреждения, что чревато дальнейшими ошибками.

Если запрос возвращает одну запись, зачем же while и select? Если это список должностей (не одна запись), то уже говорилось

$id = $array['id'];
$rank = $array['rank'];
$nick = $array['nick'];
$rank_name = $array['rank_name'];

это неверно. Цикл в этом случае должен быть в строке 09 кода выводящего список.

mysql_fetch_array возвращает два идентичных набора из ресурса, один из которых индексный массив, а второй ассоциативный. Вы используете ассоциации, зачем же получать два набора? Либо используя mysql_fetch_array указывайте вторым параметром нужный набор, либо сразу получать нужное mysql_fetch_assoc.

Приведите дампы таблиц своих (значений много не надо, 3-4 записи хватит), иначе еще туманнее чего надо, ибо таблицы не создаются по принципу "латиница значит другая таблица".

Niliya 15.05.2017 17:07

Цитата:

Сообщение от laimas (Сообщение 452474)
Собака не управляет параметрами запроса, она блокирует вывод предупреждений. Нужно проверять результат запроса, а не блокировать предупреждения, что чревато дальнейшими ошибками.

Если запрос возвращает одну запись, зачем же while и select? Если это список должностей (не одна запись), то уже говорилось

$id = $array['id'];
$rank = $array['rank'];
$nick = $array['nick'];
$rank_name = $array['rank_name'];

это неверно. Цикл в этом случае должен быть в строке 09 кода выводящего список.

mysql_fetch_array возвращает два идентичных набора из ресурса, один из которых индексный массив, а второй ассоциативный. Вы используете ассоциации, зачем же получать два набора? Либо используя mysql_fetch_array указывайте вторым параметром нужный набор, либо сразу получать нужное mysql_fetch_assoc.

Приведите дампы таблиц своих (значений много не надо, 3-4 записи хватит), иначе еще туманнее чего надо, ибо таблицы не создаются по принципу "латиница значит другая таблица".

Понимаю я уже сама запуталась.. Вот дамп))
Первая таблица:
INSERT INTO `sortable` (`ord`, `id`, `nick`, `rank_name`) VALUES
(2, 2, 'Федя', 'Грузчик'),
(3, 3, 'Петя', 'Водитель'),
(4, 4, 'Маша', 'Оператор');
Вторая таблица:
INSERT INTO `sortable2` (`rank`) VALUES
('Gruz4ik'),
('Voditel'),
('Operator'),

laimas 15.05.2017 17:32

У вас вторая таблица никоим образом не связана с первой, то есть, запрос
SELECT * FROM sortable, sortable2
еще не означает, что он вернет 'Федя', 'Грузчик', 'Gruz4ik'.

Зачем хранить это в другой таблице, это вполне можно хранить и в одной. Зачем вообще нужно иметь 'Грузчик' и 'Gruz4ik'?

Вам нужно прочесть о нормализации, этим руководствуются при проектировании баз данных. Федя это субъект, а 'Грузчик', 'Водитель', 'Оператор' должность, которую он может иметь, как и другие субъекты Петя, Маша и т.д., то должности и должны быть описаны в другой таблице связанной с первой по идентификатору. Можно и в одной таблице описать и субъектов и должности - полем типа ENUM. Но такой подход оправдан в том случае, если список должностей фиксирован, не изменяется во времени.

То есть вам надо сначала иметь грамотную структуру таблиц исходя из ваших данных. Тогда и остальные вопросы будут разрешимы.

Niliya 15.05.2017 18:06

Вложений: 1
Цитата:

Сообщение от laimas (Сообщение 452479)
У вас вторая таблица никоим образом не связана с первой, то есть, запрос
SELECT * FROM sortable, sortable2
еще не означает, что он вернет 'Федя', 'Грузчик', 'Gruz4ik'.

Зачем хранить это в другой таблице, это вполне можно хранить и в одной. Зачем вообще нужно иметь 'Грузчик' и 'Gruz4ik'?

Вам нужно прочесть о нормализации, этим руководствуются при проектировании баз данных. Федя это субъект, а 'Грузчик', 'Водитель', 'Оператор' должность, которую он может иметь, как и другие субъекты Петя, Маша и т.д., то должности и должны быть описаны в другой таблице связанной с первой по идентификатору. Можно и в одной таблице описать и субъектов и должности - полем типа ENUM. Но такой подход оправдан в том случае, если список должностей фиксирован, не изменяется во времени.

То есть вам надо сначала иметь грамотную структуру таблиц исходя из ваших данных. Тогда и остальные вопросы будут разрешимы.

Да я видимо не так обьясняю чтото))
Связала идентификаторами как вы сказали вот что получилось во второй таблице.. Я не знаю что такое ENUM но как поняла оно мне не подходит у меня постоянно например будут меняться должности и анкета будет переходить в другую data_group.. в одну я не могу сделать потомучто опять же мне прийдется каждого нового человека например записывать в mysql напрямую таким образом можно и менять то что есть напрямую через таблицу а я хочу сделать чтобы через админку можно было просто щелчком select менять категорию и все.. Хотела изначально просто сделать Вот есть анкета.. Я беру жму добавить - повляется новая анкета я выбираю там должность и вписываю имя и оно создается.. но после того как прочитала гору ненужных и бесполезных энциклопедий в которых например хотела понять что такое JSON а поняла только что она основана Дугласом Крокфордом в 1999 году забила голову ненужной информацией изза этого и сейчас в голове одна каша которую я не могу теперь применить.. Скрипт я этот взяла а не сама писала.. это с сайта где учили как делать drag n drop с сохранением в базу. я просто вырезала сам .draggable скрипт и оставила только чтобы сохраняло в базу.. Вот изза этой каши в голове я не могу нечего реализовать.. Вроде знаю достаточно а применить просто не могу.. Мне ненужно больше нечего мне нужно только сделать чтобы анкета перемещалась на кнопку в другую категорию и все.. остальные мне знания ненужны там дальше верстка просто все проще с базами mysql я не когда не работала потому не могу понять что она хочет от меня.. опять же прочитала кучу энциклопедий как выбирать то и где что надо - опять одна каша и я запуталась уже.. мне нужно легкое действие а информации впитала в себя наверно уже терабайт ненужной))) Вот так сделала как вы сказали.. добавила идентификатор.
INSERT INTO `sortable2` (`rank`, `id`) VALUES
('Gryz4ik', 1),
('Voditel', 2),
('Operator', 3),
Я видимо обьяснять не умею вот покажу картинкой что имею ввиду)) Я просто не хочу изучить еще килотонну ненужной мне информации ради одного действия :cray:

laimas 15.05.2017 18:42

Очень трудно читать когда все кучей одним абзацем. Трудно вникать и отделить главное от второстепенного. Поэтому напишу примеры.

Если вторая таблица связана с первой по идентификатору, тогда поучить записи из второй таблицы связанной с первой, это

SELECT * FROM sortable
LEFT JOIN sortable2
USING(id)
ORDER BY ord

Сортировать запрос по полю rank второй таблицы нет смысла, так как первичная сортировка производится по полю ord первичной таблицы, с которым из второй таблицы будет связана только одна запись.

Насколько я понял таблица sortable2 вообще лишняя, ее записи должны быть помещены в таблицу sortable. Но тут возникают два вопроса: 1) что такое rank_name, 2) что такое rank.

Если одно и тоже значение rank_name могут иметь многие несколько субъектов, то это список. Если это список который может динамически добавляться, то выгоднее его описывать в связанной таблице. Если же это уникальные значения у каждого субъекта, то оперировать списком нельзя, если только не вывести такой ради информации.

Если rank_name это список, но фиксированный, то есть кроме этих трех значений более нет и не предвидится, то такие данные удобно хранить в поле типа ENUM. Это текстовое представление данных, но во внутреннем представлении, это числа, которыми и оперирует SQL.

То же самое относится и к полю rank.

Если rank_name и rank это все таки списки, и связанные, то для субъекта изменение значения из первого должно автоматически менять и значение и из второго.

На эти вопросы вы так и не даете ответов, а от этого многое зависит. Постановка же вопроса "мне нужно только сделать чтобы анкета перемещалась на кнопку в другую категорию и все" вообще не понятна: что такое категория, что значит переместить анкету в другую категорию - сменить значения rank? Тогда почему rank_name не является в вашем выводе списком (если это действительно список) и не изменяется, эти значения не связаны?

Не пишите о drag&drop и прочем не имеющем отношения к вопросу, дайте лучше ответы на вопросы, и конкретно что есть что.

Niliya 15.05.2017 19:29

Цитата:

Сообщение от laimas (Сообщение 452486)
Очень трудно читать когда все кучей одним абзацем. Трудно вникать и отделить главное от второстепенного. Поэтому напишу примеры.

Если вторая таблица связана с первой по идентификатору, тогда поучить записи из второй таблицы связанной с первой, это

SELECT * FROM sortable
LEFT JOIN sortable2
USING(id)
ORDER BY ord

Сортировать запрос по полю rank второй таблицы нет смысла, так как первичная сортировка производится по полю ord первичной таблицы, с которым из второй таблицы будет связана только одна запись.

Насколько я понял таблица sortable2 вообще лишняя, ее записи должны быть помещены в таблицу sortable. Но тут возникают два вопроса: 1) что такое rank_name, 2) что такое rank.

Если одно и тоже значение rank_name могут иметь многие несколько субъектов, то это список. Если это список который может динамически добавляться, то выгоднее его описывать в связанной таблице. Если же это уникальные значения у каждого субъекта, то оперировать списком нельзя, если только не вывести такой ради информации.

Если rank_name это список, но фиксированный, то есть кроме этих трех значений более нет и не предвидится, то такие данные удобно хранить в поле типа ENUM. Это текстовое представление данных, но во внутреннем представлении, это числа, которыми и оперирует SQL.

То же самое относится и к полю rank.

Если rank_name и rank это все таки списки, и связанные, то для субъекта изменение значения из первого должно автоматически менять и значение и из второго.

На эти вопросы вы так и не даете ответов, а от этого многое зависит. Постановка же вопроса "мне нужно только сделать чтобы анкета перемещалась на кнопку в другую категорию и все" вообще не понятна: что такое категория, что значит переместить анкету в другую категорию - сменить значения rank? Тогда почему rank_name не является в вашем выводе списком (если это действительно список) и не изменяется, эти значения не связаны?

Не пишите о drag&drop и прочем не имеющем отношения к вопросу, дайте лучше ответы на вопросы, и конкретно что есть что.

Да я поняла.. Отвечаю на все вопросы начав все заного.. С исправлениями которыми вы советовали.. И так..
Дамп таблицы:
CREATE TABLE IF NOT EXISTS `sortable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nick` varchar(155) COLLATE utf8_unicode_ci NOT NULL,
  `rank_name` varchar(155) COLLATE utf8_unicode_ci NOT NULL,
  `rank` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;



INSERT INTO `sortable` (`id`, `nick`, `rank_name`, `rank`) VALUES
(1, 'Федя', 'Грузчик', 'one'),
(2, 'Вася', 'Водитель', 'two'),
(3, 'Гена', 'Оператор', 'three');

Дамп переписала русские слова в ручную потомучто выдало там где ру Гена и все такое хотя кодировка UTF-8

Есть фильтр:
<form id="filter">
<fieldset class="group">
<label class="btn btn-default"><input type="radio" name="filter" value="one">Грузчик</label>
<label class="btn btn-default"><input type="radio" name="filter" value="two">Водитель</label>
<label class="btn btn-default"><input type="radio" name="filter" value="three">Оператор</label>
</fieldset>
</form>


Есть php скрипт который содержится в index.php
<?php
include( 'db_connection.php' );
$select = "SELECT * FROM sortable ORDER BY id ASC"; // select every element in the table in order by order column
//echo mysql_error();
$perform = mysql_query( $select ); //perform selection query
//echo mysql_error();
while( $array = @mysql_fetch_assoc( $perform ) ){ //download every row into array
$id = $array['id'];
$rank = $array['rank'];
$nick = $array['nick'];
$rank_name = $array['rank_name'];
?>              
<?php require "body.php" ?>
<?php
}
?>

Тут поменяла ток assoc все работает

Есть часть кода в body.php
<figure class="portfolio-item" data-groups='["<?php echo $rank ?>"]'>
<figcaption>
<div class="col-md-4" id='item-<?php echo $id ?>'>
<strong class="st-member-name"><?php echo $nick ?></strong>
<p class="st-member-pos"><?php echo $rank_name ?></p>

Чуть ниже по коду..
<select>
<option value="three">Грузчик</option>
<option value="two">Водитель</option>
<option value="three">Оператор</option>
</select>


Нужно - при изменении <option> меняется -
<filter data-groups='["СЮДА ВЫВОДИТСЯ ТО ЧТО В БЫЛО ВЫБРАНО В <option value="*"> "]'>
Пример: Выбираю id=1 nick = Вася rank_name = Грузчик rank=one.. Выбираю в <option> Водитель(rank_name) и ему соответствует rank = two и само "TWO" должно echo вписать и получится <filter data-groups='["two"]'> и оно сработает и вася уже стал грузчик.. Вот что я хочу.. Ответила на все вопросы))

Вот так

laimas 15.05.2017 20:44

Не цитируйте мои комменты полностью, зачем?

Если ваша база для работы только с русским и английским, то выгоднее не
utf8_unicode_ci, а utf8_general_ci.

Чтобы был корректный вывод из базы, а не Гена, нужно указывать кодировку соединения сразу после соединения с базой:

mysql_query("SET NAMES utf8");

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

mb_internal_encoding("UTF-8");

$select = "SELECT * FROM sortable ORDER BY id ASC"; // select every element in the table in order by order column
//echo mysql_error();
$perform = mysql_query( $select ); //perform selection query
//echo mysql_error();
while( $array = @mysql_fetch_assoc( $perform ) ){...


Я уже писал, что это плохо и чревато последствиями, почему продолжается?

Цитата:

Сообщение от Niliya
Ответила на все вопросы

Нет. Я вам уже дважды пытался пояснить что требуется - что такое rank_name? Во-первых именование поля не понять о чем, и вы не даете пояснений.

Пусть в некой фирме определены всего четыре должности и иных должностей не предвидится. В данном случае все можно описать одной таблицей используя для описания должностей поле типа ENUM:

Код:

CREATE TABLE `structure` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(150) NOT NULL COMMENT 'Имя',
  `post` enum('Шеф','Бухгалтер','Бригадир','Рабочий') NOT NULL COMMENT 'Должность',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7;

INSERT INTO `structure` (`id`, `name`, `post`) VALUES
(1, 'Василий', 'Шеф'),
(2, 'Ангелина', 'Бухгалтер'),
(3, 'Петрович', 'Бригадир'),
(4, 'Николай', 'Рабочий'),
(5, 'Иваныч', 'Рабочий'),
(6, 'Кузьмич', 'Рабочий');

Внутренняя структура этого типа данных будет такой:

1 - Шеф
2 - Бухгалтер
3 - Бригадир
4 - Рабочий

Если в выборке указать поле post, то будет выведено соответственное значение как Бухгалтер, Рабочий и т.д., которое определено субъекту. Если же запросить значение этого поля как post+0 post (в старых версиях MySQL так post+0 AS post), то получим не текстовое значение этого поля, а числовое, то есть от 1 до 4, соответственно определенному.

Для того чтобы в форме оперировать этим полем как списком (при добавлении/редактировании субъектов), можно получить структуру этой таблицы, ее поля post и получим список

<select>
    <option value="">Выберите ...</option>
    <option value="1">Шеф</option>
    <option value="2">Бухгалтер</option>
    <option value="3">Боигадир</option>
    <option value="4">Рабочий</option>
</select>


При этом, если редактирование, то при выводе таблицы из базы можно получать как текстовое значение поля post так и числовое, сравнивая которое в цикле при построении списка со значениями ENUM отметь в списке должность рабочего (selected). Хотя можно проверять и равенство текстовых значений.

Записываться в базу при этом будет числовое значение. Это позволяет облегчить проверку ожидаемых данных.

Если же должности предполагают дополнения/изменения, то хранить их в поле типа ENUM не выгодно. В этом случае такие данные описывают в связанной таблице. Но если взять этот пример, то в результате получим такой же список, где число будет являться идентификатором этой таблицы. Поле post основной таблицы будет также будет содержать этот идентификатор. Если отношения Таблицы должностей и основной таблицы более сложные, то их связи описываются внешней таблицей связей.

То есть не нужно никаких "телодвижений" для того, что из одного набора переместить выбор в другой набор, достаточно просто выбора в списке, который и нужно отправлять серверу.

Разберитесь в конце концов что за данные у вас, каково их назначение и создайте нормальную их структуру. Я так и не понял что к чему у вас.

Записи в базе типа 1, 'Федя', 'Грузчик', 'one', это искусственное создание проблем. Если я правильно понял из описанного вами.

Niliya 15.05.2017 21:55

Цитата:

Сообщение от laimas
Не цитируйте мои комменты полностью, зачем?

сама не знаю)
Цитата:

Сообщение от laimas
Если ваша база для работы только с русским и английским, то выгоднее не
utf8_unicode_ci, а utf8_general_ci.

Чтобы был корректный вывод из базы, а не Гена, нужно указывать кодировку соединения сразу после соединения с базой:

mysql_query("SET NAMES utf8");

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

mb_internal_encoding("UTF-8");

спасибо))
Цитата:

Сообщение от laimas
Я уже писал, что это плохо и чревато последствиями, почему продолжается?

потомучто я не поняла как переделать на живом я убираю скобку и оно вообще не выводит))
Цитата:

Сообщение от laimas
Я вам уже дважды пытался пояснить что требуется - что такое rank_name?

rank_name это должность
Цитата:

Сообщение от laimas
Пусть в некой фирме определены всего четыре должности и иных должностей не предвидится.

Да будет всего 15 и больше не предвидется и не будет) Но будут люди которые им соотвествуют. например мне нужно добавить еще человека.. я хочу сделать так чтобы не вводить его Имя и должность в базу я хочу сделать как новую анкету но этого реализовать я не смогу у меня знаний не хватит ))
Цитата:

Сообщение от laimas
То есть не нужно никаких "телодвижений" для того, что из одного набора переместить выбор в другой набор, достаточно просто выбора в списке, который и нужно отправлять серверу.

Я это поняла но я не поняла сам код как написать.. словами то я все понимаю но вот применить я не знаю как))


Толку вообще что я сделала как вы сказали в одну таблицу все запихнула.. Реакции фильтра 0.. Реакции того что я выбираю - 0.. Не каких записей в бд и прочего также нет..

laimas 15.05.2017 23:05

Цитата:

Сообщение от Niliya
потомучто я не поняла как переделать на живом я убираю скобку и оно вообще не выводит

В db_connection.php (надо полагать там соединение с базой) определите кодировку соединения, как было написано ранее. В нем же можно определить и режим отладки - вывод ошибок сервера в режиме отладки (на локальном сервере) и вывод "нейтрального сообщения" на удаленном сервере. Например:

define('DEBUGER', 1); //режим отладки: 1 - вывод ошибок MySQL, 0 - вывод сообщения
define('SQLERROR', 'Что-то не срослось...'); //сообщение, которое будет выводиться при ошибках БД на удаленном сервере


Запросы при этом могут быть такими

$q = mysql_query('тело запроса') or die(DEBUGER ? __FILE__.'/'.__LINE__.'/'.mysql_error() : SQLERROR);


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

die - это синоним exit, то есть выход из скрипта, что не приведет к выводу дальнейших неизбежных ошибок.

Если нет ошибок, значит можно безопасно производить разборку запроса - если запрос вернул записи одно действие, иначе иное.

Цитата:

Сообщение от Niliya
Да будет всего 15 и больше не предвидется и не будет...
Я это поняла но я не поняла сам код как написать

Я тоже затрудняюсь как писать, так как вы не знаете SQL. Пусть у вас 15 значений и вы их опишите полем ENUM (в phpmyadmin сделать это не сложно). Только учтите, сразу описать и без ошибок - правка текста, смена позиций в описании приведет к тому, что уже назначенные значения из списка у субъектов пропадут, примут значение по умолчанию.

Вообще можно по структуре таблицы конструировать форму. То есть ее параметры будут определять типы полей формы и другие их свойства. Это означает, что если в структуре таблицы произойдут изменения, они автоматически будут отражены и формой. Таким образом во многом даже и не потребуется корректировать скрипты.

Получить параметры полей таблицы можно посредством запроса:

'SELECT перечисление параметров
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = "имя базы" AND TABLE_NAME = "имя таблицы"'

Например для поля ENUM, которое нас интересует, нам нужен только один параметр (примем по умолчанию, что это поле в sql таблице последнее) - COLUMN_TYPE, которое для примера выше вернется в массиве под последним индексом

[COLUMN_TYPE] => enum('Шеф','Бухгалтер','Бригади р','Рабочий')

которое можно извлечь из всех полей функцией array_pop(). Далее получив это значение сформировать список:

preg_match_all("/(?<=')[^',]+(?=')/ui", $array['COLUMN_TYPE'], $enum);
$select = '<select name="...">' . implode(array_map(function($k, $v) use($set) {
     return '<option value="'.$k.'">' . $v . '</option>';   
}, range(1, count($enum[0])), $enum[0])) . '</select>';

echo $select;


Если редактирование, то в use передается значение поля enum для записи (числовое, либо строковое), которое сравнивается в анонимной функции с соответствующим значением ($k или $v) и определяя выбранной соответствующую опцию. В случае добавления субъекта в базу этого не надо, но нужно добавлять опцию "Выберите" с пустым значением (если только не определено значение по умолчанию отличное от "нет" или null).

Если это затруднительно, то можно построить список и по основной таблице - выбрать отдельным запросом из основной таблицы только уникальные числовые и текстовые значения этого поля и построить по ним список. Понятно, что такое возможно только в том случае, что все 15 значений определены для субъектов. Но и понятно, что такое состояние таблицы не является гарантией.

Если же не ENUM, а отдельной таблицей, то запрос к этой таблице, и строить по ее данным список, принцип такой же будет как и в случае ENUM.

laimas 15.05.2017 23:08

Цитата:

Сообщение от Niliya
Толку вообще что я сделала как вы сказали в одну таблицу все запихнула.. Реакции фильтра 0

Вы чего хотите? Ранее было заявлено, что нужно только "что-то перенести в иное". Теперь же речь о фильтре идет. А фильтрация, это выборка по параметрам - WHERE ... описание полей и параметров запроса для них.

Просто вы делаете что-то не так.

Niliya 16.05.2017 11:40

Цитата:

Сообщение от laimas (Сообщение 452508)
Вы чего хотите? Ранее было заявлено, что нужно только "что-то перенести в иное". Теперь же речь о фильтре идет. А фильтрация, это выборка по параметрам - WHERE ... описание полей и параметров запроса для них.

Просто вы делаете что-то не так.

Нит) Я сразу говорила про фильтр вот именно что так просто все работает но с фильтром нет) вот такой фильтр посмотрите Тут у них раздел Portfolio как раз то что я вырезала и себе вставила.. Вот так и хочу чтобы жала на кнопку и менялась категория))

laimas 16.05.2017 11:48

Цитата:

Сообщение от Niliya
Я сразу говорила про фильтр

Вы сразу говорили о переносе в какую-то категорию, затем о добавлении новых пользователей, затем о фильтре и все это с привязкой к SQL, данные в которой имели непонятную структуру.

То что по ссылке, это работа такого плагина как jQury плагин isotope, который работает исключительно на клиенте с объектами на странице.

Что есть категория? Это должность? Значит можно при выводе связать должности по имени класса, что потом и использовать в isotope (почитайте документацию и посмотрите примеры кода по ссылке).

PS. Кстати, чтобы обеспечить такой вывод на странице, нужна сортировка запроса по должности (если конечно категория о которой вы все говорите, это и есть должность).

Niliya 16.05.2017 12:16

Вложений: 1
Цитата:

Сообщение от laimas
То что по ссылке, это работа такого плагина как jQury плагин isotope, который работает исключительно на клиенте с объектами на странице.

Дааа вот именно это и хочу.. Каждая кнопка фильтра это и есть категория))
Цитата:

Сообщение от laimas
PS. Кстати, чтобы обеспечить такой вывод на странице, нужна сортировка запроса по должности (если конечно категория о которой вы все говорите, это и есть должность).

Вот именно это я и не знаю как сделать.. У меня было 2 таблицы именно для того чтобы я отправляла с select выбор в категорию фильтра.. как то так..
Вот смотрите что я хочу сделать вы меня уже поняли наверно что я хочу)))

laimas 16.05.2017 12:40

Плагин isotope использует атрибут data-filter для описания объектов определяемые фильтром. Для кнопки "Все", это будет data-filter="*", а например data-filter=".name" означает, что по нажатию этой кнопки на странице будут отображены только элементы с именем класса "name", для data-filter=".name2,.name3" элементы с этими классами.

То есть чтобы сформировать код страницы для этого плагина можно запрос сортировать по должности, давая элементам любое имя класса с добавлением числового значения должности (читайте об этом в ранее написанном), то есть будет типа style1, style2, ... style15

Правда если у вас субъектов немного и они все сразу могут быть выведены на страницу.

Еще раз посмотрите пример html-верстки в примерах этого плагина, ведь вам же это связать со своим кодом/данными.

Для фильтрации на странице этим плагином никаких input и select не требуется, зачем они вам нужны тогда не понятно.

Niliya 16.05.2017 12:52

Цитата:

Сообщение от laimas
Для фильтрации на странице этим плагином никаких input и select не требуется, зачем они вам нужны тогда не понятно.

Чтобы я могла менять анкету и она переходила в другую категорию фильтра вроде как appendTo() только + ajax чтобы сохранялось.. Я раньше пыталась сделать через drag n drop перетаскивать просто анкету на кнопку фильтра и оно определяло класс и добавляла к анкете.. но это очень сложно было для меня.. и потому я решила просто сделать на каждой анкете кнопку <select> чтобы перемещало в категорию фильтра.. Вот то что вы написали я это читала все гуглила. Но живых примеров некто не показывает.. Я такая что я смотрю код и потом разбираюсь в нем гуглю каждую переменную и т.д. чтобы понять работу и так запоминаю.. а когда в голове каша изза энциклопедий я все читала и понимаю но реализовать некак не получается))

laimas 16.05.2017 12:58

Цитата:

Сообщение от Niliya
Чтобы я могла менять анкету и она переходила в другую категорию фильтра

Вы можете простыми словами написать - "В базе есть Федя, он шофер, но теперь стал нашим босом и ему надо изменить должность в базе". Этого вы хотите?

Niliya 16.05.2017 14:05

Цитата:

Сообщение от laimas
Вы можете простыми словами написать - "В базе есть Федя, он шофер, но теперь стал нашим босом и ему надо изменить должность в базе". Этого вы хотите?

Дааа вот именно так и хочу.. В базе Федя он грузчик.. Теперь он водитель и при нажатии кнопки фильтра категории Водители - он уже будет в той категории(кнопка фильтра) и из категории(кнопка фильтра) Грузчики он remove() как та так)) Только саму смену категории анкеты Феди я должна сделать не вводя в базу текст и переключив просто в админке.

laimas 16.05.2017 14:32

Давайте так - шофер, грузчик, пекарь, это должности, а не категории. А то уже крышу сносит. )

Если вы хотите изменить должность, то речь идет об обновлении данных. Но то чего вы хотите под соусом "фильтр" к данному никакого отношения не имеет. Да и не только не имеет, но и вряд ли целесообразно такое.

То что вы видите, это фильтрация html-элементов на странице ранее по определенным условиям. Если выбрать к примеру шофер, то отобразятся только шоферы, никаким переносом здесь даже не пахнет.
Но если вы имеете ввиду, что в этих элементах будут и списки в котором вы и будете изменять должность, тогда да. Но задумайтесь над такими вопросоми:

- что будет, если записи вашей таблицы будут содержать сотни, а может и тысячи, можете себе представить такое представление на странице?

- ваша sql-таблица описывает данные, которые сами по себе и есть табличными данными, которые гораздо удобнее отображать html-таблицей, которая может иметь все необходимые поля поля формы для редактирования. Одна строка таблицы - один ваш рабочий.

При этом не является проблемой запросить в базе записи только конкретных должностей, если среди них нужно изменить кому-то должность. Выбрали в списке для фильтрации должность (можно вкупе и с другими параметрами), отправили эти параметры серверу, сервер выбрал записи отвечающие только этим параметрам. Посредством Ajax это сделать несложно. При этом можно делать и групповое обновление, то есть для нескольких субъектов сразу. Зачем же громоздить то что у вас на рисунке и нагружать еще и плагинами типа Isotope, такая "красота" понятна на страницах сайта, но зачем она нужна для администрирования?

И попутно об drag&drop - есть подобные плагины, но они не для изменения таких данных как должность, а очень удобны для указания пользовательской сортировки, которая вроде бы у вас как есть, но которая вам в общем-то не нужна.

Niliya 16.05.2017 15:11

Цитата:

Сообщение от laimas
ваша sql-таблица описывает данные, которые сами по себе и есть табличными данными, которые гораздо удобнее отображать html-таблицей, которая может иметь все необходимые поля поля формы для редактирования. Одна строка таблицы - один ваш рабочий.

Да но тогда мне прийдется всегда лезть в код чтобы добавить еще одного а там код трехтонный на одну анкету)

Цитата:

Сообщение от laimas
Зачем же громоздить то что у вас на рисунке и нагружать еще и плагинами типа Isotope, такая "красота" понятна на страницах сайта, но зачем она нужна для администрирования?

Потомучто админ панели у меня нет .. я даже не поняла как ее сделать если бы поняла то сделала бы так чтобы как списки . Например нажать на кнопку и новая анкета создалась.. если бы было готовое решение того что я хочу в админ панели то канечно мне было бы проще просто брать и отправлять на страницу а не редактировать.. карочи я запуталась и вы тоже уже со мной) во всяком случае спасибо за помощь.. я все поняла но как реализовать я все равно не поняла.. я же не напишу <?php вот это переместить сюда если выбираю то?> ))

laimas 16.05.2017 15:15

Цитата:

Сообщение от Niliya
Да но тогда мне прийдется всегда лезть в код чтобы добавить еще одного а там код трехтонный на одну анкету)

С чего вдруг потребуется лезть в код? Если у вас так, значит ваш код не соответствует задаче или неверное представление о задаче, а значит и способов ее решения.

Цитата:

Сообщение от Niliya
Потомучто админ панели у меня нет .. я даже не поняла как ее сделать

Делайте, она то ведь ничем не отличается от страниц сайта, просто у нее иные задачи и вход только определенному кругу лиц или одного лица.

Niliya 16.05.2017 15:20

Можно мне по полочкам( а то у меня опять каша в голове.. Есть должности.. Есть фильтр.. Есть структура анкеты.. Вот так(( Вот вы бы как реализовали все с фильтром если)

laimas 16.05.2017 15:27

Цитата:

Сообщение от Niliya
Можно мне по полочкам(

По полочкам, это слишком много писать, а я вам и так достаточно написал. :)

Я могу описать словами основы, но кратко. Все подробно и с кодом, так это уже выполнение оплачиваемой работы, так как обязательно уточнение всех "и", постановка задачи ну и т.д.


Часовой пояс GMT +3, время: 11:43.