webForumDet fria alternativet

Varför blir det så här?

ASP

20 svar · 306 visningar · startad av Cogo

Medlem sedan juni 200151 inlägg
Frågan#1

Hej när jag gör select satsen och vill att den skall hämta från en tabell funkar sidan bra då ser den ut så här
http://www1.bengtdahlgren.se/paging/paging.asp
Men när jag gör select satsen med 2 tabeller Select * From Kontaktpersoner, kontor så blir sidan så här.
http://www1.bengtdahlgren.se/paging/paging2.asp

Nån som vet varför?

Detta är koden för hela sidan.

<%
Option Explicit
Response.Buffer = FALSE
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%

'## -- hämta alla poster --
Function getRecords
	Dim m_objConn
	Dim m_strConnString
	Dim m_strSQL
	Dim m_objRS
	Dim m_arrRecords
	
	
	m_strConnString = "provider=Microsoft.Jet.OLEDB.4.0;" & _
		"Data Source=" & Server.MapPath("../databas/bdab1.mdb")
		
	'## -- skapa connection object och öppna upp databasen --
	

		Set m_objConn = Server.CreateObject("ADODB.Connection")
		m_objConn.Open m_strConnString
		
		'## -- sql-fråga för att hämta alla poster --
		'## -- denna ska du ändra så att den stämmer
		'##    med det som du vill hämta --
		m_strSQL = "SELECT * FROM kontaktpersoner, kontor"

		

		

			'## -- recordset för att hämta alla poster --
			Set m_objRS = m_objConn.Execute(m_strSQL)
			
				If Not m_objRS.EOF Then
					m_arrRecords = m_objRS.GetRows
					getRecords = m_arrRecords
				End If
				
				'## -- clean up --
				m_objRS.Close
			Set m_objRS = Nothing
			
		m_objConn.Close
	Set m_objConn = Nothing

End Function

'## -- skriv ut sidnummer navigeringen --
Sub PageNumbers(ByVal HowManyPages, WichPage)
	Dim strScriptName
	Dim I
	
	'## -- kolla om det finns några sidor --
	If HowManyPages = 0 Then
		Response.Write "0"
		Exit Sub
	End If
	
	strScriptName = Request.ServerVariables("SCRIPT_NAME")

	'## -- skriv ut länkar till sid nummer n. 
	'##    Den sida som visas ska ej vara länkad --
	For I = 1 To HowManyPages
		If CInt(I) <> CInt(WichPage) Then
			Response.Write "<A href='" & strScriptName & "?" & _
				"page=" & I & "'>" & I & "</A> "
		Else
			Response.Write "<B>" & I & "</B> "
		End If
	Next

End Sub

'## -- vilken post ska pagingen börja på --
Function getStartID(ByVal PageSize, ByVal ViewPage) ' As Integer
	Dim m_intStart
	m_intStart = ((PageSize * ViewPage) - PageSize)
	getStartID = m_intStart
End Function

Function countPages(ByVal HowManyRecords, ByVal PageSize)
	Dim m_intTotalPages
	m_intTotalPages = CInt((HowManyRecords / PageSize) + 0.5)
	'm_intTotalPages = CInt(((HowManyRecords / PageSize) + 1) - 1)
	
	countPages = m_intTotalPages
End Function
'##***********************************************************************************

Response.write"Kontaktpersoner<br><br>"

Dim arrRecords
Dim intPageSize
Dim intPage
Dim intStartID
Dim I
Dim intId
Dim Namn
Dim tel
Dim intTotalPages
Dim intTotalRecords
Dim avd
Dim bild
Dim mob
Dim email
Dim intCounter
Dim img

'## -- vilken sida ska visas --
intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1

'## -- hur många poster ska visas per sida --
intPageSize = 4

'## -- hämta alla records, hämtas med metoden getrows och returneras
'##    som en array. --
arrRecords = getRecords

'## -- vilken post är den första --
intStartID = getStartID(intPageSize, intPage)

'## -- printa ut sidan som ska visas
'##    alla poster finns i arrayen arrRecords som
'##    kommer från funktionen getRecords --
If IsArray(arrRecords) Then
	'Response.Write "E ju en array<BR>"
	'## -- hur många records finns det totalt --
	intTotalRecords = UBound(arrRecords,2) + 1
	
	'## -- hur många sidor finns det i recordsetet --
	intTotalPages = countPages(intTotalRecords, intPageSize)

	'## -- startar tabellen utanför loopen --
Response.Write "<table border=""0"" width=""680""><tr>"

'## -- skriv ut sidnavigerings menyn --

Response.Write "Pages:"

Call PageNumbers(intTotalPages,intPage)
%>
<br><br>
<%

'## Loopen börjar

For I = intStartID To ((intStartID + intPageSize) -1)

intCounter = intCounter + 1 

intId = arrRecords(0,I)
Namn = arrRecords(1,I)
tel = arrRecords(4,I)
avd = arrRecords(3,I)
bild = arrRecords(6,I)
mob = arrRecords(5,I)
email = arrRecords(8,I)

If Len(bild) > 0 Then 
img ="<img src=""" & bild & """>"
Else
img = ""
End If

Response.Write "<td>" & img & "</td>" & _
"<td>" & Namn & "<br><br>" & _
avd & "<br><br>Tel: " & tel & "<br>Mob: " & mob & "<br><br>" & _
"<a href=""mailto:" & email & """>" & email & "</a>" & _
"</td>"

If intCounter mod 2 = 0 Then Response.Write "</TR><TR>"

If I = UBound(arrRecords,2) Then Exit For

Next

'## -- stänger tabellen efter loopen --
If intCounter mod 2 <> 0 Then
Do Until intCounter mod 2 = 0
Response.Write "<TD> </TD><TD> </TD>"
intCounter = intCounter + 1
Loop
End If
Response.Write "</tr></table><br>"

'## -- skriv ut sidnavigerings menyn --
Call PrevPage(intPage)
Response.Write " &#0124; "

Call NextPage(intTotalPages,intPage)

'## -- skriver ut sidnavigeringen --
'## -- skriv ut föregående sida --
Sub PrevPage(ByVal WichPage)
	Dim strScriptName
	strScriptName = Request.ServerVariables("SCRIPT_NAME")

	'## -- skriv ut en länk till föregående sida --
	If CInt(WichPage) > 1 Then
		Response.Write "<A href='" & strScriptName & "?" & _
			"page=" & WichPage - 1 & "'><img border=0 

src=http://www.bengtdahlgren.se/bilder/pilar/left.gif>Föregående</A>"
	Else
		Response.Write "Föregående "
	End If
End Sub

'## -- skriv ut nästa sida --
Sub NextPage(ByVal HowManyPages, ByVal WichPage)
	Dim strScriptName
	strScriptName = Request.ServerVariables("SCRIPT_NAME")
	
	'## -- skriv ut en länk till nästa sida --
	If CInt(WichPage) < CInt(HowManyPages) Then
		Response.Write "<A href='" & strScriptName & "?" & _
			"page=" & WichPage + 1 & "'>Nästa <img border=0 

src=http://www.bengtdahlgren.se/bilder/pilar/right.gif></A>"
	Else
		Response.Write "Nästa "
	End If

End Sub

Else
	
	'## -- inga poster fanns i db --
	intPage = 0
	intTotalRecords = 0
	intTotalPages = 0
	
	'## -- skriv ut att inga poster hittades --
	Response.Write "<P>No records found.</P>"
End If

%>
</BODY>
</HTML>

------------------
sZ][Cogo
<-| STARZINGER |->

Medlem sedan juni 200151 inlägg
#2

Läänkarna funkar inte riktigt ännu måste fixa dom

------------------
sZ][Cogo
<-| STARZINGER |->

Medlem sedan juni 200151 inlägg
#3

Läänkarna funkar inte riktigt ännu måste fixa dom

------------------
sZ][Cogo
<-| STARZINGER |->

Medlem sedan juni 200151 inlägg
#4

Någon som vet vad det är som orsakar detta? Det ända som skiljer i koden är att i Select satsen så väljer den From Kontaktpersoner, kontor. Och när man har det så skriver den ut samma person på alla 4 ställen. Men om jag bara selectar från kontaktpersoner så funkar det utmärkt.

Men problemet är att jag skall hämta uppgifter från tabellen kontor också men då blir det hel galet på sidan.

------------------
sZ][Cogo
<-| STARZINGER |->

[Redigerat av Cogo den 14 jun 2001]

Medlem sedan juni 200151 inlägg
#5

Är det ingen som vet hur man gör, eller fattar ni inte vad jag menar?

------------------
sZ][Cogo
<-| STARZINGER |->

Medlem sedan juni 200032 967 inlägg
#6

ställer du frågan på det sättet läggs alla poster i kontorstabellen ihop med alla poster i kontaktpersoner.

det du behöver är en gemensam nämnare, ett fält som gör att man kan koppla ihop kontaktpersoner och kontor mha en 'join'.

vilka fält är det som hänger ihop? vi hjälper dig med en sql-fråga...

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan juni 200151 inlägg
#7

Kontor finns i båda tabellerna

------------------
sZ][Cogo
<-| STARZINGER |->

Medlem sedan juni 200151 inlägg
#8

Eller jag tror inte jag fattade vad du menade =(

------------------
sZ][Cogo
<-| STARZINGER |->

Medlem sedan juni 200032 967 inlägg
#9

select * from kontaktpersoner, kontor where kontaktpersoner.kontor = kontor.kontor

typ

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan juni 200151 inlägg
#10

Så tackar nu blir det inga fel på sidan längre när jag öppnar 2 tabeller.

Men jag fattar inte hur jag hämtar nått i från den andra tabellen, hur gör jag det?

Så här gör man från den andra tabellen

intId = arrRecords(0,I)
Namn = arrRecords(1,I)
tel = arrRecords(4,I)
avd = arrRecords(3,I)
bild = arrRecords(6,I)
mob = arrRecords(5,I)
email = arrRecords(8,I)

Och sedan skriver ut variabeln.
Men jag måste väll säga nån stans att det är ifrån den andra tabbellen som jag vill hämta info från eller ?

------------------
sZ][Cogo
<-| STARZINGER |->

[Redigerat av Cogo den 14 jun 2001]

Medlem sedan juni 200151 inlägg
#11

Märkte att om jag byter plats på tabell namnen i Select satsen så hämtar den i från den tabellen som står först i satsen. Det kanske är ganksa logiskt. Men är det nån som vet hur jag hämtar det från den andra som står efter komma tecknet i select satsen?

Om det kan vara nån hjälp så kommer hela sidan från PatrikB paging script.

------------------
sZ][Cogo
<-| STARZINGER |->

Medlem sedan apr. 2001357 inlägg
#12

Jag har problem med detta oxå, men vill gärna se en lösning :) ;)

------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd

Medlem sedan juni 200032 967 inlägg
#13

det spelar ingen roll hur många tabeller du joinar ihop, du får ju ändå bara tillbaka ett recordset, med fältordningen som är specificerad i frågan, dvs i detta fallet, först alla fält från kontaktpersoner, sedan alla fält från kontor.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan apr. 2001357 inlägg
#14

om man bara vill ha 4 kolumner ur kontorstabellen specar man de kolumnerna i SQL då eller?

[Redigerat av Method den 14 jun 2001]

Medlem sedan juni 200032 967 inlägg
#15

japp.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan apr. 2001357 inlägg
#16

Jag känner mig ny på detta :) men hur gör man kan du visa ett exempel

Jag har det så här idag
jag vill hämta allt ur den enatabellen men bara vissa kolumner ur den andra.
hur gör jag då???

SQL = "SELECT * From medlemmar  WHERE Namn = '" & Namn & "'"

och i den andra tabellen vill jag hämta
|Stad|
|Adress|

Tack på förhand.
Jonas

[Redigerat av Method den 14 jun 2001]

[Redigerat av Method den 14 jun 2001]

Medlem sedan juni 200151 inlägg
#17

Om ni har tröttnat så kan ni säga det för då kan jag ju prova på nått annat forum.

------------------
sZ][Cogo
<-| STARZINGER |->

Medlem sedan mars 20002 836 inlägg
#18

Om ni har tröttnat så kan ni säga det för då kan jag ju prova på nått annat forum.

Vi tröttnar aldrig :o

Man specar upp fälten på detta vis:

SQL = "SELECT medlemmar.id, medlemmar.username, medlemmar.pwd From medlemmar WHERE Namn = '" & Namn & "'"

dvs, tabell.fältnamn

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

Medlem sedan juni 200032 967 inlägg
#19

Cogo, många av oss har jobb, som kommer i första hand. så bara för att vi inte svarar på en stund betyder det inte att vi tröttnat.

vi vill ju hjälpa dig, ju.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan juni 200151 inlägg
#20

ok tackar så mycket
tänkte bara att ni inte orkade med mig längre eller nått =)

------------------
sZ][Cogo
<-| STARZINGER |->

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)