Liczba porządkowa w sortowanej tabeli z danymi pobranymi z bazy danych

0

Cześć Wam

męczę się dziś od rana, żeby zrobić tabelę, która ma w sobie dane pobrane z bazy danych (plus wyniki obliczeń na tych danych) i największy problem, nie do przejścia dla mnie, to liczby porządkowe. Mam już tabelę ze wszystkich co chciałem, mogę ją sortować, ale nie potrafię dodać do niej kolumny na sztywno z liczbami porządkowymi wierszy, które nie ulegają sortowaniu ... Czy mogę prosić o jakąś poradę z Waszej strony? Z góry dziękuję.

1

Jak się nie da?!?!?!

Używasz jakiegoś gotowca / frameworka / biblioteki? To się o tym mówi

A jak zawsze na tym forum. KOD !!! KOD !!! KOD !!! Nawet z problemami

0

Jak sobie posortujesz tabelę z danymi, to tabela będzie posiadać index. I ten index możesz wykorzystać jako liczbę porządkową. Ofc zakładając, że sortowanie nie zachowało poprzednich indexów, a zostały one przyporządkowane od nowa.

0

No tak - zapomniałem wkleić kod ... :) używam skryptu javascript do sortowania.

edit Tę zmienną $i wyrzuciłem bo i tak nie działało (sortowało mi kolumnę LP z innymi wartościami)

	<?php
	
	$config = require_once 'config.php';

try {
	
	$db = new PDO("mysql:host={$config['host']};dbname={$config['database']};charset=utf8", $config['user'], $config['password'], [
		PDO::ATTR_EMULATE_PREPARES => false, 
		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
	]);
	
} catch (PDOException $error) {
	
	echo $error->getMessage();
	exit('Database error');
}
	$sql='SELECT name, grupa, mdolary, mpunkty, population, comfort, prestige, safety, liczba_budynkow, nota from users';
	
	echo"<table border='2px' id='s'>";
	echo"<thead>";
	echo"<tr>";
	echo"<td>LP</td>";
	echo"<td>Imię i nazwisko</td>";
	echo"<td class='sort'>Grupa</td>";
	echo"<td>Populacja</td>";
	echo"<td>Komfort</td>";
	echo"<td>Prestiż</td>";
	echo"<td>Bezpieczeństwo</td>";
	echo"<td>Liczba budynków</td>";
	echo"<td>Liczba ludności</td>";
	echo"<td>Podstawa podatku</td>";
	echo"<td>Podatek</td>";
	echo"<td class='sort'>DOCHÓD</td>";
	echo"</tr>";
	echo"<thead>";
	echo "<tbody>";
	foreach ($db->query($sql)as $row)
		{
			$i++;
			$people=$row['population']*$row['comfort'];
			$podstawa_podatku = $row['liczba_budynkow']*2;
			$podatek = $podstawa_podatku+$row['prestige'];
			$dochod = $people*$podatek;
			echo "<tr>";
			echo "<td>".$i."</td>";
			echo "<td>".$row['name']."</td>";
			echo "<td>".$row['grupa']."</td>";
			echo "<td>".$row['population']."</td>";
			echo "<td>".$row['comfort']."</td>";
			echo "<td>".$row['prestige']."</td>";
			echo "<td>".$row['safety']."</td>";
			echo "<td>".$row['liczba_budynkow']."</td>";
			echo "<td>".$people."</td>";
			echo "<td>".$podstawa_podatku."</td>";
			echo "<td>".$podatek."</td>";
			echo "<td>".$dochod."</td>";
			echo "</tr>";
		}
		echo"</tbody>";
	echo"</table>";
	
	$db = null;
	?>
	```php
1
Dariusz Szulc napisał(a):

używam skryptu javy do sortowania.

Wyjdź i nie wracaj, póki nie nauczysz się wymawiać/pisać prawidłowo nazwę języka, który używasz...

A co do sortowania, masz parę opcji:

  1. Sortujesz bezpośrednio w zapytaniu używając ORDER BY. Index z tablicy to liczba porządkowa.
  2. Zapisujesz wszystko do tablicy, potem tablicę sortujesz. Index z tablicy to liczba porządkowa. A dopiero na koniec tworzysz tabelkę.
  3. Możesz użyć datatables.js.
0

Serek poprawiłem, wybacz błędy, ale dopiero wdrażam się w temat programowania - dzięki za uwagę.

Co do 1 opcji chyba odpada, bo ja chcę sortować po wartości, która jest wynikiem obliczeń na danych pobranych z bazy danych.

serek napisał(a):
Dariusz Szulc napisał(a):

używam skryptu javy do sortowania.

Wyjdź i nie wracaj, póki nie nauczysz się wymawiać/pisać prawidłowo nazwę języka, który używasz...

A co do sortowania, masz parę opcji:

  1. Sortujesz bezpośrednio w zapytaniu używając ORDER BY. Index z tablicy to liczba porządkowa.
  2. Zapisujesz wszystko do tablicy, potem tablicę sortujesz. Index z tablicy to liczba porządkowa. A dopiero na koniec tworzysz tabelkę.
  3. Możesz użyć datatables.js.
1

Te obliczenia są tak proste, że możesz je zrobić spokojnie w zapytaniu do bazy.

Możesz też spróbować tego datatables.js, jest to całkiem przydatny skrypt, który umożliwia sortowanie, filtrowanie, itp. Tylko nie pamiętam jak to wyglądało z liczbą porządkową, musiałbyś doczytać, czy jest taka możliwość.

0

Obliczenia w zapytaniu do bazy? Nie wiedziałem, że tak mogę ... Dziękuję za info, poczytam, poszukam i pokombinuję

0

datatables.js świetna sprawa, ale niestety liczb porządkowych tam nie znalazłem. Nie mniej dzięki za polecenie, bardzo się przydało

1 użytkowników online, w tym zalogowanych: 0, gości: 1