Вы должны сделать то, что сказали другие, и сохранить его как одно целое число (в дюймах), поэтому 5 футов 10 дюймов - это 70.
Чтобы снова отобразить его как ft / in, вы просто делаете что-то вроде этого:
$result = 70; //Whatever is retrieved from the DB really, in inches
if($result >= 12) //If result is a foot or more
{
$feet = floor($result / 12); //Divide the total inches by 12 and round down
$inches = $result % 12; //Modulus total inches by twelve to get remainder inches
$string = $feet . 'ft ' . $inches . 'in'; //Combine into string
}
else
{
$string = $result . 'in'; //Unless you want it to display 0ft 7in or whatever if less than a foot
}
Вы можете довольно легко преобразовать все значения в БД в целое число с помощью простого скрипта, который извлекает данные из БД, разделяет футы и дюймы на части, обрезает строковую часть (что можно сделать, просто приведя int, когда они разделены), а затем умножает числовую часть футов на 12, добавляет ее к числовой части в дюймах и обновляет базу данных.
будет выглядеть примерно так:
$sql = mysql_query("SELECT `id`,`height` FROM `table` WHERE 1");
while($row = mysql_fetch_assoc($sql))
{
$values = explode(" ",$row['height']); //Split it into two parts at the space between feet and inches
$feet = (int)$values[0]; //Could also trim off the last 2 characters in the string
$inches = (int)$values[1];
$total = ($feet * 12) + $inches; //Of course, given order of operations, the parentheses aren't necessary, but makes it look nicer
mysql_query("UPDATE `table` SET `height` = $total WHERE `id` = $row['id']");
}
Конечно, вам нужно создать новый пустой столбец в таблице для хранения новых целочисленных значений, например heightint
или чего-то еще, а затем переименовать старый столбец во что-то другое, а затем переименовать новый столбец. к высоте наверное.
Ладно, если у вас нет возможности изменить таблицу (что вы действительно должны предложить для улучшения, кем бы ни был ваш клиент), то вам нужно будет выполнить запрос чего-либо, я думаю как:
SELECT * FROM `table` WHERE `height` >= '5ft 10in' AND `height` <= '5ft 1in'
Но, как сказал один человек, 5 футов 10 дюймов будут раньше, чем 5 футов 1 дюйм в этом типе данных, поэтому будет сложно определить, какой диапазон должен стоять первым, а какой - вторым, если это произвольный ввод, даже не уверен, что это поймало бы все значения, если бы диапазон был вне единственной ноги.
Тогда, вероятно, самый простой способ их сортировки - преобразовать высоту в полные дюймы, как указано выше, и отсортировать ее по PHP в любой другой функции сортировки массива.