Сортиране по големина

cold_zero

Registered
Имам следния код:

Код:
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = " SELECT* FROM table";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$promenliva1 = $row[edno];
$promenliva2 = $row[dve];
$promenliva3 = $row[tri];
$promenliva4 = $row[chetiri];
$promenliva5 = $row[pet];

$obshto = $promenliva1 + $promenliva2 + $promenliva3 + $promenliva4 + $promenliva5;
$obshtoo = round($obshto);
}

Въпроса ми е как да сортирам по-големина $obshtoo
 
нещо не разбрах...
искаш да вземеш 5 полета от бд да ги събереш и после да сортираш по големина сборовете ли ?
ако е това ето моето решение
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = " SELECT* FROM table";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$promenliva1 = $row[edno];
$promenliva2 = $row[dve];
$promenliva3 = $row[tri];
$promenliva4 = $row[chetiri];
$promenliva5 = $row[pet];

$obshto = $promenliva1 + $promenliva2 + $promenliva3 + $promenliva4 + $promenliva5;
$array[] = round($obshto);
}
sort($array);
 
Нещо не става, като сложа кода който ми даде и си направих там променливи връзка с базата и всичко като сложа едно echo "$array"; ми изписва Array само без никакви числа :(
 
ами кво да ти покаже като тая променлива е масив ? :D
ако искаш да покажеш масива става така
Код:
echo "<pre>";
print_r($array);

а за това да е от най-голямото към най-малкото
просто обърни масива наобратно с array_reverse
ето ти една функция която да ползваш ако искаш
Код:
function dg_sort($array) {
return array_reverse(sort($array));
}

целия код ще изглежда така

$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = " SELECT* FROM table";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$promenliva1 = $row[edno];
$promenliva2 = $row[dve];
$promenliva3 = $row[tri];
$promenliva4 = $row[chetiri];
$promenliva5 = $row[pet];

$obshto = $promenliva1 + $promenliva2 + $promenliva3 + $promenliva4 + $promenliva5;
$array[] = round($obshto);
}
sort($array);
$array = array_reverse($array);
 
rsort($array); - за обратно сортиране;

За да си видиш стойностите можеш това:

foreach($array as $s)
{
echo $s , '<br>';
}

array_sum($array); - за намиране на общата сума;
 
Благодаря, обаче как да го направя да ми показва първите 5 по големина, като не го правя в самата заявка да има лимит за 5 записа да изкара, а при самото пресмятане на всички след като ги сортира да покаже първите 5?
 
ето как да премахнеш всички след 5-тото
Код:
foreach ($array as $key => $value) {
if ($key>4) unset($array[$key]);
}
значи целия код ще ти изглежда така
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query = " SELECT* FROM table";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$promenliva1 = $row[edno];
$promenliva2 = $row[dve];
$promenliva3 = $row[tri];
$promenliva4 = $row[chetiri];
$promenliva5 = $row[pet];

$obshto = $promenliva1 + $promenliva2 + $promenliva3 + $promenliva4 + $promenliva5;
$array[] = round($obshto);
}
rsort($array);
foreach ($array as $key => $value) {
if ($key>4) unset($array[$key]);
}
echo "<pre>";
print_r($array);
 
Още в заявката добавяш

Код:
ORDER BY колоната-със-стойностите ASC //или DESC не помня
 

Back
Горе