|
|
|
| В TABLE1 есть поле str с перечисленными в нем через пробел вразброс id из TABLE2: 40 18 22 11 и т.д., которым соответствует поле title с заголовками: A C D B
Подскажите, как вывести итог отсортированным A B C D?
$arr = explode(' ', $str);
foreach ($arr as $value)
{
$sql = "SELECT
table2.id AS id,
table2.title AS title
FROM table2 WHERE id = '$value'";
$tb = mysql_query($sql);
while($pub = mysql_fetch_array($tb))
{
echo"".$pub['title']."<br>";
}
}
|
Отсортировать по id не проблема через
А как отсортировать по title? | |
|
|
|
|
|
|
|
для: SS
(29.08.2012 в 04:18)
| | В запросе указывайте сортировку:
ORDER BY title
и вернется отсортированный запрос.
Гонять sql запросами из цикла, это издевательство. | |
|
|
|
|
|
|
|
для: confirm
(29.08.2012 в 08:10)
| | Стал бы я обращаться, если бы все так было просто :) | |
|
|
|
|
|
|
|
для: SS
(29.08.2012 в 09:11)
| | все так непросто из-за неправильной организации БД
в частности значение поля должно быть атомарным ( первая нормальная форма ) | |
|
|
|
|
|
|
|
для: Valick
(29.08.2012 в 09:34)
| | Это я тоже знаю. :)
А по существу проблемы никаких предложений? | |
|
|
|
|
|
|
|
для: SS
(29.08.2012 в 09:47)
| |
<?
$id = implode(',', array_map('intval', explode(' ', $str)));
$sql = "SELECT id, title
FROM table2 WHERE id IN(".$id.")
ORDER BY title";
$tb = mysql_query($sql);
if($tb) {
if(mysql_num_rows($tb)) {
while($pub = mysql_fetch_assoc($tb)) {
//действия
}
}
}
|
| |
|
|
|
|
|
|
|
для: confirm
(29.08.2012 в 10:11)
| | Спасибо большое, все сортирует. | |
|
|
|
|
|
|
|
для: SS
(29.08.2012 в 09:47)
| | Отсортировать по id не проблема через sort($arr);
проблема как раз в том, что вы круглое носите, а квадратное катаете, проблема в том, что вы не знаете возможности MySQL как ровно и то, что не понимаете что нельзя лепить таблицы "от балды"
меняйте структуру таблиц, пока не поздно... | |
|
|
|