[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сложная сортировка
Dima85
База
ID     VALUE    SORT
1 222 2
2 234 1
3 433 4
4 343 3
5 234 5
6 342 6


Есть переменная $data где у меня:
1=222;2=234;3=433;4=343
Первая цифра это ID вторая это VALUE. Подскажите пожалуйста как отсортировать их в переменной опираясь на данные с SORT
То есть должно быть вот так:
2=234;1=222;4=343;3=433


То есть нужно переменную разбить на куски, вынуть с базы только нужные переменные и только потом соединить в строку по возрастанию.

Если это очень сложно могу оплатить работу.
AllesKlar
Это вообще не сложно, но навеевает неправильной логикой.
Какая задача изначально?
Что за строка, почему она появляется именно так?
Почему еще на этапе запроса к базе не получать данные в отсортированном виде?

_____________
[продано копирайтерам]
Dima85
Там завернутая задача. Чесьно я не знаю как ее правильно объяснить. Я не русский. Пока хочется ее реализовать так как я ее писал.

$data = "2=234;1=222;4=343;3=433";

1. разбиваешь строку по символу <;>
2. Образовавшиеся пары разбиваешь по символу <=>

 $dataarray=explode(';', $data);
for ($i=0; $i<count($dataarray); $i++) {
$idarray=explode('=', $dataarray);
for ($y=0; $y<count($dataarray); $y++) {

}
}


Я не уверен что я уже правильно начал это делать. Может можно как-то сразу средствами MYSQL это делать. И что дальше делать я не знаю.


Kusss
Присоединяюсь к AllesKlar.
Что мешает изначально отсортировать в запросе, и сразу собрать нужное в процессе перебора данных ?
Зачем городить эту строчку . Для чего ана ? ...
Если записать в файл или в таблицу используй json .

Или тут наоборот : разобрать строку и дать запрос на соответствие ?

$data = "2=234;1=222;4=343;3=433";
$search = array();
foreach (explode(';', $data) AS $value){
$value = explode('=', $value);
$search[] = "(id=".$value[0]." AND value=".$value[1].")";
}

$sql = "
SELECT
*
FROM
`table`
WHERE
"
.implode('OR', $search)."
ORDER BY
sort
"
;
echo $sql;
// Результат
// SELECT * FROM `table` WHERE (id=2 AND value=234)OR(id=1 AND value=222)OR(id=4 AND value=343)OR(id=3 AND value=433) ORDER BY sort

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.