Подредба по ред на номерата

mizarck

Registered
Здравейте,
трябва да подредя резултати от SQL заявка по ID
ето кода който си написах но нещо не бачка

Код:
<?php
include ("include/config.php");
$i = "0";
$conn   = mysql_connect($host, $user, $pass);
$db     = mysql_select_db($db);
$chars="SET CHARACTER SET cp1251";mysql_query($chars); 
$query  = "select * from menu";
$result = mysql_query($query, $conn);
while ($row=mysql_fetch_row($result)) {
$i++;
if ($i == $row[0])
{
echo "$row[0]";
}
}
?>
в config.php са само променливите $host $user $pass $db

id-тата са поредни (1 2 3 4 5 6 7 8 9)

но след като не следва равенство цикала се прекратява и не ми изкарва другите

ПЛС хелп
 
нещо несхванах ,но..защо не ги подредиш още в заявката вмисъл..
$query = "select * from menu order by id DESC"; или ASC
и после тоя if не ти трябва.
 
10x бафиту

пп каде мога да намеря всички стойности на order by защото защото знам само 2
 
а как ще стане да подрежда не по ID а примерно човека с най-много точки(записани в полето в БД) да е номер 1 следващи 2 и т.н
 
mizarck каза:
10x бафиту

пп каде мога да намеря всички стойности на order by защото защото знам само 2
Стойностите, които може да приема ORDER BY (ако изобщо може да се каже подобно нещо) са имената на всички полета в таблицата.
Например в таблица с полета id, username, mail, age можеш да сортираш по всички изброени както поотделно, така и по всички.
Ето ти пример за подобно сортиране:

"SELECT * FROM table ORDER BY id DESC, username ASC, age DESC, mail ASC";

Това е изключително удобно, когато имаш няколко критерия, по които трябва да сортираш било то и във възходящ или низходящ ред (както виждаш не е задължително всички да са ASC или DESC).
 
jooorooo каза:
$query = "select * from users order by tochki DESC";

да това добре обаче как пред този с най-много точки да накарм да пише 1 пред втория по точки 2 и т.н. така до 32 примерно
 
сетих се за това как ще стане да номерира резултатите от БД като във класуиране а не чрез ID
правите си една обикновенна заявка към БД
ПРИМЕР:

include ("config.php");
mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db(snooker) or die( "MySQL Error.");
$query="SELECT * from klasirane order by points asc";
$result=mysql_query($query);


след това правите една променлива примерно $startposition и и задавате стойност 0:
$startposition=0;
после си правите променливите за резултатите от БД и там увеличавате стойността на променливата която създадохте със 1 и така тя се увеличава с 1 за всеки ред от таблицата и като сте нагласили да ги подрежда по точки от най-много към най-малко става и класирането
ПРИМЕР:

while ( $red = mysql_fetch_array( $result )){
$points=$red['points'];
$name=$red['name'];
$pozicia = $startposition + 1;


и след това си изкарвате резултатите с EHCO
Примерен код:

Код:
<?php
include ("config.php"); 
mysql_connect("$dbhost","$dbuser","$dbpass"); 
mysql_select_db(snooker) or die( "MySQL Error."); 
$query="SELECT * from ranking order by points asc"; 
$result=mysql_query($query); 
$startposition=0;
while ( $red = mysql_fetch_array( $result )){ 
$points=$red['points'];
$name=$red['name'];

$pozicia = $startposition + 1;


echo ("<table><tr><td width=20>$pozicia</td><td width=100>$name</td><td width=75>$points</td></tr></table>");
}?>
 
$pozicia = $startposition + 1;
може да го напишеш просто $pozicia++; което увеличава стойността на $pozicia с единица ;)
 

Горе