[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с MySql
Гость_Дмитрий
В базе данных есть таблица, в первом столбце находятся ID юзеров. Каким запросом их php мне найти ID который мне надо, и считать полностью строку именно id который задан.

У меня есть таблица, топ, количество очков, как мне запросом из php сортировать эти очки от самых больших, до самых маленьких, и вернуть в php обратно топ 100 лучших набранных очков ?

Буду очень благодарен за помощь smile.gif

P.S когда то давно делал это, уже не помню...



Спустя 7 минут, 34 секунды (25.05.2010 - 16:57) Basili4 написал(а):

select * from table WHERE id=1

Спустя 2 минуты, 16 секунд (25.05.2010 - 17:00) Kuzya написал(а):
Вам поможет любой учебник по SQL.

Спустя 18 минут, 27 секунд (25.05.2010 - 17:18) Гость_Дмитрий написал(а):
Basili4, спасибо, как таким же методом перезаписать в ряд ?

mysql_query("INSERT INTO accounts(`id`, `score`, `gold`, `online` VALUES (15, 0,0,1)");

Т.е записать новые значения только в некоторые ячейки, определенного ID

Нашел много туториалов, но на счет сортировки и вывода обратно в php не находил (

Спустя 15 минут, 36 секунд (25.05.2010 - 17:34) Rand написал(а):
Ко второму вопросу, если записей не громадное количество:
SELECT * FROM accounts ORDER BY score DESC LIMIT 0,100

Спустя 8 минут, 7 секунд (25.05.2010 - 17:42) Rand написал(а):
К третьему вопросу:
mysql_query("UPDATE accounts SET score='0',gold='0',online='1' WHERE id='".$id."'") or die(mysql_error());

Спустя 37 минут, 23 секунды (25.05.2010 - 18:19) Гость_Дмитрий написал(а):
Rand, спасибо, но у меня все таки осталась не решенная проблма с сортировкой. Очень большое количество пользователей, у каждого есть свои очки, надо сортировать топ 100 пользователей, у кого самое большое количество очков...

Спустя 37 минут, 51 секунда (25.05.2010 - 18:57) Гость_Дмитрий написал(а):
Еще не большой вопросик happy.gif

Как мне сравнить, есть ли в Базе Данных такой же id, если есть, запретить регистрацию, если нету разрешить и т.п. ??

Спустя 2 минуты, 29 секунд (25.05.2010 - 18:59) DedMorozzz написал(а):
тю, ну написали же всё уже. Это "уроки SQL вводная глава". Пишешь SELECT * FROM table WHERE id=$id. далее смотришь, если есть значения, то такой айди есть, иначе нету(вы должны быть тут удивленны)

Спустя 13 минут, 56 секунд (25.05.2010 - 19:13) Rand написал(а):
Цитата (Гость_Дмитрий @ 25.05.2010 - 15:19)
Rand, спасибо, но у меня все таки осталась не решенная проблма с сортировкой. Очень большое количество пользователей, у каждого есть свои очки, надо сортировать топ 100 пользователей, у кого самое большое количество очков...

Как я уже писал:
mysql_query("SELECT * FROM accounts ORDER BY score DESC LIMIT 100")

Я не уверен, что это оптимальный вариант для базы с десятками тысяч пользователей, но другого не знаю.

Спустя 1 час, 2 минуты, 22 секунды (25.05.2010 - 20:16) vasa_c написал(а):
Викторина на phpforum.ru

Спустя 14 часов, 52 минуты, 58 секунд (26.05.2010 - 11:09) Гость_Дмитрий написал(а):
Rand, что и как возвращает функция

mysql_query("SELECT * FROM accounts ORDER BY score DESC LIMIT 100")


?

Спустя 1 минута, 19 секунд (26.05.2010 - 11:10) Basili4 написал(а):
Гость_Дмитрий
Напишите в гугле mysql_query и вам все раскажут

Спустя 2 минуты, 3 секунды (26.05.2010 - 11:12) Гость_Дмитрий написал(а):
Мне возвратило Resource id #3, ?

Спустя 2 минуты, 13 секунд (26.05.2010 - 11:14) DedMorozzz написал(а):
сейчас помогу. Дам ссылку которая не возратит на этот "запрос" ресурс айди. Как он у Вас вышел - незнаю http://tinyurl.com/249kh3h

Спустя 8 минут, 16 секунд (26.05.2010 - 11:23) sl4mmer написал(а):
Гость_Дмитрий
черт - ну это же здорово)) вот если б не возвратило айди то пришлось бы копатся с сервером, а так тока обработай его и получишь нужные данные.. (mysql_fetch_array например)... а вообще советую погуглить в яндексе по запросу "php работа с mysql" - там все описано)

Спустя 2 минуты, 18 секунд (26.05.2010 - 11:25) DedMorozzz написал(а):
не-не-не, sl4mmer, ты не прав. У него на запрос в гугле выдало ресурс айди. как он от гугла такого добился - я не знаю. Ибо ему уже ответили, что надо сделать (;

Спустя 17 секунд (26.05.2010 - 11:25) Гость_Дмитрий написал(а):
Понимаю юмор cool.gif , но я уже искал mysql_query, про сортировку ничего не находил, находил только mysql_query("SELECT my_col FROM my_tbl") и т.п. Но ничего о ORDER BY не находил...

Спустя 1 минута, 18 секунд (26.05.2010 - 11:26) Basili4 написал(а):
Тебе надо было посикать ЛЮБУЮ книжку ЛЮБОГО диалекта SQL там все есть.

Спустя 4 минуты, 16 секунд (26.05.2010 - 11:31) sl4mmer написал(а):
а если лень чиатать -я тут писал замудренный спаммер для ЖЖ и чтобы удобнее было сделал класс для работы с БД.. полностью он тебе не нужен, т.к. там много специфичных функций.. но вот кусочек который может пригодиться (предпологаеться что данне доступа лежат в ини файле)

его без проблем можно заточить под конкретные нужды)


class dbase {
var $dbuser='';
var $dbname='';
var $dbpass='';
var $dbtable='';
var $sql='';
var $results='';


function getvars(){
$vars=parse_ini_file('conf.ini');
$this->dbname= $vars['name'];
$this->dbuser= $vars['user'];
$this->dbpass= $vars['pass'];
$this->dbhost= $vars['host'];
}

function connect(){
mysql_connect($this->dbhost, $this->dbuser, $this->dbpass) or die("Пользователю ". $this->dbuser." отказано в доступе к серверу на ". $this->dbhost."<br>");
mysql_select_db($this->dbname) or die("Не могу подключиться к базе ". $this->dbname."<br>");
}

function get_count($table){
$sql=("SELECT COUNT(*) FROM `$table`");
$this->results=mysql_fetch_row(mysql_query($sql));
$this->results=$this->results['0'];
}

function get_rows($table,$row,$if){
$sql=("SELECT $row FROM `$table` $if");
$res=mysql_query($sql);
while($roww = mysql_fetch_array($res))
{
$this->results[]=$roww;
$i++;
}

}



function insert_it ($table,$id,$name,$comment){
$name=trim($name);
$id=trim($id);
$comment=trim($comment);
$table=trim($table);
$sql = "SELECT * FROM `$table` WHERE `name` LIKE '$name' LIMIT 0, 1 ";

$results1=mysql_fetch_array(mysql_query($sql));

if ($results1[0]=='') {
$sql = "INSERT INTO `$table` (`id`, `name`, `comments`) VALUES ($id, '$name', '$comment');";

mysql_query($sql);

return 1;
} else {
return 0;
}
}
}

Спустя 4 минуты, 33 секунды (26.05.2010 - 11:35) sl4mmer написал(а):
Гость_Дмитрий
ты в phpmyadmin всяческие запросы поделай - он текст запроса пишет всегда - я лично так учился sql ))

Спустя 2 минуты, 47 секунд (26.05.2010 - 11:38) Basili4 написал(а):

$results1=mysql_fetch_array(mysql_query($sql));

if ($results1[0]=='') {
$sql = "INSERT INTO `$table` (`id`, `name`, `comments`) VALUES ($id, '$name', '$comment');";

mysql_query($sql);

return 1;
} else {
return 0;
}
}

Меня очень заитересовал вот это кусочек кода. Как я понимаю в случае ошибки в $results1[0] будет лежать первая буква сообщения об ошибке если пусто значит ошибки нет.
Возникает следующий вопрос есди ошибки нет значит $results1[0] попадает 1 поле результата запроса а если оно пустое. тады что получается ошибка????? Вернее фунция верент код ошибки. Помне это кусок необходимо переписать


Спустя 10 минут, 35 секунд (26.05.2010 - 11:49) sl4mmer написал(а):
Basili4
посмотри строчкой выше - функция проверяет есть ли в Базе запись с таким же значением поля name если соответственно если они есть но в $results[0] будет возвращен ее айди - если нет то ничего не будет)) Конкретно в моем случае эта функция используеться для добавления пользователей в базу данных (для последующей работы с ними) - соответственно по 2 раза добавлять одного человека не надо - поэтому так и сделано

вызываеться она например вот так


$status= $db->insert_it('NULL',$friend[$i],' ');

соответственно статус обрабатываеться в функции парсинга)

Спустя 2 минуты, 5 секунд (26.05.2010 - 11:51) sl4mmer написал(а):
Basili4
ну хотя обработку ошибок написать можно -просто не вижу смысла в этом в моем случае, конечно для публичного сайта она должна быть)

Спустя 10 часов, 21 минута, 11 секунд (26.05.2010 - 22:12) Гость_Дмитрий написал(а):
Ну блин люди, что делать smile.gif
На запрос
SELECT * FROM accounts ORDER BY score ASC LIMIT 0, 5
возвращает Resource id #3 , а что даль ше то blink.gif . В Гугле искал ! Есть даже примеры, но почему то у меня не получается (

Спустя 2 часа, 23 минуты, 42 секунды (27.05.2010 - 00:36) Nikitian написал(а):
Смотрите семейство функций mysql_fetch_*
Там с примерами использования

Спустя 9 часов, 5 минут, 51 секунда (27.05.2010 - 09:41) sl4mmer написал(а):
Гость_Дмитрий

ну я же выше калсс выкладывал - там есть пример жеж) гянь внимательнее

function get_rows($table,$row,$if){
$sql=("SELECT $row FROM `$table` $if");
$res=mysql_query($sql);
while($roww = mysql_fetch_array($res))
{
$this->results[]=$roww;
$i++;
}

}

Спустя 2 часа, 7 минут, 37 секунд (27.05.2010 - 11:49) Rand написал(а):
$res=mysql_query("SELECT * FROM accounts ORDER BY score DESC LIMIT 100") or die(mysql_error());
while ($user = mysql_fetch_assoc($res)) {
echo $user['name']."\t".$user['score']."\n";
}
Быстрый ответ:

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