Показать сообщение отдельно
  #9 (permalink)  
Старый 15.05.2017, 19:29
Аватар для Niliya
Интересующийся
Отправить личное сообщение для Niliya Посмотреть профиль Найти все сообщения от Niliya
 
Регистрация: 15.05.2017
Сообщений: 12

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

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

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"]'> и оно сработает и вася уже стал грузчик.. Вот что я хочу.. Ответила на все вопросы))

Вот так

Последний раз редактировалось Niliya, 15.05.2017 в 19:32.
Ответить с цитированием