Сортиране от база данни по два критерия

vasilev5

Registered
Имам този код за извеждане на резултати от база днни

<?
include "config.php";
$sql = "SELECT * FROM results test ORDER BY koef DESC";
$res = mysql_query($sql);


echo "<table border='0'>

<tr><td class='glavno_td'>Ïîòðåáèòåë</td><td class='glavno_td'>Òåñò</td><td class='glavno_td'>Âåðíè</td>
<td class='glavno_td'>Ãðåøíè</td><td class='glavno_td'>Ðåçóëòàò</td>";

while($row = mysql_fetch_array($res)) {
echo "<tr><td>$row[name]</td><td>$row[test]</td><td>$row[verni]</td><td>$row[greshni]</td><td>$row[koef]%</td>";
}
echo "</table>";
?>
но как да направя да се сортира и по име на теста и коефицент
 
vasilev5 каза:
Имам този код за извеждане на резултати от база днни

<?
include "config.php";
$sql = "SELECT * FROM results test ORDER BY koef DESC";
$res = mysql_query($sql);


echo "<table border='0'>

<tr><td class='glavno_td'>Ïîòðåáèòåë</td><td class='glavno_td'>Òåñò</td><td class='glavno_td'>Âåðíè</td>
<td class='glavno_td'>Ãðåøíè</td><td class='glavno_td'>Ðåçóëòàò</td>";

while($row = mysql_fetch_array($res)) {
echo "<tr><td>$row[name]</td><td>$row[test]</td><td>$row[verni]</td><td>$row[greshni]</td><td>$row[koef]%</td>";
}
echo "</table>";
?>
но как да направя да се сортира и по име на теста и коефицент
Какво ще рече сортира ?
PHP:
$sql = "SELECT * FROM results WHERE name='$name' ORDER BY koef DESC";
нещо такова?
 
Да подреди резултатите първо по име на теста, второ по коефицент от всеки тест
 
Нищо не показва - излиза таблицата, но няма резултатите.
И не трябва да е name, а test, защото name е името на ученика, а тест е името на теста
 
joTunkiq каза:
PHP:
$sql = "SELECT * FROM results WHERE name='$name' ORDER BY `name` AND  `koef` DESC";
:D
Това последното AND не ми харесва. Замести го със запетайка:
[sql]SELECT * FROM results WHERE name='$name' ORDER BY `name`,`test` DESC[/sql]
 
vasilev5 каза:
Нищо не извежда
Създадох си таблица с разни редове:[sql]
CREATE TABLE IF NOT EXISTS `webtourist` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
`test` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;

INSERT INTO `webtourist` (`id`, `name`, `test`) VALUES
(1, 'aaaa', '5.50'),
(2, 'bbbb', '5.40'),
(3, 'aaaa', '5.80'),
(4, 'bbbb', '5.20'),
(5, 'cccc', '5.90');[/sql]
И тази заявка работи:
[sql]SELECT * FROM `webtourist` ORDER BY `name` , `test` DESC[/sql]
 
Моята таблица е

1 name varchar(255) utf8_unicode_ci Не Няма
2 ime varchar(25) utf8_unicode_ci Не
3 test varchar(40) utf8_unicode_ci Не
4 verni int(4) Не 0
5 greshni int(4) Не 0
6 koef int(12) Не 0
и оттук се опитвам да сортирам по тест и по коефицент
 
vasilev5 каза:
Моята таблица е

1 name varchar(255) utf8_unicode_ci Не Няма
2 ime varchar(25) utf8_unicode_ci Не
3 test varchar(40) utf8_unicode_ci Не
4 verni int(4) Не 0
5 greshni int(4) Не 0
6 koef int(12) Не 0
и оттук се опитвам да сортирам по тест и по коефицент

[sql]SELECT * FROM `table_name` ORDER BY `test` , `koef` DESC[/sql]

Би трябвало да работи. Ако искаш първо по коефициент и после по тест да сортираш, просто им размени местата.
 
Сложих това:
$sql = "SELECT * FROM 'results' ORDER BY `test` , `koef` DESC";
Излезе това:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in dir/quiz/testresults.php on line 12
Потребител Тест Верни Грешни Резултат

line 12- while($row = mysql_fetch_array($res)) {
 
vasilev5 каза:
Сложих това:
$sql = "SELECT * FROM 'results' ORDER BY `test` , `koef` DESC";
Излезе това:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in dir/quiz/testresults.php on line 12
Потребител Тест Верни Грешни Резултат

line 12- while($row = mysql_fetch_array($res)) {
Опитай това:
PHP:
<?php
	$conn = mysqli_connect("localhost","root","parola");
	mysqli_select_db($conn,"web");
	$sql = "SELECT * FROM `webtourist` ORDER BY  `name` ,  `test` DESC";
	$query = mysqli_query($conn,$sql) or die(mysqli_error());
	echo "<table><tr><td>Име</td><td>Тест</td><td>ID</td></tr>";
	while ($row = mysqli_fetch_assoc($query)) {
		echo "<tr><td>" . $row['name'] . "</td><td>" . $row['test'] . "</td><td>" . $row['id'] . "</td></tr>";
	}
	echo "</table>";
?>
При мен работи (само трябва да си промениш името на таблицата и свързването към БД).

Edit: чак сега видях, че си сложил 'result', а то трябва да е `result`(сменил си кавичките). Мисля че това ти бърка кода. Трябва да е така:
[sql]$sql = "SELECT * FROM `results` ORDER BY `test` , `koef` DESC";[/sql]
 
на мястото на root какво да сложа- името на БД
а на web какво да сложа от конфига си
 
Конфига ми е:
<?
$hostname = "localhost";
$user = "***";
$pass = "***";
$database = "****";
$conn = @mysql_connect("$hostname","$user","$pass");
@mysql_select_db($database) or die(mysql_error());
mysql_query("SET names cp1251");
?>
 
vasilev5 каза:
на мястото на root какво да сложа- името на БД
а на web какво да сложа от конфига си

localhost = името на хоста
root = името на потребителя на mysql
parola = паролата ти
web = името на базата данни
webtourist = името на таблицата

Но ти казах първо да оправиш кавичките си и тогава подкарай това което ти дадох. Няма смисъл да се мъчиш да напасваш мойто творение към твоето ако можеш да се оправиш с две цъкания.
 

Back
Горе