Сортирането на таблицата не работи

katsar0v

Registered
$sql = mysql_query('SELECT * FROM `users` ORDER BY points DESC');
while($row = mysql_fetch_assoc($sql))
{
echo '<tr><td align=center>'.$row['user'].'</td><td align=center>'.$row['points'].'</td></tr>';
}
Таблицата е
Потребители Точки
proba7 5
katsarov 4
proba2 3
proba 11
mishka 1
 
<?php
session_start();
include ('check_login.php');
echo'
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body><center>
<div class="header"></div>
';
if($_SESSION['log']=$r['id'])
{
echo '
<div class="menu">
<a href="index.php">Начало</a> <font color="555555">|</font> 
<a href="profile.php">Профил</a> <font color="555555">|</font> 
<a href="rating.php">Класация</a> <font color="555555">|</font> 
<a href="contacts.php">Свържи се с нас</a> <font color="555555">|</font> 
<a href="logout.php">Излез</a> <font color="555555">|</font> 
</div>';
}
else
{
echo '<div class="menu">
<a href="index.php">Начало</a> <font color="555555">|</font> 
<a href="login.php">Влез</a> <font color="555555">|</font> 
<a href="register.php">Регистрирай се</a> <font color="555555">|</font> 
<a href="rating.php">Класация</a> <font color="555555">|</font> 
<a href="contacts.php">Свържи се с нас</a>
</div>';
}
echo'
<div class="content" align="center"><br>';
echo '<table style="background:#666666;border:2px #777 solid;" cellspacing=0 cellpadding=0>
<tr>';
echo '<td style="color:#444">Потребители</td><td>Точки</td>';
$sql = mysql_query('SELECT * FROM `users` ORDER BY points DESC');
while($row = mysql_fetch_assoc($sql))
{
echo '<tr><td align=center>'.$row['user'].'</td><td align=center>'.$row['points'].'</td></tr>';
}
echo '</tr></table>';
echo'
</div>
<div class="footer"></div>
</center>
</body>
</html>';

Целия код , немога да те разбера какво имаш впредвид sql структура на таблицата ... :idea:
 
Провери дали полето ponts e зададена да бъде int
Да не си объркал да си я направил varchar или нещо друго.
 
А бе приятел искам ти сяла...

трябва да изглежда нещо от сорта на това но твоята таблица..

CREATE TABLE `news` (
`nowina` text NOT NULL,
`ime` varchar(255) NULL,
`awtor` varchar(255) NULL,
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`)
);
 
Хаха грешката е каквато аз ти казах.

Промени полето points да е int(11) а не varchar.

Varchar е за текст.
 
PhpMyadmin и от там променяш структурата на таблицата

INT - цифри.
varchar - текст.

Запомни защото това може да ти докара много главоболия ( както сега ). :)
 
id int(8) не None auto_increment
user varchar(255) latin1_swedish_ci не None
pass varchar(255) latin1_swedish_ci не None
points int(255) не None
last_date int(11) не None
EDIT:Оправи се , благодаря ви :)
 
Хаха int го направи на 11 а не на 255

11 означава максимум 11 на брой цифри демек - 11111111111 ( точките ти едва ли ще бъдат повече от тези :) )

С тези 255 само ще прецакаш базата данни.
 
katsar0v каза:
CREATE TABLE `users` (
`user` text NOT NULL,
`pass` varchar(255) NULL,
`points` varchar(255) NULL,
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`)
);
Правилно са ти писали по-горе.
Ако това ти е таблицата, полето points ти е varchar, което ще рече сортира пои азбучен ред. Когато сортираш по азбучен ред числата се сортират като думи а не като числа.
Смени си типа на полето points да е INT()
Препоръчвам ти и user да е VARCHAR(32) най-много същото се отнася и за pass. Паролата дори да я държиш MD5 криптирана в базата CHAR(32) ти е напълно достатъчно.
 

Back
Горе