Strict Standards: Resource ID#31 used as offset, casting to integer (31) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#33 used as offset, casting to integer (33) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#34 used as offset, casting to integer (34) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Сравнение чисел... :)
ТвойWeb » WebMaster класс » PHP/Perl » Сравнение чисел... :)

Страниц (1): [1]
 

1. taIFan - 13 Мая, 2005 - 16:35:17 - перейти к сообщению
Судя по всему, решение оч. простое... Но после 6-ех часов поисков и раздумий я так ни к чему и не пришел.
CODE:

$query = 'select Name, cLevel, Restarts from Character order by Restarts desc';
$result = mssql_query( $query );
for($i=0;$i<mssql_num_rows($result);++$i)
{
$row = mssql_fetch_row($result);
echo $i + 1;

В БД:
Name cLevel Restarts
Alisa 200 5
Vanja 210 5

Вообщем вопрос такой: в данном примере сортировка производится средствами ORDER, но т.к. ORDER сортирует только по одному значению, соотвественно оно не устраивает. Как сделать если значение Restarts одинаковое, то сортировка происходила по cLevel?
Честно перекрутил в голове 29374 вариантов, но т.к. познание в php равняются 8-и часам упорного редактирования... Поэтому решил, что выкинув в исходнике упрощу задачу благодетелю. Заранее спасибо).
2. TvoyWeb - 13 Мая, 2005 - 18:40:07 - перейти к сообщению
CODE:
$query = 'select Name, cLevel, Restarts from Character order by Restarts, cLevel desc';

Просто перечисляешь поля в порядке сортировки и все.
Цитата:
но т.к. познание в php равняются 8-и часам упорного

А это уже не PHP. Это MySQL Улыбка
3. taIFan - 16 Мая, 2005 - 02:26:56 - перейти к сообщению
TvoyWeb 10x Улыбка только не совсем так...
Предисловие:
Памятка начинающему программисту:
1) не пейте много кофе
2) если к 4-ем утра ничего не получается, лучше лечь спать
3) если с утра ничего не получилось, забросить это дело Улыбка)
После долгих раздумий, я додумался зайти, и посмотреть синтаксис команды ORDER Улыбка
И вот что получилось:
CODE:

$query = 'select Name, cLevel, Restarts from Character order by Restarts desc, cLevel desc';

Улыбка Ну как всегда все на самом деле просто...
TvoyWeb а не мог бы ты подсказать, как сделать, чтобы только первые 5 записей выводилось? Т.е. огриничить echo $i + 1; до 5 ? Улыбка
CODE:

$row = mssql_fetch_row($result);
echo $i + 1;
4. TvoyWeb - 16 Мая, 2005 - 03:23:30 - перейти к сообщению
taIFan пишет:
Т.е. огриничить echo $i + 1; до 5 ?

Зачем echo ? Поставь лимит в конец запроса 'LIMIT 0, 5'
taIFan пишет:
олько не совсем так...

Странно почему не работает?.
Из мана:
CODE:
mysql> SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
5. taIFan - 16 Мая, 2005 - 04:33:40 - перейти к сообщению
7.2.10. How MySQL Optimizes ORDER BY
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;

echo для вывода Улыбка это html страница, которая выводит из БД (mssql) данные, и задача данного скрипта сортировать записи по полям restarts и clevel Улыбка и соотвественно присваивать им "места" 1-ое, 2-ое, 3-ее и т.д.
Ну этого я добился...
Limit тут наверное не подойдет, потому, что ограничение первых 5-и записей должно производится уже после сортировки Улыбка. Тем более что это не MySQL Улыбка а MSsql...
Вообщем суть в том, что после сортировки нужно первые 5 записей.. Подскажи пожалуйста как это сделать? Улыбка
6. TvoyWeb - 16 Мая, 2005 - 09:36:20 - перейти к сообщению
taIFan
3.3.4.4. Сортировка строк
Цитата:
Вообщем суть в том, что после сортировки нужно первые 5 записей.. Подскажи пожалуйста как это сделать?

CODE:
<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input is now array("red", "yellow")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input is now array("red", "orange")

$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input is now array("red", "green",
// "blue", "black", "maroon")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input is now array("red", "green",
// "blue", "purple", "yellow");
?>

7. taIFan - 16 Мая, 2005 - 13:37:37 - перейти к сообщению
TvoyWeb спасибо большое тебе за внимание.. Улыбка Оч. признателен.
Но опять таки получилось все по другому )):
CODE:

for($i=0;$i<mssql_num_rows($result);++$i)
вместо mssql_num_rows($result) надо было просто поставить 5 :P

Все равно огромное спасибо!
8. TvoyWeb - 16 Мая, 2005 - 17:02:58 - перейти к сообщению
taIFan
Ну зачем же выдергивать из мускуда лишнюю информацию?
Это же все сидит потом в памяти серваки, то есть хоть немного но загружает память сервера.
Для этого и есть LIMIT в SELECT запросах, чтобы выбрать только определенное кол-во зрезультатов. Даже можно выбрать с N по NN номеров.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0262]     [ Gzipped ]