webForumDet fria alternativet

nybörjarproblem med array

15 svar · 448 visningar · startad av timedia

timediaMedlem sedan maj 2001420 inlägg
#1
If IsArray(arrArtiklar) THEN
Response.Write("<br><TABLE border=0><tr><td>Id</td><td>Art.nr</td><td>Namn</td><td>Storlek</td><td>S-typ</td><td>Färg</td><td>Antal/pack</td><td>Varuinfo</td><td>Fakta</td></tr>")

For u = 0 To Ubound(arrArtiklar,2)
Response.Write("<TR>")
	For m = 0 To Ubound(arrArtiklar,1)	
	Response.Write("<TD bgcolor='#C0C0C0'>"&arrArtiklar(m,u)&"</a></TD>")
	Next

		Response.Write("<TD bgcolor='#C0C0C0'>")
		Response.Write("<a href='shBasket.asp?addItem="& arrArtiklar(0,u) &"' target='underst'> Köp! </A>")
		Response.Write ("</TD>")
		Response.Write("</TR>")		
	
	Next
	Response.Write("</TABLE>")
END IF

Koden skriver ut alla poster i tabellen. I kolumnen varuinfo ligger idag filnamnet till en PDF. Hur gör jag för att skriva ut en länk till pdf'en? (typ 'klicka här')

cyprysMedlem sedan dec. 20003 563 inlägg
#2
If IsArray(arrArtiklar) THEN
Response.Write("<br><TABLE border=0><tr><td>Id</td><td>Art.nr</td><td>Namn</td><td>Storlek</td><td>S-typ</td><td>Färg</td><td>Antal/pack</td><td>Varuinfo</td><td>Fakta</td></tr>")

For u = 0 To Ubound(arrArtiklar,2)
Response.Write("<TR>")
	For m = 0 To Ubound(arrArtiklar,1)	
	Response.Write("<TD bgcolor='#C0C0C0'>"&arrArtiklar(m,u)&"</a></TD>")
	Next

		Response.Write("<TD bgcolor='#C0C0C0'>")
		Response.Write("<a href='shBasket.asp?addItem="& arrArtiklar(0,u) &"' target='underst'> Köp! </A>")
		Response.Write ("</TD>")
                Response.Write("<TD bgcolor='#C0C0C0'>")
		Response.Write("<a href='" & arrArtiklar([b]integerFörKolumnenVaruInfo[/b],u) &"' target='underst'> Klicka här! </A>")
		Response.Write ("</TD>")
		Response.Write("</TR>")		
	
	Next
	Response.Write("</TABLE>")
END IF

Du får alltså välja ut i SQL-frågan vilken plats i arrayen som kolumnen skall ha.

timediaMedlem sedan maj 2001420 inlägg
#3

Tack, men nu skrev den ut en ny kolumn i tabellen. Det finns ju redan en sådan där det skrivs ut 'olika_filnamn.pdf'. hur länkar jag dom? SQL-frågan:

arrArtiklar = GetRows("SELECT Id, ArtNr, Namn5, Storlek, Storlektyp, Farg, Ant_forp, Info, Fakta FROM varor Where page_id="&qstLnkId)
cyprysMedlem sedan dec. 20003 563 inlägg
#4

Är det kolumnen varuinfo du menar att filnamnet ligger i?
Isådana fall tar du ju inte ut den ur SQL-frågan.
Lägg till detta i sådana fall.

arrArtiklar = GetRows("SELECT Id, ArtNr, Namn5, Storlek, Storlektyp, Farg, Ant_forp, Info, Fakta FROM varor Where page_id="&qstLnkId)
...
mot
...
arrArtiklar = GetRows("SELECT Id, ArtNr, Namn5, Storlek, Storlektyp, Farg, Ant_forp, Info, Fakta, [b]varuinfo[/b] FROM varor Where page_id="&qstLnkId)

och sedan 

"<a href='" & arrArtiklar(integerFörKolumnenVaruInfo,u) &"' target='underst'> Klicka här! </A>"
...
mot
...
"<a href='" & arrArtiklar(9,u) &"' target='underst'> Klicka här! </A>"
timediaMedlem sedan maj 2001420 inlägg
#5

Sorry, glömde säga att filnamnet ligger i kolumnen Info. Nu har jag följande kod:

arrArtiklar = GetRows("SELECT Id, ArtNr, Namn5, Storlek, Storlektyp, Farg, Ant_forp, Info, Fakta FROM varor Where page_id="&qstLnkId)
Response.Write "</td>"

Response.Write "<td width='71%' valign='top' align='left'>"
If IsArray(arrArtiklar) THEN
Response.Write("<br><TABLE border=0><tr><td>Id</td><td>Art.nr</td><td>Namn</td><td>Storlek</td><td>S-typ</td><td>Färg</td><td>Antal/pack</td><td>Varuinfo</td><td>Fakta</td></tr>")

For u = 0 To Ubound(arrArtiklar,2)
Response.Write("<TR>")
	For m = 0 To Ubound(arrArtiklar,1)	
	Response.Write("<TD bgcolor='#C0C0C0'>"&arrArtiklar(m,u)&"</a></TD>")
	Next

Response.Write("<TD bgcolor='#C0C0C0'>")
		Response.Write("<a href='shBasket.asp?addItem="& arrArtiklar(0,u) &"' target='underst'> Köp! </A>")
		Response.Write ("</TD>")
        
		Response.Write("<a href='" & arrArtiklar(8,u) &"' target='new'> Klicka här! </A>")
		
		Response.Write("</TR>")		
	Next
	Response.Write("</TABLE>")
END IF

, men frågan kvarstår: Hur får jag länken till att funka?

timediaMedlem sedan maj 2001420 inlägg
#6

Så här ska det självklart inte vara, men det blir kanske tydligare vad jag vill göra?

arrArtiklar = GetRows("SELECT Id, ArtNr, Namn5, Storlek, Storlektyp, Farg, Ant_forp, Info, Fakta FROM varor Where page_id="&qstLnkId)
Response.Write "</td>"

Response.Write "<td width='71%' valign='top' align='left'>"
If IsArray(arrArtiklar) THEN
Response.Write("<br><TABLE border=0><tr><td>Id</td><td>Art.nr</td><td>Namn</td><td>Storlek</td><td>S-typ</td><td>Färg</td><td>Antal/pack</td><td>Varuinfo</td><td>Fakta</td></tr>")

For u = 0 To Ubound(arrArtiklar,2)
Response.Write("<TR>")
	For m = 0 To Ubound(arrArtiklar,1)	
[B]If arrArtiklar(8,u) <> "" Then
arrArtiklar(8,u) = response.write("<a href='doc/"& arrArtiklar(8,u) &"' target='new'> Köp! </A>")
end if[/B]
	Response.Write("<TD bgcolor='#C0C0C0'>"&arrArtiklar(m,u)&"</a></TD>")
	Next

Response.Write("<TD bgcolor='#C0C0C0'>")
Response.Write("<a href='shBasket.asp?addItem="& arrArtiklar(0,u) &"' target='underst'> Köp! </A>")
Response.Write ("</TD>")
Response.Write("</TR>")		
	Next
	Response.Write("</TABLE>")
END IF
@ndersMedlem sedan juni 200032 969 inlägg
#7

Ta bort arrArtiklar(8,u) = ur den fetstilta koden. Du ska väl inte göra någon tilldelning, utan bara en utskrift?

timediaMedlem sedan maj 2001420 inlägg
#8

tack, men den vill fortfarande inte göra nån länk av värdet som skrivs ut i den aktuella cellen :(
Hela filen om det underlättar

<%Dim  intParentId,strParentId,arrLinks,intGrpId,Sublink,strClass,strBullet,qstLnkId,qstParentId,strPid

qstLnkId		=		Request.Querystring("lnkid")
qstParentId		=		Request.Querystring("parid")
scriptname		=		Request.ServerVariables("SCRIPT_NAME")
arrLinks		=		GetRows("SELECT page_id,parent_page_id,linktext FROM tbl_links ORDER BY orderid ")
intGrpId		=		1 'de länkar som ska vara på nivå ett är barn till grupp 1 (alltså parent_page_id i databasen är =1)

	

If Len(qstParentId)<1 AND IsArray(arrLinks) THEN ' om man inte har querystring så öppnas den första länken automatiskt
	For I = 0 To Ubound(arrLinks,2)
		qstLnkId =  arrLinks(0,I)
		qstParentId =arrLinks(0,I)
		IF intGrpId = arrLinks(1,I) THEN Exit For
	Next
END IF	

Response.Write "<HTML><HEAD><STYLE TYPE=""text/css"">"&VbCrlf
Response.Write ".catlink      {color: #3A3A3A; font-family: verdana,arial; font-size: 10px; text-decoration: none;}"&VbCrlf
Response.Write ".sublink      {color: #3A3A3A; font-family: verdana,arial; font-size: 10px; text-decoration: none;}"&VbCrlf
Response.Write ".catlinkactive{color: #000000; font-family: verdana,arial; font-size: 10px; text-decoration: none; Font-weight:bold;}"&VbCrlf
Response.Write ".sublinkactive{color: #000000; font-family: verdana,arial; font-size: 10px; text-decoration: none; Font-weight:bold;}"&VbCrlf
Response.Write "</STYLE></HEAD><BODY>" & VbCrlf

Response.Write "<table border='0' width='100%'><tr><td width='29%' valign='top' align='left'>"

If IsArray(arrLinks) Then
  Response.Write "<br><br><TABLE border='0' cellspacing='0' cellpadding='1' width='100%' align='center'>"&VbCrlf		
	Call LinkTree(intGrpId,0)
  Response.Write "</TABLE>"
ELSE
	 Response.Write "Finns inga länkar"&VbCrlf	
END IF

arrArtiklar = GetRows("SELECT Id, ArtNr, Namn5, Storlek, Storlektyp, Farg, Ant_forp, Info, Fakta FROM varor Where page_id="&qstLnkId)
Response.Write "</td>"

Response.Write "<td width='71%' valign='top' align='left'>"
If IsArray(arrArtiklar) THEN
Response.Write("<br><TABLE border=0><tr><td>Id</td><td>Art.nr</td><td>Namn</td><td>Storlek</td><td>S-typ</td><td>Färg</td><td>Antal/pack</td><td>Varuinfo</td><td>Fakta</td></tr>")
For u = 0 To Ubound(arrArtiklar,2)
Response.Write("<TR>")
	For m = 0 To Ubound(arrArtiklar,1)	
If arrArtiklar(8,u) <> "" Then
response.write("<a href='doc/"& arrArtiklar(8,u) &"' target='new'> Köp! </A>")
end if
	Response.Write("<TD bgcolor='#C0C0C0'>"&arrArtiklar(m,u)&"</a></TD>")
	
	Next

Response.Write("<TD bgcolor='#C0C0C0'>")
Response.Write("<a href='shBasket.asp?addItem="& arrArtiklar(0,u) &"' target='underst'> Köp! </A>")
Response.Write ("</TD>")
Response.Write("</TR>")		
	Next
	Response.Write("</TABLE>")
END IF

Response.Write "</td></tr></table></BODY></HTML>"

Sub LinkTree(intParent,intIndent) :	Dim X,Z
		For X = 0 To Ubound(arrLinks,2)		
			If arrLinks(1,X) = intParent AND (Cstr(arrLinks(1,X))=Cstr(intGrpId) OR instr(","&qstParentId&",",","&intParent&",")>0) Then
			strPid=""
				Response.Write VbCrlf & "<TR><TD bgcolor='#ffffff'>"	
				For Z = 1 To intIndent									  
				  Response.Write("<img src='1px.gif' width='6' height='8' align='left'>")				 
				Next			
				IF intIndent=0 then 
				 Sublink=arrLinks(0,X)	
					 IF cstr(qstLnkId)  =  cstr(arrLinks(0,X)) THEN 
					 strClass  =  "catlinkactive"
					 strBullet =  "<img src='icon-active-dot.gif' border=0 align='left'>"
					 ELSE 
					 strClass  =  "catlink"
					 strBullet =  "<img src='icon-inactive-dot.gif' border=0 align='left'>"
					 END IF
				ELSE							
				For Z = 1 To intIndent : strPid=strPid&split(qstParentId,",")(Z-1) & "," : next
				 Sublink=strPid & arrLinks(0,X)
					 IF cstr(qstLnkId)  =  cstr(arrLinks(0,X)) THEN 
					 strClass  =  "sublinkactive"
					 strBullet =  "<b>- </b>"'kan även vara bild som ovan
					 ELSE 
					 strClass  =  "sublink"
					 strBullet =  "- "
					 END IF
				END IF				
				Response.Write("<a href='"&scriptname&"?lnkid="&arrLinks(0,X) &"&parid="&Sublink&"' class='"&strClass&"'>"&VbCrlf)	
				Response.Write(strBullet & arrLinks(2,X)& "</a></TD></TR>"&VbCrlf)
			
				Call LinkTree(arrLinks(0,X),intIndent + 1)			
			End If
		Next 
End Sub

Function GetRows(ByVal SQL)
		Dim arrRecords, rs	
		Set Connection = Server.CreateObject("ADODB.Connection")
		Connection.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("..\sys\dbgam.mdb"))		
		Set rs = Connection.Execute(SQL)
		If Not rs.BOF Or Not rs.EOF Then
			arrRecords = rs.GetRows()
		ELSE
			arrRecords = ""
		End If		
		rs.Close
		Set rs = nothing
		Connection.Close
		Set Connection = nothing
		GetRows = arrRecords 
End Function

%>
@ndersMedlem sedan juni 200032 969 inlägg
#9

Jag är lite osäker på om jag förstår din kod. Du loopar ju igenom båda dimensionerna i arrayen, då känns det inte rätt att hårdkoda den ena. Prova att byta till:

For u = 0 To Ubound(arrArtiklar,2)
	Response.Write("<TR>")
	For m = 0 To Ubound(arrArtiklar,1)	
		if m = 8 then
			If arrArtiklar(8,u) <> "" Then
				response.write("<td><a href='doc/"& arrArtiklar(8,u) &"' target='new'> Köp! </A></td>")
			end if
		else
			Response.Write("<TD bgcolor='#C0C0C0'>"&arrArtiklar(m,u)&"</a></TD>")
		End if
	Next

	Response.Write("<TD bgcolor='#C0C0C0'>")
	Response.Write("<a href='shBasket.asp?addItem="& arrArtiklar(0,u) &"' target='underst'> Köp! </A>")
	Response.Write ("</TD>")
	Response.Write("</TR>")		
Next

Jag passade på att snygga till indenteringen också, så man kan se vad som hör till vad.

timediaMedlem sedan maj 2001420 inlägg
#10

Nu händer nåt :)
,men nu blir det en xtra tabellcell där och om jag tar bort td'n runt länken så lägger sig resultatet utanför tabellen :(

arrArtiklar = GetRows("SELECT Id, ArtNr, Namn5, Storlek, Storlektyp, Farg, Ant_forp, Info, Fakta FROM varor Where page_id="&qstLnkId)
Response.Write "</td>"
Response.Write "<td width='71%' valign='top' align='left'>"
If IsArray(arrArtiklar) THEN
Response.Write("<br><TABLE border=0><tr><td>Id</td><td>Art.nr</td><td>Namn</td><td>Storlek</td><td>S-typ</td><td>Färg</td><td>Antal/pack</td><td>Varuinfo</td><td>Fakta</td></tr>")

For u = 0 To Ubound(arrArtiklar,2)
	Response.Write("<TR>")
	For m = 0 To Ubound(arrArtiklar,1)	
		if m = 7 then
			If arrArtiklar(7,u) <> "" Then
				response.write("<td><a href='doc/"& arrArtiklar(7,u) &"' target='new'> Info </A></td>")
			end if
		else
			Response.Write("<TD bgcolor='#C0C0C0'>"&arrArtiklar(m,u)&"</a></TD>")
		End if
	Next

	Response.Write("<TD bgcolor='#C0C0C0'>")
	Response.Write("<a href='shBasket.asp?addItem="& arrArtiklar(0,u) &"' target='underst'> Köp! </A>")
	Response.Write ("</TD>")
	Response.Write("</TR>")		
Next
@ndersMedlem sedan juni 200032 969 inlägg
#11

Vad menar du med extra tabellcell?
Det är inte bara så att du har en kolumn för lite i i tabellen (där du skriver ut rubriker, etc)?

Ligger sidan ute på nätet för beskådan?

timediaMedlem sedan maj 2001420 inlägg
#12

Ligger här: oaktuell Klicka dig fram Städ -> Städkem -> Gipeco -> Allrent o Grovrent så ser du att det händer grejer i tabellen (fast upptäcker nu att det skiljer sig från localhost?)

@ndersMedlem sedan juni 200032 969 inlägg
#13

Nu ser jag. :)

Så här borde det se ut:

	For m = 0 To Ubound(arrArtiklar,1)	
		if m = 7 then
			If arrArtiklar(7,u) <> "" Then
				response.write("<td bgcolor='#C0C0C0'><a href='doc/"& arrArtiklar(7,u) &"' target='new'> Info </A></td>")
			[b]else
				Response.write ("<TD bgcolor='#C0C0C0'>&nbsp;</TD>")[/b]
			end if
		else
			Response.Write("<TD bgcolor='#C0C0C0'>"&arrArtiklar(m,u)&"</a></TD>")
		End if
	Next
timediaMedlem sedan maj 2001420 inlägg
#14

logiskt :)
men nu hamnade den i fel cell (skulle ju vara i cellen Varuinfo) ändrade också till 8

@ndersMedlem sedan juni 200032 969 inlägg
#15

Ligger filnamnet alltså lagrat i fältet Info, och inte i Fakta?

timediaMedlem sedan maj 2001420 inlägg
#16

Filnamnet skulle ligga i fältet info - ligger idag i fältet fakta på webben.
..och jag förstår inte varför det inte funkar på min localhost? Där ligger produktet pajax.pdf i korrekt cell i stället för länken Info som hamnar i cellen bredvid på webben? Vad är detta?

Upptäckte att db'n på webben var skadad. När jag laddade upp en ny så funkade allt :p

139 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)