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

Jak prawidlowo wyswietlac ogloszenia przypisane do kategorii?

Object Storage Arubacloud
0 głosów
658 wizyt
pytanie zadane 12 czerwca 2015 w PHP przez pawlo12345 Użytkownik (660 p.)
Mam juz zrobiony dzialajacy skrypt obslugujacy wyswietlanie ogloszen przypisanych do kategorii i podkategorii. Caly ten skrypt znajduje sie w jendnym pliku pokaz_ogloszenia.php. Wewnatrz mamy trzy zapytania: 1. SELECT * FROM kategorie 2. SELECT * FROM podkategorie WHERE id_kategorii = $_SESSION['id_kat'] 3. SELECT * FROM ogloszenia WHERE id_podkategorii = $_SESSION['id_podkat'] W kazdym zapytaniu wyciagam wiele wynikow, wiec wypisuję je na ekran za pomocą pętli while. Po pierwszym zapytaniu mam pętle, która wypisuje mi wszystkie kategorie. Wewnątrz tej pętli wykonuje się drugie zapytanie, a jego wyniki to podkategorie przypisane do danej kategorii, które wypisuję wewnątrz druguej pętli while, pózniej zamykam tą pętlę. Na koniec pod drugą pętlą, ale wewnątrz pierwszej wykonuję trzecie zapytanie, a jego wyniki to ogloszenia przypisane do danej podkategorii, ktore rowniez wypisuję wewnątrz trzeciej, już, pętli while. Skrypt działa poprawnie, ale wszystko wypisuje mi się jedno pod drugim, a chodzi o to zeby po kliknięciu na dowolną kategorię, tak jak na przykład na tym forum pana Mirosława, wypisywały się wszystkie podkategorie przypisane do danej kategorii oraz po kliknięciu na podkategorię wyswietlały się wszystkie ogloszenia przypisane do niej. Nie tak jak teraz, że wszystko wypisuje mi sie jedno pod drugim. Na koniec jeszcze tabele w bazie: ogloszenia: id_ogloszenia, id_podkategorii, id_kategorii, temat, tresc kategorie: id_kategorii, nazwa_kategorii podkategorie: id_podkategorii, nazwa_podkategorii Z góry dziękuję za pomoc, pozdrawiam.

1 odpowiedź

0 głosów
odpowiedź 12 czerwca 2015 przez Comandeer Guru (601,110 p.)

A kod se sami stworzymy… ;)

Polecam taki tok postępowania:

  • wyświetlasz listę samych kategorii
  • jak ktoś kliknie na jakąś, otwierasz podstronę, gdzie w adresie przekazujesz jej id
  • pobierasz podkategorie tej kategorii
  • jak ktoś kliknie na jakąś, otwierasz podstronę, gdzie w adresie przekazujesz jej id
  • wyświetlasz ogłoszenia z danej podkategorii
komentarz 12 czerwca 2015 przez pawlo12345 Użytkownik (660 p.)
Wlasciwie dobry pomysl. Juz pokazuje kod pliku pokaz_ogloszenia.php
komentarz 12 czerwca 2015 przez pawlo12345 Użytkownik (660 p.)
Oto moj kod: <?php require_once('../config.php'); $polaczenie = new mysqli($db_host, $db_login, $db_pass, $db_name); if($polaczenie->connect_errno!=0) { $polaczenie->connect_errno; } else { $sql = "SELECT * FROM kategorie"; if($wyniki = $polaczenie->query($sql)) { while($kategorie = $wyniki->fetch_assoc()){ $_SESSION['id_kat'] = $kategorie['id_kategorii']; $_SESSION['nazwa_kat'] = $kategorie['nazwa_kategorii']; echo '<br>'; echo ''.$_SESSION['nazwa_kat'].' '; echo '


'; $sql = "SELECT * FROM podkategorie WHERE id_kategorii = '".$_SESSION['id_kat']."'"; if($podkategorie = $polaczenie->query($sql)) { while($podkategoria = $podkategorie->fetch_assoc()){ $_SESSION['id_podkat'] = $podkategoria['id_podkategorii']; $_SESSION['nazwa_podkat'] = $podkategoria['nazwa_podkategorii']; echo '
'; echo $_SESSION['nazwa_podkat']; echo '

'; $sql = "SELECT * FROM ogloszenia WHERE id_podkategorii = '".$_SESSION['id_podkat']."' "; if($ogloszenia = $polaczenie->query($sql)){ while($ogloszenie = $ogloszenia->fetch_assoc()){ $_SESSION['id_ogloszenia'] = $ogloszenie['id_ogloszenia']; $_SESSION['temat_ogloszenia'] = $ogloszenie['temat_ogloszenia']; $_SESSION['tresc_ogloszenia'] = $ogloszenie['tresc_ogloszenia']; echo '
'; echo $_SESSION['temat_ogloszenia']; echo '
'; echo $_SESSION['tresc_ogloszenia']; echo '
'; } } } } } $wyniki->free_result(); $podkategorie->free_result(); $ogloszenia->free_result(); } else { echo 'blad polaczenia'; } $polaczenie->close(); } ?>
komentarz 12 czerwca 2015 przez pawlo12345 Użytkownik (660 p.)
i czy jestes w stanie coś doradzić?
komentarz 12 czerwca 2015 przez Comandeer Guru (601,110 p.)

Spójrz na ten pseudokod - może coś Ci się rozjaśni ;)

<?php

$cat = isset($_GET['cat']) ? intval($_GET['cat']) : null;
$subcat = isset($_GET['subcat']) ? intval($_GET['subcat']) : null;

$categories = getCategories();

echo '<ul>';

while($category = $categories->fetch_assoc())
{
	echo '<li><a href="?cat=' . $category['id'] .'">' . $category['name'];
	
	if($cat === $category['id'])
	{
		echo '<ul>';

		$subcategories = getSubCategories($cat);

		while($subcategory = $subcategories->fetch_assoc())
		{
			echo '<li><a href="?cat=' . $category['id'] .'&amp;subcat=' . $subcategory['id'] . '">' . $category['name'];
	
			if($subcat === $subcategory['id'])
			{
				echo '<ul>';

				$articles = getArticles($subcat);

				while($article = $articles->fetch_assoc())
				{
					echo '<li>' . $article['name'] .'</li>';
				}

				echo '</ul>';
			}
				

			echo '</a></li>';
		}

		echo '</ul>';
	}
		

	echo '</a></li>';
}

echo '</ul>';

 

komentarz 12 czerwca 2015 przez pawlo12345 Użytkownik (660 p.)
Juz chyba rozumiem.

Podobne pytania

0 głosów
2 odpowiedzi 168 wizyt
pytanie zadane 10 listopada 2018 w SQL, bazy danych przez kenjiro244 Dyskutant (8,600 p.)
0 głosów
1 odpowiedź 153 wizyt
pytanie zadane 9 marca 2017 w Ogłoszenia, zlecenia przez dudek93 Nowicjusz (200 p.)

92,566 zapytań

141,420 odpowiedzi

319,614 komentarzy

61,952 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!

...