Программирование, которое не связано с API.
112
Модератор
Сообщения: 2215 Зарегистрирован: 02 фев 2010, 21:53
Сообщение
112 » 25 сен 2011, 20:32
Здравствуйте!Вообщем,не могу решит не большую проблему с циклом.Надо что-бы оно выводило по очереди-от большего к меньшему.Но оно выводит в таком порядке в котором прислал.
Код: Выделить всё
<?php$db_host="localhost"; $db_user="ivanz"; $db_password="800800"; $db_name = "ivanz"; $table_name = "ripok";$friend_id = $_POST['friend_id']; mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());mysql_select_db($db_name) or die (mysql_error());mysql_query("SET NAMES 'utf8'"); preg_match_all("#(.+?),#is", $friend_id, $matches); echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";echo "<response>"; foreach ($matches[0] as $every_user_id) {$query ='SELECT * from `'.$table_name.'` WHERE `user_id`="'.$every_user_id.'" order by record desc limit 100';$sql = @mysql_query($query); for ($i=0; $i<mysql_num_rows($sql);$i++){$r = mysql_fetch_array($sql);echo"<user>";echo"<user_id>".$r['user_id']." </user_id>";echo"<score>".$r['record']." </score>";echo"<name>".$r['name']." </name>";echo"<photo_rec>".$r['photo']." </photo_rec>";echo"</user>";}} echo "</response>";?>
Есть какие нибудь предложения?
112
Модератор
Сообщения: 2215 Зарегистрирован: 02 фев 2010, 21:53
Сообщение
112 » 25 сен 2011, 20:55
Александр
неа
Александр
Создатель сайта
Сообщения: 4574 Зарегистрирован: 27 сен 2009, 16:45
Сообщение
Александр » 25 сен 2011, 21:03
У тебя обращение к базе в цикле происходит... Это ж какая нагрузка на сервер может быть.
Лучше опиши примерную структуру твоей базы и что ты хочешь получить запросом.
112
Модератор
Сообщения: 2215 Зарегистрирован: 02 фев 2010, 21:53
Сообщение
112 » 25 сен 2011, 21:54
Александр
База такая.
user_id name mark record visits photo
ид имя монетки рекорд посещения фото
Запросом передаю user_id, пытаюсь получить в ответе user_id,name,record,photo в порядке убывания по record .
Но все выводится по порядку,т.е как прислал,допустим id=1,2,3,4,5,6, то оно вернется в этом порядке,даже если record user'a 6 больше чем user'a 1.
Александр
Создатель сайта
Сообщения: 4574 Зарегистрирован: 27 сен 2009, 16:45
Сообщение
Александр » 26 сен 2011, 20:36
112
Так какой конечный результат хочешь видеть?
Для чего вообще нужно это?
112
Модератор
Сообщения: 2215 Зарегистрирован: 02 фев 2010, 21:53
Сообщение
112 » 26 сен 2011, 20:41
Александр
чтобы данные [user_id,record,photo,name] вывело тех юзеров ,которые я присылаю,
и чтобы эти данные вывелись в порядке убывания поля рекордов (поля record)
Александр
Создатель сайта
Сообщения: 4574 Зарегистрирован: 27 сен 2009, 16:45
Сообщение
Александр » 26 сен 2011, 21:09
Так почему бы не собрать эти id через запятую, и не сделать примерно так:
Код: Выделить всё
SELECT * FROM table_name WHERE `user_id` IN (1,2,3,4,5) ORDER BY record DESC LIMIT 100
Без обращений к базе данных в цикле.
112
Модератор
Сообщения: 2215 Зарегистрирован: 02 фев 2010, 21:53
Сообщение
112 » 26 сен 2011, 21:21
Александр
0o работает),спасибо )