• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z MYSQL, który z rzędu

Object Storage Arubacloud
+1 głos
155 wizyt
pytanie zadane 13 listopada 2020 w SQL, bazy danych przez okti00 Obywatel (1,300 p.)

Witam, ostatnio piszę projekt strony i napotkałem pewien problem. Mianowicie, mam bazę danych, która zawiera x rekordów i są to posty. Każdy post ma unikalne ID i zawiera kolumnę post_post, której warunek 0 oznacza brak sub-posta a każdy większy oznacza, że dany post jest sub-postem.

Czyli, dodam obrazek aby każdy zrozumiał:

Problem pojawia się, kiedy podzieliłem wypisywanie rekordów, na strony. Załóżmy, że wyświetlam tylko 4 na jednej stronie czyli:

* Główny post (strona nr. 1)
 > post id 2
 > post id 3
 > post id 4
 > post id 5

* Główny post (strona nr. 2)
 > post id 6
 > post id 7
 > post id 8
 > post id 9

I tak dalej, i teraz chciałbym aby mój skrypt, po otrzymaniu zmiennej $zmienna = 18; wiedział, że ten post jest na stronie 3 i zwracał numer strony. Niestety nie wiem jak się za to zabrać, o ile idzie coś takiego zrobić.

2 odpowiedzi

0 głosów
odpowiedź 13 listopada 2020 przez Ehlert Ekspert (212,670 p.)
Nie wiem, czy dobrze zrozumiałem. Popraw mnie proszę, jeśli źle myślę. Dlaczego trzymasz to wszystko w jednej tabeli?
komentarz 13 listopada 2020 przez okti00 Obywatel (1,300 p.)
Nie chcę robić kolejnej tabeli odpowiedzialnej za w sumie to samo i również potem te posty łatwiej wyświetlić, na profilu użytkownika (wszystkie naraz) czy to odpowiedź do posta, czy też główny post.
1
komentarz 13 listopada 2020 przez Ehlert Ekspert (212,670 p.)
To jest bardzo kiepski pomysł. Ja na Twoim miejscu podzieliłbym to na odpowiednie tabele. Skoro odpowiedzi odnoszą się do konkretnych postów to skorzystaj z relacji.
0 głosów
odpowiedź 14 listopada 2020 przez okti00 Obywatel (1,300 p.)
    if(isset($_GET['postsearch'])){
	$_sp_post = mysqli_fetch_array($mysqli->query("SELECT * FROM page_post WHERE post_id='".$_GET['postsearch']."'"));
	$_sp_test = mysqli_fetch_array($mysqli->query("SELECT *, COUNT(*) FROM page_post WHERE post_id <= '".$_GET['postsearch']."' AND post_post = '".$_sp_post['post_post']."'"));
	
	$subpost = $_sp_test['COUNT(*)'];
	if($subpost %25 != 0){
	$licz22 = 1+  ($subpost - $subpost % 25) / 25;
	}else{
	$licz22 = $subpost / 25;
	}
	
	Header("Location: ".$start_url."post/?topic=".$_GET['topic']."&page=".$licz22."#".$_sp_post['post_nameid']."");	
	}

Zrobiłem to w taki sposób, działa wszystko śmiga jak powinno.

Wystarczy określić id które wybraliśmy jako ostatnie, a następnie wyciągnąć COUNT(*) przez ilość wyświetlanych postów na stronę. (u mnie strona pierwsza to nie 0, lecz 1)

Co do zmiany tabeli i rozbicia na dwie, tyle ile głów tyle pomysłów doceniam ale nie wchodziłoby to w grę.

1
komentarz 14 listopada 2020 przez VBService Ekspert (253,340 p.)
edycja 14 listopada 2020 przez VBService

A co to za ... $_sp_test['COUNT(*)'] wink użyj polecenia tworzenia aliasu AS np.:

SELECT *, COUNT(*) FROM page_post ...

na 

SELECT *, COUNT(*) AS twoja_przyjazna_nazwa FROM page_post ...

i wtedy $_sp_test['twoja_przyjazna_nazwa']

komentarz 14 listopada 2020 przez okti00 Obywatel (1,300 p.)
Bardzo przydatne, na pewno użyje:D

Podobne pytania

0 głosów
1 odpowiedź 235 wizyt
0 głosów
1 odpowiedź 465 wizyt
pytanie zadane 16 marca 2020 w SQL, bazy danych przez PatryQHyper Nowicjusz (170 p.)
+1 głos
1 odpowiedź 208 wizyt
pytanie zadane 24 października 2015 w SQL, bazy danych przez sliwka92 Nowicjusz (240 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...