Не цитируйте мои комменты полностью, зачем?
Если ваша база для работы только с русским и английским, то выгоднее не
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', это искусственное создание проблем. Если я правильно понял из описанного вами.