Skocz do zawartości

[PHP, MySQL, JS] Mały problem z drzewiek kategorii.


Necro

Rekomendowane odpowiedzi

Witam serdecznie

Borykam się z problemem jak podpiąć skrypt rozsuwający kategorii pod 3 poziome menu, był bym wdzięczny jak bym otrzymał pomoc.

Menu JS

 <ul class="accordion">

			<li>
				<a href="#">Item 3</a>
				<ul class="accordion">
				  <li><a href="#">Item 3 - 1 </a></li>
				  <li><a href="#">Item 3 - 2</a></li>
				  <li><a href="#">Item 3 - 2</a></li>
				</ul>
			  </li>

			  <li><a href="#">Item 1</a>
				  <ul class="accordion">
				  <li><a href="#">Item 1 - 1 </a></li>
				  <li><a href="#">Item 1 - 2</a></li>
				  <li>
					<a href="#">Item 1 - 3</a>
					<ul class="accordion">
					  <li><a href="#">Item 1 - 3 - 1</a></li>
					  <li><a href="#">Item 1 - 3 - 1 </a></li>
					  <li><a href="#">Item 1 - 3 - 1</a></li>
					</ul>
				  </li>
				</ul>
			  </li>
			  <li><a href="#">Item 2</a></li>
			  <li>
				<a href="#">Item 3</a>
				<ul class="accordion">
				  <li><a href="#">Item 3 - 1 </a></li>
				  <li><a href="#">Item 3 - 2</a></li>
				  <li><a href="#">Item 3 - 2</a></li>
				</ul>
			  </li>
			</ul>

Skrypt PHP

class mapa_strony

{

var $ile=0;

function pobierzKategorie()

{ }

function pobierzMenu($id)

{

$_pobierzKategoria = mysql_query("SELECT * FROM `kategorie` WHERE `IdK`='".$id."';");

$_pokazKategorie = mysql_fetch_array($_pobierzKategoria);

if ($id!=-1)

{
$this->ile=$this->ile+1;

return $this->pobierzMenu($_pokazKategorie['PodKategoria']);

}
}

function pokazMenu()

{

$_pobierzKategorie = mysql_query("SELECT * FROM `kategorie`;");

while ($_pokazKategorie = mysql_fetch_array($_pobierzKategorie))

{

$efekt="";

$this->pobierzMenu($_pokazKategorie['IdK']);

for ($i=0;$i<=$this->ile;$i++)

{

$efekt .= ">>";

}

echo $efekt." ".$_pokazKategorie['NazwaK'].$_pokazKategorie['IdK']."<br />";

$this->ile=0;

}
}
}
$cos = new mapa_strony;$cos->pokazMenu();

Chodzi o to że klikam:

'Item 1' (rozsuwa się) następnie 'Item 1 - 3' (rozsuwa się) i już sobie wybieram. Nie wiem jak podpiąć te dynamiczne menu pod skrypt.

Jeżeli jest ktoś kto by sobie z tym poradził, prosił bym o pomoc.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Ale jakiej pomocy oczekujesz - napisania tego za ciebie ?

Jest cała masa stron z opisami i przykładami jak zrobić wielopoziomowe menu w za pomocą DiV, JS i CSS. Podpatrz jak to inni robią.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Ale ja manu wielopoziomowe w js i html już mam. Działa dobrze, tylko chodzi mi jak w nie włożyć wyniki z mysql.

Tabela do tego skryptu jak wyżej wygląda tak:

CREATE TABLE `kategorie` (
 `IdK` int(11) NOT NULL auto_increment,
 `NazwaK` text,
 `PodKategoria` int(11) default NULL,
 PRIMARY KEY  (`IdK`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin2 AUTO_INCREMENT=10;

--
-- Zrzut danych tabeli `kategorie`
--

INSERT INTO `kategorie` (`IdK`, `NazwaK`, `PodKategoria`) VALUES
(1, 'Sprzet AGD', -1),
(2, 'Pralki', 1),
(3, 'Lodówki', 1),
(4, 'Sprzęt RTV', -1),
(5, 'TV', 4),
(6, 'LCD', 5),
(7, 'CRT', 5);

Odnośnik do komentarza
Udostępnij na innych stronach

Na ogólnych zasadach wykorzystywanych w tego typu drzewach np rekurencyjne wywoływanie funkcji "piszącej" strukturę drzewa.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Witam, już mam skrypt (poniżej) podpięty pod te menu. Jednak jest pewien problem, nie wiem dlaczego ale nie da rady kliknąć w 3 pozycje. Tzn po najechaniu zmienia się wartość URL, ale tak jak był by nieaktywny (<a href="#"></a>):

<?php	   	
		function isBox($id){
			$query = ("SELECT * FROM kategorie");
			$result = mysql_query($query)
				or die(mysql_error());
			while($check=mysql_fetch_array($result)){
				if($check[PodKategoria]==$id){
					return 1;
				}
			}
			return 0;
		}


		$query = ("SELECT * FROM kategorie WHERE PodKategoria='-1' ORDER BY `IdK` DESC");  //1
		$result1 = mysql_query($query)
				or die(mysql_error());
		echo'<ul class="accordion">';
		while($poz1=mysql_fetch_array($result1)){
			if(isBox($poz1[IdK])){
						echo'<li><a href="#">'.$poz1[NazwaK].'</a><ul class="accordion">';
					}else{
						echo'<li><a href="#">'.$poz1[NazwaK].'</a>';
					}
				$query = ("SELECT * FROM kategorie WHERE PodKategoria='".$poz1[IdK]."' ORDER BY `IdK` DESC");   //2
				$result2 = mysql_query($query)
					or die(mysql_error());
				while($poz2=mysql_fetch_array($result2)){
					if(isBox($poz2[IdK])){
						echo'<li><a href="#">'.$poz2[NazwaK].'</a><ul class="accordion">';
					}else{
						echo'<li><a href="#">'.$poz2[NazwaK].'</a>';
					}
						$query = ("SELECT * FROM kategorie WHERE PodKategoria='".$poz2[IdK]."' ORDER BY `IdK` DESC");   //3
						$result3 = mysql_query($query)
							or die(mysql_error());
						while($poz3=mysql_fetch_array($result3)){
								echo'<li><a href="index.php?view=cat&id='.$poz3[IdK].">'.$poz3[NazwaK].'</a></li>';
						} 
					if(isBox($poz2[IdK])){
						echo'</ul> </li>';
					}else{
						echo' </li>';
					}	
				}
				if(isBox($poz1[IdK])){
					echo'</ul> </li>';
				}else{
					echo' </li>';
				}	
		}
		echo'</ul>';
?>

Wydaje mi się że błąd jest w JS, bo po usunięciu da radę kliknąć w 3 pozycje ale już jest całe menu rozwinięte.

<script type="text/javascript">

$(function() {
	$(".accordion").accordion ({
		active:false,

	});
  });



</script>

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności