webForumDet fria alternativet

Något fel på min meny (anv databas) / Datavärden i snygg meny?

JavaScript

12 svar · 557 visningar · startad av FreddeB

Medlem sedan mars 200513 inlägg
Frågan#1

Hej, jag behöver hjälp att få till min meny som ger ett felmedelande se bif.bild...

Första fältet i tabellen i databasen heter "kat" och 2:a heter "post" som då är tänkt ska bli en underkategori i menyn.

Alla svar är tacksamt mottagna!

koden ser ut som följer:

<SCRIPT LANGUAGE="JavaScript">

<!--

var gEBI = (document.getElementById) ? true : false;
var da = (document.all) ? true : false;
var lay = (document.layers) ? true : false;

function Meny(ID)
 {
 	var ktgID = "ktg_" + ID;
 	var imgID = "img_" + ID;
 	
 	if (gEBI)
 	{
 		ktgID = document.getElementById(ktgID);
 		imgID = document.getElementById(imgID);
 		//alert("gEBI");
 	}
 	else
 	{
 		if (da)
 		{
 			ktgID = document.all(ktgID);
 			imgID = document.all(imgID);
 			//alert("da");
 		}
 		else
 		{
 			if (lay)
 			{
 				//alert("lay");
 				//KtgID = document.layers(ktgID);
 				//imgID = document.layers(imgID);
 			}
 			else
 			{
 				alert("Sorry, your browser does not support this page!");
 			}
 		}
 	}
 	if (gEBI || da)
 	{
		if (ktgID.style.display == "none")
 		{
 			ktgID.style.display = "block";
 			imgID.src = "pilhoger.bmp";
 		}
 		else
 		{
 			ktgID.style.display = "none";
 			imgID.src = "pilhoger.bmp";
 		} 	
 	}
 	else
 	{
 		if (document.layers["ktg_"+ID].visibility == "hide")
 		{
 			document.layers["ktg_"+ID].visibility = "show";
 		//	imgID.src = "pilhoger.bmp";
 		}
 		else
 		{
 			document.layers["ktg_"+ID].visibility = "hide";
 		//	imgID.src = "pilhoger.bmp"
 		}
 	}

 }

var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav6up = (is_nav && (is_major >= 5));
var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie4up  = (is_ie && (is_major >= 4));
if (!(is_nav6up || is_ie4up))
{
	document.location.href = "utg_post.asp";
}
 //-->
</SCRIPT>

och inom <body>

<%	Set Connect = Server.CreateObject("ADODB.Connection")
 	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("data/budget_3_0.mdb") & ""
%>

<% 
set rs1 = connect.execute("SELECT DISTINCT kat FROM sum_post_bud_trans_utg ORDER BY kat")

counter = 1
%>

<% Do until rs1.Eof %>
<img id='img_<% =counter %>' src='pilhoger.bmp' border='0' onClick='java script: Meny(<% =counter %> );'> 
<a href='#' class='Meny' onClick='java script: Meny(<% =counter %> );'><b><% =rs1("kat") %></b></a><br>
<span id='ktg_<% =counter %>' style='display:none;'> 
<% set rs2=connect.execute("SELECT DISTINCT post FROM sum_post_bud_trans_utg where kat = '" & rs1("kat") & "' ORDER BY post") %>
<% Do until rs2.Eof %>
    <img src='pilhoger.bmp' border='0'><a href="utg_post.asp?grupp=<% =rs1("kat") %>&undergrupp=<% =rs2("post") %>" target="_blank"> 
<% =rs2("post") %></a><br>
<% counter = counter + 1 %>
<% rs2.Movenext
Loop
Rs2.Close %>
</span> 
<% rs1.Movenext
Loop
Rs1.Close %>
<% connect.close %>
felmeddelande.jpg
Medlem sedan dec. 20025 483 inlägg
#2

Hej!

Använd kodtaggar ([kod]kod här[/kod]) när du postar kod, så blir den lättare att följa.

Medlem sedan mars 200513 inlägg
#3

Ok nu har jag redigerat Kodtaggarna...
Men har jag gjort rätt för övrigt eller är jag helt ute o cyklar på något ställe.
Menyn fungerar ingenting förutom att den skriver ut alla kategorier under varan med en pil oxå...

Medlem sedan dec. 19996 721 inlägg
#4

Felet ligger inte i ASP, utan i JavaScript. Kolla på rad 570 i den skapade sidan (view source).

BTW så ska man inte skriva


<a href="#" onClick="javascript:Meny(1);">

utan


<a href="#" onClick="Meny(1);">

"javascript:" ska bara användas om man kallar på funktioner från href.

Det är dock inte detta som genererat felet.

OBS! Forumet lägger in mellanslaget i "javascript" om du undrade. Om inte så gjorde det det ändå. :)

Medlem sedan mars 200513 inlägg
#5

Tackar så mycket!! det fungerade perfa när jag gjorde som du sa.

Föresten, har du el någon annan nåt knep för att få posterna att visa sig bara genom att man för musen över kategorin och att dom sedan döljs när man för musen ut från kategorin.
Så långt har jag kommit, men när jag för musen över posterna som jag precis har öppnat så stänger jag ju dom samtidigt...?? : (

min kod jag använde:

<a href='#' class='Meny' onMouseOver='Meny(<% =counter %> );' onMouseOut='Meny(<% =counter %> );'><b><% =rs1("kat") %></b></a><br>
Medlem sedan dec. 19996 721 inlägg
#6

Du få gärna beskriva mer vad som ska hända. Kanske kan du lägga upp sidan så att man kan se den?

Flyttning till Javascript-forumet begärd

Medlem sedan dec. 200012 464 inlägg
#7

Flyttas från ASP

Medlem sedan mars 200513 inlägg
#8

Jo visst här är länken...
http://www.fredrik.bergqvist.se/budget_tillftest/utg_post.asp

Jag skulle vilja att posterna kommer upp lite snyggt vid sidan om och över aktuell kategori. Ungefär som på http://www.twinhelix.com/ (menyn till vänster)

Kan man göra detta och även kunna visa värden från en databas i själva menyn?

Här är föresten koden till sidan:

<SCRIPT LANGUAGE="JavaScript">

<!--

var gEBI = (document.getElementById) ? true : false;
var da = (document.all) ? true : false;
var lay = (document.layers) ? true : false;

function Meny(ID)
 {
 	var ktgID = "ktg_" + ID;
 	var imgID = "img_" + ID;
 	
 	if (gEBI)
 	{
 		ktgID = document.getElementById(ktgID);
 		imgID = document.getElementById(imgID);
 		//alert("gEBI");
 	}
 	else
 	{
 		if (da)
 		{
 			ktgID = document.all(ktgID);
 			imgID = document.all(imgID);
 			//alert("da");
 		}
 		else
 		{
 			if (lay)
 			{
 				//alert("lay");
 				//KtgID = document.layers(ktgID);
 				//imgID = document.layers(imgID);
 			}
 			else
 			{
 				alert("Sorry, your browser does not support this page!");
 			}
 		}
 	}
 	if (gEBI || da)
 	{
		if (ktgID.style.display == "none")
 		{
 			ktgID.style.display = "block";
 			imgID.src = "pilhoger.bmp";
 		}
 		else
 		{
 			ktgID.style.display = "none";
 			imgID.src = "pilhoger.bmp";
 		} 	
 	}
 	else
 	{
 		if (document.layers["ktg_"+ID].visibility == "hide")
 		{
 			document.layers["ktg_"+ID].visibility = "show";
 		//	imgID.src = "pilhoger.bmp";
 		}
 		else
 		{
 			document.layers["ktg_"+ID].visibility = "hide";
 		//	imgID.src = "pilhoger.bmp"
 		}
 	}

 }

var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav6up = (is_nav && (is_major >= 5));
var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie4up  = (is_ie && (is_major >= 4));
if (!(is_nav6up || is_ie4up))
{
	document.location.href = "utg_post.asp";
}
 //-->

</SCRIPT>

inom BODY...

<%	Set Connect = Server.CreateObject("ADODB.Connection")
 	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("data/budget_3_0.mdb") & ""

	Set RecSet = Server.CreateObject("ADODB.Recordset")
	Set RecSet2 = Server.CreateObject("ADODB.Recordset")
	Set rs1 = Server.CreateObject("ADODB.Recordset")
	Set rs2 = Server.CreateObject("ADODB.Recordset")
	

Texter = "SELECT * FROM varden"
RecSet.Open Texter, Connect, adOpenStatic, adLockOptimistic
man = RecSet("visa_man")
RecSet.Close  

if man = 1 Then 
manad = "jan"
End if
if man = 2 Then 
manad = "feb"
End if
if man = 3 Then 
manad = "mar"
End if
if man = 4 Then 
manad = "apr"
End if
if man = 5 Then 
manad = "maj"
End if
if man = 6 Then 
manad = "jun"
End if
if man = 7 Then 
manad = "jul"
End if
if man = 8 Then 
manad = "aug"
End if
if man = 9 Then 
manad = "sep"
End if
if man = 10 Then 
manad = "okt"
End if
if man = 11 Then 
manad = "nov"
End if
if man = 12 Then 
manad = "dec"
End if 
%>

<% Texter = "SELECT * FROM varden"
RecSet.Open Texter, Connect, adOpenStatic, adLockOptimistic
VISA_SIDA = RecSet("visa_sida")
RecSet.Close %>

<% '===================================================================================================================== %>
<% ' utgifter %>
<% '===================================================================================================================== %>
<% ' ///////////////////sum_post_bud_trans UTGIFTER//////////////////// %>
<% If Request.QueryString("what") = "" Then %>
<table class="tabell">

<% 
Texter = "SELECT * FROM sum_kat_bud_trans_utg where not id = 'trans'"
rs1.Open Texter, Connect, adOpenStatic, adLockOptimistic
counter = 1
Do until rs1.Eof 
%>

	<span onMouseOver='Meny(<% =counter %> );' onMouseOut='Meny(<% =counter %> );'>
		<td class="katutg"><a href='#' class='Meny' onClick='Meny(<% =counter %> );'><% =rs1("kat") %></a></TD>
<% VARDE = rs1("" & manad & "_bud") - (rs1("" & manad & "_bud") * 2) %>
		<td title="Summering av posternas riktvärden knutna till kategorin <% =rs1("kat") %>" class="sumutg"><% =VARDE %></td>
<% VARDE = rs1("" & manad & "_trans") - (rs1("" & manad & "_trans") * 2) %>
		<td title="Summering av gjorda transaktioner knutna till kategorin <% =rs1("kat") %>" class="sumutg"><% =VARDE %></td>
		</tr>
		
		<td colspan="3">
		<span id='ktg_<% =counter %>' style='display:none;'> 
			<table class="tabell">
	
<% 
Texter = "SELECT * FROM sum_post_bud_trans_utg where not id = 'trans' and kat = '" & rs1("kat") & "'"
rs2.Open Texter, Connect, adOpenStatic, adLockOptimistic
Do until rs2.Eof 
%>
	
			<td class="katutg"><% =rs2("kat") %></td>
			<td class="katutg"><% =rs2("post") %></td>
<% VARDE = rs2("" & manad & "_bud") - (rs2("" & manad & "_bud") * 2) %>
			<td title="Riktvärde knutet till posten <% =rs2("post") %>" class="sumutg"><a class="lank" href="utg_post.asp?what=edititnow&open=yes&id=<% =rs2("id") %>" target="ovansida"><% =VARDE %></a></td>
<% VARDE = rs2("" & manad & "_trans") - (rs2("" & manad & "_trans") * 2) %>
			<td title="Summering av gjorda transaktioner knutna till posten <% =rs2("post") %>" class="sumutg"><a class="lank" href="utg_post.asp?what=edittrans&open=yes&typ=<% =rs2("typ") %>&kat=<% =rs2("kat") %>&post=<% =rs2("post") %>&transid=<% =rs2("id") %>" target="ovansida"><% =VARDE %></a></td>
			</tr>
		
<%
counter = counter + 1
rs2.Movenext
Loop
Rs2.Close 
%>

			</table>
		</span> 
		</td>
		</tr>
	</span> 

<%
rs1.Movenext
Loop
Rs1.Close 
%>

</table>

<% end if %>
Medlem sedan mars 200513 inlägg
#9

Datavärden i snygg meny?

Jag skulle vilja att posterna kommer upp lite snyggt vid sidan om och över aktuell kategori. Ungefär som på http://www.twinhelix.com/ (menyn till vänster)

Här är länken till min meny...
http://www.fredrik.bergqvist.se/budget_tillftest/utg_post.asp

Kan man göra detta och även kunna visa värden från en databas i själva menyn?

Här är föresten koden till min sida:
Tack för hjälpen!

<SCRIPT LANGUAGE="JavaScript">

<!--

var gEBI = (document.getElementById) ? true : false;
var da = (document.all) ? true : false;
var lay = (document.layers) ? true : false;

function Meny(ID)
 {
 	var ktgID = "ktg_" + ID;
 	var imgID = "img_" + ID;
 	
 	if (gEBI)
 	{
 		ktgID = document.getElementById(ktgID);
 		imgID = document.getElementById(imgID);
 		//alert("gEBI");
 	}
 	else
 	{
 		if (da)
 		{
 			ktgID = document.all(ktgID);
 			imgID = document.all(imgID);
 			//alert("da");
 		}
 		else
 		{
 			if (lay)
 			{
 				//alert("lay");
 				//KtgID = document.layers(ktgID);
 				//imgID = document.layers(imgID);
 			}
 			else
 			{
 				alert("Sorry, your browser does not support this page!");
 			}
 		}
 	}
 	if (gEBI || da)
 	{
		if (ktgID.style.display == "none")
 		{
 			ktgID.style.display = "block";
 			imgID.src = "pilhoger.bmp";
 		}
 		else
 		{
 			ktgID.style.display = "none";
 			imgID.src = "pilhoger.bmp";
 		} 	
 	}
 	else
 	{
 		if (document.layers["ktg_"+ID].visibility == "hide")
 		{
 			document.layers["ktg_"+ID].visibility = "show";
 		//	imgID.src = "pilhoger.bmp";
 		}
 		else
 		{
 			document.layers["ktg_"+ID].visibility = "hide";
 		//	imgID.src = "pilhoger.bmp"
 		}
 	}

 }

var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav6up = (is_nav && (is_major >= 5));
var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie4up  = (is_ie && (is_major >= 4));
if (!(is_nav6up || is_ie4up))
{
	document.location.href = "utg_post.asp";
}
 //-->

</SCRIPT>

inom BODY...

<%	Set Connect = Server.CreateObject("ADODB.Connection")
 	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("data/budget_3_0.mdb") & ""

	Set RecSet = Server.CreateObject("ADODB.Recordset")
	Set RecSet2 = Server.CreateObject("ADODB.Recordset")
	Set rs1 = Server.CreateObject("ADODB.Recordset")
	Set rs2 = Server.CreateObject("ADODB.Recordset")
	

Texter = "SELECT * FROM varden"
RecSet.Open Texter, Connect, adOpenStatic, adLockOptimistic
man = RecSet("visa_man")
RecSet.Close  

if man = 1 Then 
manad = "jan"
End if
if man = 2 Then 
manad = "feb"
End if
if man = 3 Then 
manad = "mar"
End if
if man = 4 Then 
manad = "apr"
End if
if man = 5 Then 
manad = "maj"
End if
if man = 6 Then 
manad = "jun"
End if
if man = 7 Then 
manad = "jul"
End if
if man = 8 Then 
manad = "aug"
End if
if man = 9 Then 
manad = "sep"
End if
if man = 10 Then 
manad = "okt"
End if
if man = 11 Then 
manad = "nov"
End if
if man = 12 Then 
manad = "dec"
End if 
%>

<% Texter = "SELECT * FROM varden"
RecSet.Open Texter, Connect, adOpenStatic, adLockOptimistic
VISA_SIDA = RecSet("visa_sida")
RecSet.Close %>

<% '===================================================================================================================== %>
<% ' utgifter %>
<% '===================================================================================================================== %>
<% ' ///////////////////sum_post_bud_trans UTGIFTER//////////////////// %>
<% If Request.QueryString("what") = "" Then %>
<table class="tabell">

<% 
Texter = "SELECT * FROM sum_kat_bud_trans_utg where not id = 'trans'"
rs1.Open Texter, Connect, adOpenStatic, adLockOptimistic
counter = 1
Do until rs1.Eof 
%>

	<span onMouseOver='Meny(<% =counter %> );' onMouseOut='Meny(<% =counter %> );'>
		<td class="katutg"><a href='#' class='Meny' onClick='Meny(<% =counter %> );'><% =rs1("kat") %></a></TD>
<% VARDE = rs1("" & manad & "_bud") - (rs1("" & manad & "_bud") * 2) %>
		<td title="Summering av posternas riktvärden knutna till kategorin <% =rs1("kat") %>" class="sumutg"><% =VARDE %></td>
<% VARDE = rs1("" & manad & "_trans") - (rs1("" & manad & "_trans") * 2) %>
		<td title="Summering av gjorda transaktioner knutna till kategorin <% =rs1("kat") %>" class="sumutg"><% =VARDE %></td>
		</tr>
		
		<td colspan="3">
		<span id='ktg_<% =counter %>' style='display:none;'> 
			<table class="tabell">
	
<% 
Texter = "SELECT * FROM sum_post_bud_trans_utg where not id = 'trans' and kat = '" & rs1("kat") & "'"
rs2.Open Texter, Connect, adOpenStatic, adLockOptimistic
Do until rs2.Eof 
%>
	
			<td class="katutg"><% =rs2("kat") %></td>
			<td class="katutg"><% =rs2("post") %></td>
<% VARDE = rs2("" & manad & "_bud") - (rs2("" & manad & "_bud") * 2) %>
			<td title="Riktvärde knutet till posten <% =rs2("post") %>" class="sumutg"><a class="lank" href="utg_post.asp?what=edititnow&open=yes&id=<% =rs2("id") %>" target="ovansida"><% =VARDE %></a></td>
<% VARDE = rs2("" & manad & "_trans") - (rs2("" & manad & "_trans") * 2) %>
			<td title="Summering av gjorda transaktioner knutna till posten <% =rs2("post") %>" class="sumutg"><a class="lank" href="utg_post.asp?what=edittrans&open=yes&typ=<% =rs2("typ") %>&kat=<% =rs2("kat") %>&post=<% =rs2("post") %>&transid=<% =rs2("id") %>" target="ovansida"><% =VARDE %></a></td>
			</tr>
		
<%
counter = counter + 1
rs2.Movenext
Loop
Rs2.Close 
%>

			</table>
		</span> 
		</td>
		</tr>
	</span> 

<%
rs1.Movenext
Loop
Rs1.Close 
%>

</table>

<% end if %>
Medlem sedan dec. 1999419 inlägg
#10

Trådarna slås ihop.

Medlem sedan apr. 20031 660 inlägg
#11

HEJ!

Klart du kan göra en meny med databasanrop, lista ut vilken meny du önskar, sedan programmerar du in databasanrop och utskrift av menyalternativen i menyn.

Beroende på hur komplicerade inställningarna är till menyn, kan det vara svårt att få rätt på alla inställningar, men ta det bit för bit. Det är inte olösligt.

Om det går med det du har nu, undrar du säkert!
Eftersom allt hoppar runt när man klickar, vet jag inte ens om det kan kallas meny. Klart irriterande och svårnavigerat.

Men, är man ihärdig, och kompletterar med rätt kod, går det säkert, men jag hade nog fördragit att leta upp en ny.

Medlem sedan mars 200513 inlägg
#12

Ok. Det var inget du hade gjort förut då?
Vi får se hur det blir med det för min del, kanske jag fortsätter med den jag har... kanske man är lite lat?
Tack i alla fall

Medlem sedan apr. 20031 660 inlägg
#13

HEJ!

Delvis, liten meny har jag gjort, men jag har skapat inställningsfiler från databas för specialplugins (läser en form av textfil) och även javascript, tex för dynamiska dropdowns.

Exempel på det senare finns på http://www.atgconsulting.com/doublelist.asp, ovanför "Browser Compatibility Issues". Utskriften av recordsetet i VB-koden ger Javascript som styr listrutorna dynamiskt.

På motsvarande vis gör man med en meny. Från den som fungerar med statiska värden, gör man en dynamisk variant som skapar det javascript som behövs med hjälp av rs, databas och diverse loopar etc.

271 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)