Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] wyświetlenie wybranych osób
Forum PHP.pl > Forum > Przedszkole
pionas
Cześć,

mam pewien problem.
Otóż chciałbym wyświetlić 5 osób w taki sposób, aby wyświetliło pierwszą, środkową, ostatnią i jeszcze osobę po środku pierwszej a środkowej i środkowej a ostatniej.
Np. mam 100 osób, czyli wyświetlam osobę 1, 50, 100 i 25 i 75.
Jak coś takiego zrobić? Biorąc pod uwagę też że mogę chcieć wyświetlić np. 7 osób 9 lub 10 i itp...
Szymciosek
Matematyka się kłania.

100 osób na 5, które chcesz wyświetlić = 25, więc to jest Twój skok.

Zaczynasz od stworzenia liczb z ID osób, które mają być wyświetlone i lecisz od początku wybierając je sobie z bazy poprzez

WHERE user.id = 1
WHERE user.id = 25
WHERE user.id = 50
WHERE user.id = 75
WHERE user.id = 100

Pierwszy musi być wklejony na sztywno, a później to już tylko skok co 25.

To jest rozwiązanie na 100 osób, z czego 5 chcesz wyświetlić.
Schody zaczynają się, gdy masz 7 osób do wyświetlenie wtedy 100/7 = 14,285714286, więc takiego skoku nie wykonasz. Tutaj sugerowałbym wtedy zaokrąglić liczbę do góry i będzie 15.
pionas
Czyli pobrać wszystkie rekordy z tabeli i zrobić coś takiego:
$osoby = array(1,2,3,4,5,6...50,51,52,....75,76,77,....99,100);
$ile_wyswietlic = 5;

$wszystkie_osoby = count($osoby);

$osoba[] = $osoby[0];
$osoba[] = $osoby[($wszystkie_osoby-1)];

$skok = ceil($wszystkie_osoby/$ile_wyswietlic);
for ($i=1;$i<=($ile_wyswietlic-2);$i++) {
$osoba[] = $osoby[($skok*$i)];
}

to by było coś takiego?
Szymciosek
Nie zbyt wydajne. Po co pobierać wszystkie osoby skoro w ostateczności operujesz na 5?

Sklej sobie jakieś zapytanie, które wyglądałoby tak:

SELECT * FROM persons p WHERE p.id IN (1,25,50,75,100)

Ty masz tylko zrobić taki string, który będzie zawierał te dane. Jeżeli korzystasz np. z PDO możesz sobie poczytać o tym jak w IN wsadzić array z liczbami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.