Just nu i M3-nätverket
Gå till innehåll

Åhh


DNAGoa

Rekommendera Poster

Nu har jag snart letat efter ett sytem som visar menyer utan någon himmla Javascript ..

 

Jag vill bygga ett system som klarar av att vissa

 

länk 1

- underkatalog till länk 1

- underkatalog till länk 1

- underkatalog till länk 1

- underkatalog till länk 1

länk 2

länk 3

 

så klickar man på länk 2 eller länk 3 så ska det vissas precis som innan fast istället

 

länk 1

länk 2

- underkatalog till länk 2

- underkatalog till länk 2

- underkatalog till länk 2

- underkatalog till länk 2

länk 3

 

hoppas ni fattar vad jag menar. Jag har testat med en massa olika loop funktioner men ingenting verkar vilja funka :(

 

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

Om du inte vill använda javascript så måste sidan laddas om först. Här är ett kort exempel.

http://81.26.253.111/1.php?menu=1

 

1.php

<html><body>
<?
$sMenu=[color="#0000ff"]$[/color]_GET['menu'];
[color="#0000ff"]for[/color] ($i=1;$i<4;$i++) {
$arrMenu[$i]='none';
}
$arrMenu[$sMenu]='';
?>
<a href="1.[color="#0000ff"]php[/color]?menu=1">Länk 1</a><br>
<div style="display:<? [color="#0000ff"]echo[/color] $arrMenu[1]?>;">
- Undermeny 11<br>
- Undermeny 12<br>
</div>
<a href="1.[color="#0000ff"]php[/color]?menu=2">Länk 2</a><br>
<div style="display:<? [color="#0000ff"]echo[/color] $arrMenu[2]?>;">
- Undermeny 21<br>
- Undermeny 22<br>
</div>
<a href="1.[color="#0000ff"]php[/color]?menu=3">Länk 3</a><br>
<div style="display:<? [color="#0000ff"]echo[/color] $arrMenu[3]?>;">
- Undermeny 31<br>
- Undermeny 32<br>
</div>
</body></html>

 

[inlägget ändrat 2005-02-21 01:53:57 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Det är inget fel på att ladda sidan eller något sånt det får jag fram. Det enda som jag inte klarar av är att få scriptet att göra detta.

 

Använder mig av PHP och MySql

 

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

Eller gör det fräckare...

 

Du behöver inte javascript. Det räcker med att du genererar en lite listigare meny mha t.ex din php/mysql-lösning. Nyckeln är css:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">

<head>

<style>

#navigate

{

margin: -6px 0 35px 0;

background: #e3e3e3;

padding: 0 9px 0 0;

line-height: 150%;

width: 741px;

font-size: 12px;

}

 

html > body #navigate { margin-top: 0; }

 

#navigate ul

{

margin: 0 0 0 0;

padding: 5px 0 6px 0;

list-style: none;

}

 

html > body #navigate ul { padding-top: 6px; }

 

#navigate ul li

{

position: relative;

display: inline;

}

 

#navigate ul li a

{

font-weight: bold;

padding: 7px 9px 8px 9px;

}

 

#navigate ul li a.home

{

color: #099;

margin-left: 18px;

}

 

#navigate ul li a:hover

{

color: #000;

}

 

#navigate ul li ul

{

width: 150px;

border-top: 1px solid #fff;

background-image: none;

background-color: #EFEFEF;

position: absolute;

margin: 0 0 0 0;

display: none;

left: 0;

top: 35px;

padding: 0 0 0 0;

}

 

html > body #navigate ul li ul { top: 23px; }

 

#navigate ul li ul li

{

display: block;

border-bottom: 1px solid #ccc;

}

 

#navigate ul li ul li a

{

font-weight: normal;

font-size: 11px;

padding: 2px 0 3px 13px;

display: block;

background-color: #EFEFEF;

width: 150px;

}

 

#navigate ul li ul li a:hover

{

background-image: none;

}

 

#navigate ul li:hover ul, #navigate ul li.over ul

{

display: block;

}

</style>

</head>

 

<body>

<div id="navigate">

<ul>

<li><a href="#">Meny 1</a><ul><li><a href="#">Val 1</a></li><li><a href="#">Val 2</a></li><li><a href="#">Val 3</a></li></ul></li>

<li><a href="#">Meny 2</a><ul><li><a href="#">Val 1</a></li><li><a href="#">Val 2</a></li><li><a href="#">Val 3</a></li></ul></li>

<li><a href="#">Meny 3</a><ul><li><a href="#">Val 1</a></li><li><a href="#">Val 2</a></li><li><a href="#">Val 3</a></li></ul></li>

</ul>

</div>

</body>

</html>

 

Länk till kommentar
Dela på andra webbplatser

Men jag vill ju ha en PHP script som gör att det kommer fina menyer som denna sida www.webhallen.com skulle det bara så svårt att fixa?

 

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

Täntke bygga ett system som klarar av detta.

 

länk 1

- underkatalog till länk 1

- underkatalog till länk 1

- underkatalog till länk 1

- underkatalog till länk 1

länk 2

länk 3

 

så klickar man på länk 2 eller länk 3 så ska det vissas precis som innan fast istället

 

länk 1

länk 2

- underkatalog till länk 2

- underkatalog till länk 2

- underkatalog till länk 2

- underkatalog till länk 2

länk 3

 

Utan några JAVA eller andra saker. Bara ren PHP och mysql, har hållit på nu i snart 3 dagar med detta *suck*

 

Tackar för all hjälp jag kan få :)

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

Och det var ju det som jag gav ett kodexempel som löser det. Du genererar helt enkelt hela din menystruktur och låter css ta hand om det åt dig.

 

Länk till kommentar
Dela på andra webbplatser

Ja men det är ju det som är problemet jag kan inte få en PHP kod som klarar av det jag vill ha (eller mer sagt inte klarar av att programmera)

 

Jag vt ju hur jag ska få den snygg och sånt men problemet är ju att jag vill ha hjälp med scriptet och mysql databaen.

 

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

Ok, extremt enkelt skript som utgår ifrån en mysql-tabell som ser ut så här:

 

id int(11)

parentId int(11) // sätts till 0 om den ligger i topp

text varchar(200)

url varchar(200)

 

<?

$show_sub_levels_id = $get["show_sub_levels_id"];

 

$database = "databasens_namn";

$path = "";

$www_user = "user";

$www_password = "password";

 

mysql_connect("$path","$www_user","$www_password") OR DIE("Temporary error, please try again later. (unable to connect to database)");

mysql_select_db("$database") OR DIE ("Temporary error, please try again later. (unable to select database)");

 

function getTree(parentId="0", $show_sub_levels_id=""){

$query = "SELECT * FROM sektioner WHERE parentId='$parentId' ORDER BY text";

$result = mysql_query($query) OR DIE(mysql_error());

$rows = mysql_NumRows($result);

 

for($index=0; $index<$rows; $index++){

$parentId = mysql_result($result,$index,"parentId");

$text = mysql_result($result,$index,"text");

$url = mysql_result($result,$index,"url");

 

echo "<a href=\"$PHP_SELF?show_sub_levels_id=$show_sub_levels_id\">$text</a><br />";

 

if($id == $show_sub_levels_id){

getTree("$id", "$show_sub_levels_id");

}

}

}

 

getTree("0");

?>

 

Länk till kommentar
Dela på andra webbplatser

verkar vara fel på

 

function getTree(parentId="0),( $show_sub_levels_id="") {

 

den säger

 

Parse error: parse error, expecting `')'' in C:\WEB\PHPWeb\iShop\test.php on line 7

 

på står min apache server :(

 

 

People can be stupid... but never to stupid!

 

[inlägget ändrat 2005-02-21 16:53:02 av DNAGoa]

Länk till kommentar
Dela på andra webbplatser

Det kan jag tänka mig, koden är inte körd bara skriven direkt här i forumet och i det här fallet så var det ett $ som hade trillat bort:

 

function getTree($parentId="0", $show_sub_levels_id=""){

 

 

 

den här raden:

getTree("0");

 

borde också vara:

 

getTree("0", "$show_sub_levels_id");

 

Länk till kommentar
Dela på andra webbplatser

Allt funkar nästan förutom att den gör evighets loppar hela tiden!!

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

Vi kan passa på och snygga till koden lite till dessutom;

 

lägg till den här funktionen:

 

function hasChild($id){

$query = "SELECT * FROM sektioner WHERE parentId='$id'";

$result = mysql_query($query) OR DIE(mysql_error());

$rows = mysql_NumRows($result);

 

if($rows != 0){

return true;

}else{

return false;

}

}

 

och så ändrar vi de här raderna:

 

if($id == $show_sub_levels_id){

getTree("$id", "$show_sub_levels_id");

}

 

till:

 

if($id == $show_sub_levels_id){

if(hasChild("$id"){

getTree("$id", "$show_sub_levels_id");

}

}

 

på så sätt kollar vi upp om databasfältet har "barn" eller inte innan vi rekursivyt anropar getTree på nytt.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Sjävklart är den första (id)NOT NULL PRIMARY KEY AUTO_INCREMENT

 

id int(11)

parentId int(11) // sätts till 0 om den ligger i topp

text varchar(200)

url varchar(200)

 

var det något annat du önskar att veta?

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

Menar du att du vill ha datan som kommer ut från MySql eller menar du du inställningarna från PHP-MySql kopplingen?

 

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

$show_sub_levels_id = $get["show_sub_levels_id"];

$get ska vara $_GET och det är en bra idé att kolla att den verkligen innehåller ett vettigt värde eftersom klienten kan skicka vad som helst. Iofs kan man inte göra nån riktig skada med $show_sub_levels_id just nu i din kod, men det är bra att ha för vana att alltid kolla indata från användaren. Dessutom finns det ju en chans att man senare ändrar i koden och börjar använda variabeln på ett mer sårbart sätt.

 

 

[color="#ff0000"]mysql_connect[/color]("$path","$www_user","$www_password") ...
[color="#ff0000"]mysql_select_db[/color]("$database") ...
[color="#0000ff"]function[/color] getTree(parentId="0",...
getTree("$id", "$show_sub_levels_id");

Du har väldigt många överflödiga citattecken (eller finns det någon anledning till att du sätter variablerna inom citattecken?)

 

Länk till kommentar
Dela på andra webbplatser

Citattecken är där av gammal vana, främst för att jag gillar att kunna debugga snabbt och fylla i ett värde istället för variabeln och slippa tänka på citattecken och riskera att glömam något. det är en debugoptimering helt enkelt. :)

 

Länk till kommentar
Dela på andra webbplatser

<?[color="#0000ff"]php[/color]
[color="#0000ff"]echo[/color] "<a href="meny.[color="#0000ff"]php[/color]?m=1">länk1</a><br>";
[color="#0000ff"]if[/color] ([color="#0000ff"]$[/color]_GET['m'] == "1") {
[color="#0000ff"]echo[/color] "undermeny1<br>";
[color="#0000ff"]echo[/color] "undermeny1<br>";
[color="#0000ff"]echo[/color] "undermeny1<br>";
}
[color="#0000ff"]echo[/color] "<a href="meny.[color="#0000ff"]php[/color]?m=2">länk2</a><br>";
[color="#0000ff"]if[/color] ([color="#0000ff"]$[/color]_GET['m'] == "2") {
[color="#0000ff"]echo[/color] "undermeny2<br>";
[color="#0000ff"]echo[/color] "undermeny2<br>";
[color="#0000ff"]echo[/color] "undermeny2<br>";
}
?>

 

typ så mennu har ja bara läst det första inlägget vet inte vad som hände där på slutet dukanske inte är ute efter det där längre?

 

[inlägget ändrat 2005-02-22 11:49:29 av kroch]

Länk till kommentar
Dela på andra webbplatser

Jag vill ha en KOD som fixar det ungefär som du visar sig

 

<?php

echo "<a href="meny.php?m=1">länk1</a><br>";

if ($_GET['m'] == "1") {

echo "undermeny1<br>";

echo "undermeny1<br>";

echo "undermeny1<br>";

}

echo "<a href="meny.php?m=2">länk2</a><br>";

if ($_GET['m'] == "2") {

echo "undermeny2<br>";

echo "undermeny2<br>";

echo "undermeny2<br>";

}

?>

 

alltså själva koden som producerar själva scriptet så här med MySql koppling och laddar detta från en databas :)

 

länk 1

- underkatalog till länk 1

- underkatalog till länk 1

- underkatalog till länk 1

- underkatalog till länk 1

länk 2

länk 3

 

men det kanske är lite för mycket begärt?

 

 

People can be stupid... but never to stupid!

 

Länk till kommentar
Dela på andra webbplatser

Jag gillar inte att lämna saker oavklarade så här får du en databas och en kodsnutt som fungear som du vill att den skall fungear , den är testkörd och rapp:

 

<?
$show_sub_levels_id = [color="#0000ff"]$[/color]_GET["show_sub_levels_id"];

$database = "test";
$path = "";
$www_user = "user";
$www_password = "";

[color="#ff0000"]mysql_connect[/color]("$path","$www_user","$www_password") [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]("Temporary error, please try again later. (unable to connect to database)");
[color="#ff0000"]mysql_select_db[/color]("$database") [color="#0000ff"]or[/color] [color="#0000ff"]die[/color] ("Temporary error, please try again later. (unable to select database)");

[color="#0000ff"]function[/color] getTree($parentId="0", $show_sub_levels_id="", $level="0"){
	$query = "SELECT * FROM sektioner WHERE parentId='$parentId' ORDER BY text";
	$result = [color="#ff0000"]mysql_query[/color]($query) [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]([color="#ff0000"]mysql_error[/color]());
	$rows = mysql_NumRows($result);

	[color="#0000ff"]for[/color]($index=0; $index<$rows; $index++){
		$id = [color="#ff0000"]mysql_result[/color]($result,$index,"id");
		$text = [color="#ff0000"]mysql_result[/color]($result,$index,"text");
		$url = [color="#ff0000"]mysql_result[/color]($result,$index,"url");

		[color="#0000ff"]for[/color]($a = 0; $a<$level; $a++){
			[color="#0000ff"]echo[/color] "-";
		}

		[color="#0000ff"]if[/color]($url != ""){
			[color="#0000ff"]echo[/color] "<a href=\"$url\">;$text</a><br />\n";
		}[color="#0000ff"]else[/color]{
			[color="#0000ff"]echo[/color] "<a href=\"[color="#0000ff"]$[/color][color="#0000ff"]php[/color]_SELF?show_sub_levels_id=$id\">;$text</a><br />\n";
		}

		[color="#0000ff"]if[/color]($id == $show_sub_levels_id){
			[color="#0000ff"]if[/color](hasChild("$id")){
				getTree("$id", "$show_sub_levels_id", $level+1);
			}
		}
	}
 	}

[color="#0000ff"]function[/color] hasChild($id){
	$query = "SELECT * FROM sektioner WHERE parentId='$id'";
	$result = [color="#ff0000"]mysql_query[/color]($query) [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]([color="#ff0000"]mysql_error[/color]());
	$rows = mysql_NumRows($result);

	[color="#0000ff"]if[/color]($rows != 0){
		[color="#0000ff"]return[/color] [color="#ff8C00"]TRUE[/color];
	}[color="#0000ff"]else[/color]{
		[color="#0000ff"]return[/color] [color="#ff8C00"]FALSE[/color];
	}
}

getTree("0", "$show_sub_levels_id", "0");
?>

 

och databasen:

 

CREATE TABLE `sektioner` (
  `id` [color="#0000ff"]int[/color](11) NOT NULL auto_increment,
  `parentId` [color="#0000ff"]int[/color](11) [color="#0000ff"]default[/color] NULL,
  `text` varchar(255) [color="#0000ff"]default[/color] NULL,
  `url` varchar(255) [color="#0000ff"]default[/color] NULL,
  PRIMARY [color="#ff0000"]key[/color]  (`id`),
  [color="#ff0000"]key[/color] `parentId` (`parentId`)
) TYPE=MyISAM;

INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("1","0","l?nk 1","");
INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("2","0","l?nk 2","");
INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("3","1","subl?nk 1:1","http:[color="#006400"]//1,1");[/color]
INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("4","1","subl?nk 1:2","http:[color="#006400"]//1,2");[/color]
INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("5","2","subl?nk 2","http:[color="#006400"]//2");[/color]

 

Slite det med hälsan. :)

 

Länk till kommentar
Dela på andra webbplatser

Jag gillar inte att lämna saker oavklarade så här får du en databas och en kodsnutt som fungear som du vill att den skall fungear , den är testkörd och rapp:

 

<?
$show_sub_levels_id = [color="#0000ff"]$[/color]_GET["show_sub_levels_id"];

$database = "test";
$path = "";
$www_user = "user";
$www_password = "";

[color="#ff0000"]mysql_connect[/color]("$path","$www_user","$www_password") [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]("Temporary error, please try again later. (unable to connect to database)");
[color="#ff0000"]mysql_select_db[/color]("$database") [color="#0000ff"]or[/color] [color="#0000ff"]die[/color] ("Temporary error, please try again later. (unable to select database)");

[color="#0000ff"]function[/color] getTree($parentId="0", $show_sub_levels_id="", $level="0"){
	$query = "SELECT * FROM sektioner WHERE parentId='$parentId' ORDER BY text";
	$result = [color="#ff0000"]mysql_query[/color]($query) [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]([color="#ff0000"]mysql_error[/color]());
	$rows = mysql_NumRows($result);

	[color="#0000ff"]for[/color]($index=0; $index<$rows; $index++){
		$id = [color="#ff0000"]mysql_result[/color]($result,$index,"id");
		$text = [color="#ff0000"]mysql_result[/color]($result,$index,"text");
		$url = [color="#ff0000"]mysql_result[/color]($result,$index,"url");

		[color="#0000ff"]for[/color]($a = 0; $a<$level; $a++){
			[color="#0000ff"]echo[/color] "-";
		}

		[color="#0000ff"]if[/color]($url != ""){
			[color="#0000ff"]echo[/color] "<a href=\"$url\">;$text</a><br />\n";
		}[color="#0000ff"]else[/color]{
			[color="#0000ff"]echo[/color] "<a href=\"[color="#0000ff"]$[/color][color="#0000ff"]php[/color]_SELF?show_sub_levels_id=$id\">;$text</a><br />\n";
		}

		[color="#0000ff"]if[/color]($id == $show_sub_levels_id){
			[color="#0000ff"]if[/color](hasChild("$id")){
				getTree("$id", "$show_sub_levels_id", $level+1);
			}
		}
	}
 	}

[color="#0000ff"]function[/color] hasChild($id){
	$query = "SELECT * FROM sektioner WHERE parentId='$id'";
	$result = [color="#ff0000"]mysql_query[/color]($query) [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]([color="#ff0000"]mysql_error[/color]());
	$rows = mysql_NumRows($result);

	[color="#0000ff"]if[/color]($rows != 0){
		[color="#0000ff"]return[/color] [color="#ff8C00"]TRUE[/color];
	}[color="#0000ff"]else[/color]{
		[color="#0000ff"]return[/color] [color="#ff8C00"]FALSE[/color];
	}
}

getTree("0", "$show_sub_levels_id", "0");
?>

 

och databasen:

 

CREATE TABLE `sektioner` (
  `id` [color="#0000ff"]int[/color](11) NOT NULL auto_increment,
  `parentId` [color="#0000ff"]int[/color](11) [color="#0000ff"]default[/color] NULL,
  `text` varchar(255) [color="#0000ff"]default[/color] NULL,
  `url` varchar(255) [color="#0000ff"]default[/color] NULL,
  PRIMARY [color="#ff0000"]key[/color]  (`id`),
  [color="#ff0000"]key[/color] `parentId` (`parentId`)
) TYPE=MyISAM;

INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("1","0","l?nk 1","");
INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("2","0","l?nk 2","");
INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("3","1","subl?nk 1:1","http:[color="#006400"]//1,1");[/color]
INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("4","1","subl?nk 1:2","http:[color="#006400"]//1,2");[/color]
INSERT INTO `sektioner` (`id`,`parentId`,`text`,`url`) VALUES ("5","2","subl?nk 2","http:[color="#006400"]//2");[/color]

 

Slite det med hälsan. :)

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...