|
|
|
| Подскажите, плз...
Делаю запрос на выбор из строки
$q="select * from users where login='$login' ";
$r=@mysql_query($q);
Как определить какая по счету строка этого юзера от верха таблицы mySQL? | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 16:18)
| | У таблицы нет верха, все записи внавал. Да и зачем это нужно? | |
|
|
|
|
|
|
|
для: sim5
(06.02.2009 в 16:27)
| | в таблице записи сортируются... а нужно для того, чтобы юзер видел на каком месте в таблице он стоит!
ньюанс еще в том, что записи периодически удаляются из любого места таблицы, но новые добавляются только в конец таблицы. | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 16:43)
| | Еще раз - куда добавляются записи, это вам не ведомо, да и не нужно. Вы можете определять номер записи, например, уникальный ID юзера. А вот на каком он месте, это уже совсем иной вопрос, здесь нужно добавить в таблицу поле, которые бы указывало порядковый номер пользователя. При удалении какой либо записи, данные имеющиее меньший номер, номера этого удаляемого поля, нужно будет уменьшать на 1. Вот это поле и будет у вас показывать то, что вам нужно. | |
|
|
|
|
|
|
|
для: sim5
(06.02.2009 в 16:47)
| | В том и вопрос, на каком он месте!!!
поле ID с порядковым номером есть, а вот как реализовать чтобы при удалении строки это поле опять переписывало порядковые номера по порядку?
Может отдельным скриптом каким? | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 17:07)
| | не факт, что заработает(мне проверить не на чем...)
select count (user_id) from users WHERE user_id<(select user_id from users where login='$login')
|
| |
|
|
|
|
|
|
|
для: MIchail1982
(06.02.2009 в 17:16)
| | спасибо, идея понятна, попробую... | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 17:07)
| | Ненужно вам это. На каком месте пользователь можно посмотреть просто отсортировав список по id и присваивая порядковый номер уже на стадии вывода.
Интересно что по этому поводу думает Trianon. | |
|
|
|
|
|
|
|
для: Valick
(06.02.2009 в 17:16)
| | А как присвоить порядковый номер на стадии вывода??? | |
|
|
|
|
|
|
|
для: Valick
(06.02.2009 в 17:16)
| | А что я могу думать?
Что первичный ключ это не поле порядкового номера.
Что если хочется второе иметь именно полем - следует таковое создать независимо от первичного ключа.
Что месяца не проходит, чтобы не нашелся очередной умник, утверждающий, что ему до зарезу надо первичным ключом перенумеровывать строки, которого приходится переубеждать.
Что на поисковый запрос "внавал" сервер выдает 24 темы. | |
|
|
|
|
|
|
|
для: Trianon
(06.02.2009 в 19:46)
| | Что месяца не проходит, чтобы не нашелся очередной умник
Может полнолуние влияет?)))) | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 17:07)
| | ID должно быть уникальным! А для этого лучше делать это поле с автоинкрементом, и трогать (редактировать) это поле не надо, ибо, если таблицы организованы разумно, то по этому ID могут быть связаны другие таблицы. И что получиться, если вы начнете изменять их?
Поле порядкового номера, это будет простое числове поле, например, поле ID, поле порядкового номера, имя юзера:
135, 5,user1
138,6,user2
215, 7,user1
....
|
Если теперь вы удаляете запись ID 138, то для всех записей у которых поле порядкового номера больше 6, нужно сделать обновление - уменьшить значение этого поля на единицу, посредством запроса UPDATE SET `num` = `num`-1, где num, это имя поля порядкового номера (как пример) .
А при добавлении новой записи, нужно узнать максимальное значение этого поля, и для новой (ставляемой) записи указать ему значение на единицу больше. | |
|
|
|
|
|
|
|
для: sim5
(06.02.2009 в 17:24)
| | спс., идея понятна, но это если 100, 1000 записей..., а если 10000, 100000.... | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 17:46)
| | Вам что нужно? Если вам этот номер не потребуется, ну, например, по нему вы будете пермещать пользователя в списке рейтингов, то значит забудьте. Если вас интересует, только порядковый номер списка (коли вы задаете вопрос выше), то нумеруйте сортированные записи при выводе вот и все. По куакому полю вы будете сортировать, по ID, дате добавления и т.п., вам виднее.
Если и 100000, то так тоже, другого способа нет. | |
|
|
|
|
|
|
|
для: sim5
(06.02.2009 в 17:50)
| | в том и вопрос, чтобы пользователю выдавался его порядковый номер в списке. Нужно посчитать его номер при выводе, а вот как это реализовать??? Дополнительное поле вводить в таблицу проблематично, править много придется по скрипту.... | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 18:04)
| | В общем так. Если вам нужен просто порядок при выводе, и этот порядковый номер никак не свзан какими либо условиями для пользователя, то в цикле, в котором вы производите вывод полученного из таблицы ресурса, проставляйте порядковый номер:
$i = 1;
while (...) {
echo $i ... //выводим номер порядковый номер, что-то еще
$i++;
}
Вы уж определитесь сначала для чего вам нужен этот порядок, а то вокруг да около... | |
|
|
|
|
|
|
|
для: sim5
(06.02.2009 в 18:20)
| | я конечно извиняюсь, но я не знаю как еще проще выразиться....
Делаю запрос на выбор из строки
$q="select * from users where login='$login' ";
$r=@mysql_query($q);
Как определить какая по счету строка этого юзера от верха таблицы user?
Нужно показать пользователю его порядковый номер в таблице! Именно порядковый номер!!!! | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 18:32)
| | Начните с этого читать:
>для: sotkom (06.02.2009 в 16:18)
>У таблицы нет верха, все записи внавал...
И далее по порядку. Или что, начинать полемику заново? | |
|
|
|
|
|
|
|
для: sim5
(06.02.2009 в 18:40)
| | понятно, спасибо, буду пробовать подсказку Михая1982 - "select count (user_id) from users WHERE user_id<(select user_id from users where login='$login')", она по теме.... | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 18:32)
| | Решал недавно такую задачку. Только мне надо было по рейтингу расположить. В итоге сделал вот так:
<?
$current_position=$db->selectCell("SELECT COUNT(rating) FROM users WHERE rating>$var"); //где $var - рейтинг текущего пользователя.
|
| |
|
|
|
|
|
|
|
для: Loki
(06.02.2009 в 19:18)
| | да, тоже самое почти, смысл тот же... | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 19:22)
| | вы сначала должны понять что такое - порядковый номер.
если вы создадите в базе поле ИД с автоинкрементом, то при поступлении самой первой записи в БД, этот ИД у этой записи станет равным 1, вторая запись - 2, третья - 3.., n'ная - n. если вы удаляете одного пользователя, кпримеру 5'ого из 10, то 10'ый остается десятым зарегестрированым пользователем.... можно конечно сделать то что вы хотите при помощи циклов, но это во первых сильно замедлит работу системы при хотябы 10000 зарегестрированых пользователей, вовторых это бессмыслено всё.... | |
|
|
|
|
|
|
|
для: nikita2206
(06.02.2009 в 21:27)
| | Дело в том, что порядок может быть "синхронным" или "асинхронным", если говорить не о первичном ключе, а именно о порядке.
Вы командир отделения, и у вас 4 бойца - Иванов, Петров, Сидоров, Николаев, и "на первый-второй расчитайсь" будет: 1 - Иванов, 2 - Петров, 1 - Сидоров, 2 - Николаев. Боец Петров натер мозоль сапогом, и попал в санчасть, теперь: 1 - Иванов, 2 - Сидоров, 1 - Николаев. При этом у вас, как у командира отделения, в общем списке, по алфавиту, Николаев будет идти всегда вторым, после Иванова. Но Николаеву это пофиг, ему дана команда расчитаться, он ее и выполняет. Это асинхронный порядок (нумерация).
Вы родственник Абрамовича, и он прикупил для вас футбольную команду, и у нее есть игроки под номерами: 15 - Иванов, 11 - Петров, 9 - Сидоров, 23 - Николаев. Во время матча может происходить замена - вместо выбывшего Петрова (11), будет играть Сидоров (9). Сидоров при этом никак не получит номера 11. Но при этом, все игроки, в табеле бухгалтера клуба, имеют другие идинтификационные номера, и для бухгалтера пофигу какой полевой номер у игрока, а для фанатов вашего клуба нет. Это синхронный порядок (нумерация).
Чего хочет автор, так и осталось загадкой. | |
|
|
|
|
|
|
|
для: sotkom
(06.02.2009 в 16:18)
| | все сделал, рассказываю может кому пригодится....
сортируем по id (от меньшего к большему ASC), достаем нужного юзера (а точнее его user_id), потом делаем следующий запрос:
SELECT COUNT(id) FROM `users` WHERE `id` <= '$user_id'
Показываем юзеру его место в таблице! | |
|
|
|