• 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

Cloud VPS
+1 głos
245 wizyt
pytanie zadane 13 listopada 2020 w SQL, bazy danych przez okti00 Obywatel (1,590 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 (215,050 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,590 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 (215,050 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,590 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 (256,600 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,590 p.)
Bardzo przydatne, na pewno użyje:D

Podobne pytania

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

93,454 zapytań

142,448 odpowiedzi

322,717 komentarzy

62,832 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

Kursy INF.02 i INF.03
...