|
|
|
| Нужно узнать ключ массива где значение = x
зы. и ещё, можно ли както при запросе:
$my_rank = mysql_query("SELECT `id` FROM `users` ORDER BY `posts` DESC");
сразу полученный результат рассовать в массив?.. тоесть без использования цикла.
заранее сенк.. | |
|
|
|
|
|
|
|
для: sl1p
(29.10.2008 в 12:14)
| | array_search()
$my_rank - это ресурс. | |
|
|
|
|
|
|
|
для: sim5
(29.10.2008 в 12:41)
| | причём тут это?..
как вообще можно засунуть сразу всё выбранное из базы в массив чтобы по нему можно было пройтись сёрчем?.. | |
|
|
|
|
|
|
|
для: sl1p
(29.10.2008 в 13:27)
| | Уважаемый, это ваш вопрос - "Нужно узнать ключ массива где значение = x" ?
И кстати, не "гните пальцы", есть нормальные русские слова, либо используйте английские, родные, не выражайтесь "жаргоном" никчемным - "сёрчем". | |
|
|
|
|
|
|
|
для: sim5
(29.10.2008 в 13:28)
| | пишу ибо так мне удобней, не вижу перед кем "гнуть пальцы" ещё и на форуме.
За первый вопрос спасибо.
Хотелось бы получить ответ на второй. Как можно без цикла получить массив всех выбранных значений из базы? | |
|
|
|
|
|
|
|
для: sl1p
(29.10.2008 в 13:35)
| | Ну то что вам удобно, совсем не значит, что это удобно читать другим, как вы думаете?
Вы после выборки получаете ресурс, разницу между массивом и ресурсом улавливаете? Как вы обращаетесь к ресурсу чтобы получить конкретные записи? | |
|
|
|
|
|
|
|
для: sim5
(29.10.2008 в 13:54)
| | mysql_fetch_row\assoc
но чтобы получить всё нужен цикл..
а хотелось бы как-то сразу :) | |
|
|
|
|
|
|
|
для: sl1p
(29.10.2008 в 14:00)
| | Если одна строка в русурсе, пожалуйста. | |
|
|
|
|
|
|
|
для: sim5
(29.10.2008 в 14:06)
| | не одна.
просто суть задачи вообще в том, чтобы вытащить все записи и узнать ключ массива такой-то строки, тоесть её номер. | |
|
|
|
|
|
|
|
для: sl1p
(29.10.2008 в 18:43)
| | короче без цикла нельзя!
>...и узнать ключ массива такой-то строки, тоесть её номер.
вот это не совсем понятно | |
|
|
|
|
|
|
|
для: ddhvvn
(29.10.2008 в 18:49)
| | ну это рейтинг пользователя мне нужно вывести типа такого:
Ваш ранк 1 из 134, например:)
пока делаю так..
$my_rank = mysql_query("SELECT `id`,`nick` FROM `users` ORDER BY $type DESC");
$mrc = 1;
while($r=mysql_fetch_row($my_rank)){
if($_SESSION['id'] == $r[0]){$my_rank = "Ваше место: $mrc";break;}
$mrc++;
} | |
|
|
|
|
|
|
|
для: sl1p
(29.10.2008 в 19:58)
| | А вот к примеру если в таблице одинаковые показатели у людей:
id nick point
1 Вася 3
2 Коля 5
3 Оля 2
4 Ваня 3
5 Вова 2
6 Леша 5
7 Галя 4
Какой у них у всех должен оказаться посчитанным рейтинг (по полю point) ? | |
|
|
|
|
|
|
|
для: Trianon
(29.10.2008 в 20:17)
| | ну бд всё равно тогда както их сортирует.
насколько я понял если попадаются одинаковые значения то смотрит на айди(мб ошибаюсь конечно, но по всей видимости происходит именно так).. | |
|
|
|
|
|
|
|
для: sl1p
(29.10.2008 в 20:21)
| | Я не про то, как происходит в базе.
Даже не смотря на то, что база может по разному отсортировать,
Вася с Ваней могут и возбудиться, если им при одинаковых points назначат разные рейтинги. А им назначат.
Я про то, какие значения считаются правильными с точки зрения постановки задачи. С Вашей точки зрения, грубо говоря. | |
|
|
|
|
|
|
|
для: Trianon
(29.10.2008 в 21:22)
| | ну одинакового ранка быть не должно.. поэтому было бы хорошо если бы смотрело на айди.:)
хотя если у вас есть предложения, с удовольствием выслушаю:).. | |
|
|
|
|
|
|
|
для: sl1p
(30.10.2008 в 07:13)
| | >ну одинакового ранка быть не должно..
>поэтому было бы хорошо если бы смотрело на айди.:)
Вот это-то и непонятно.
>хотя если у вас есть предложения, с удовольствием выслушаю:)..
Корректно рассчитанный ранг берется как-то так:
SELECT u1.id, u1.nick, COUNT(u2.id) AS rank
FROM users u1 JOIN users u2 ON u1.points > u2.points
GROUP BY u1.id, u1.nick
|
Потребуется, правда, создать фиктивного user'а с числом очков -1.
Кривой (т.е. неодинаковый) можете посчитать сами по аналогии. | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2008 в 09:26)
| | хм, спасибо:)
но так и не понял зачем юзеры с "-1"? | |
|
|
|
|
|
|
|
для: sl1p
(30.10.2008 в 11:05)
| | >но так и не понял зачем юзеры с "-1"?
Только один такой нужен.
Иначе пользователи с минимумом очков вообще в выдачу включены не будут. Из-за JOIN . | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2008 в 11:11)
| | а если убрать "выдёргивание" id и nick?)
оно в принципе ненужно. Нужен только count, тоесть ранк. | |
|
|
|
|
|
|
|
для: sl1p
(30.10.2008 в 12:20)
| | ну получите Вы (для моего примера)
и что это даст? | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2008 в 12:52)
| | эх, я понял..)
буду юзать ваш пример выше.
спасибо:)
только вот как бы ещё теперь с ним "синхронизировать" полный вывод статистики..
неужели придётся для каждого такое вытворять?:)
сейчас вывожу вот так:
$result = mysql_query("SELECT `nick` , `$type` as val FROM `users` ORDER BY $type DESC LIMIT $start_limit , $max_rows");
$i = $now_page_start;
$hlight = "";
while($row = mysql_fetch_assoc($result)){
if($il){
if($_SESSION['nick']==$row['nick']) $hlight = " style=\"background:#68859a;\"";
else $hlight = "";
}
echo"\n<tr$hlight><td class=\"submsg\" width=\"1\">$i </td><td>".html_escape($row['nick'])."</td><td align=\"right\"> {$row['val']}<img src=\"img/$type.gif\"></td></tr>";
$i++;
}
|
тоесть получается все выводятся постранично, и ранки выводятся начиная от первого номера строки:) | |
|
|
|
|
|
|
|
для: sl1p
(30.10.2008 в 13:07)
| | не понял. | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2008 в 13:22)
| | ну это похоже на мой способ вычисления ранка выше:
просто берутся записи с лимитом в 40,80 например. $i = 40 и уже до конца страницы ранк = $i; $i++.
тоесть короче выше мы обсуждали как вывести ранк одного пользователя, а теперь, как вывести ранки всех пользователей:) | |
|
|
|
|
|
|
|
для: sl1p
(30.10.2008 в 13:28)
| | мой запрос выводит ранги всех. | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2008 в 14:59)
| | ок, а как тогда вывести ранк одного?) | |
|
|
|
|
|
|
|
для: sl1p
(30.10.2008 в 15:53)
| |
SELECT COUNT(u2.id) AS rank
FROM users u1 JOIN users u2 ON u1.points > u2.points
WHERE u1.id =$user_id
|
| |
|
|
|
|
|
|
|
для: Trianon
(30.10.2008 в 16:14)
| | сенки!
буду тестить..:) | |
|
|
|