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

Dela upp resultatet i celler


Peter Linsten

Rekommendera Poster

Peter Linsten

Hejhopp, nybörjare på ASP här.

Jag har, tack vare diverse guider och liknande, lyckats knåpa ihop en kod-snutt som faktiskt hämtar den data jag vill - men nu vill jag även anpassa detta. Den kodsnutt jag använder följer i slutet.

 

Det jag hämtar är ett resemål samt dess id, för att då lista samtliga resor. Detta vill jag göra i en tabbell, tre celler bred. Så resultatet ska alltså först spridas i tre celler (td), sedan fortsätta nedåt (tr). Hittillis har jag bara lyckats göra så att det blir antingen på rad åt sidan eller nedåt - inte båda samtidigt.

Men jag är ganska säker på att det ska gå.

 

Koden i dagsläget:

<%

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("..\..\dbq\Trestad_resor2.mdb") & ";"

 

Dim nrField, reseField

 

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open strConn

Set RS = Conn.Execute("SELECT Resenr, Resmal FROM Resor WHERE Synlig=True AND ((Antal_dagar)>=('2')) ORDER BY Resmal ASC")

 

Set nrField = RS("Resenr")

Set reseField = RS("Resmal")

 

%>

<% Do While Not RS.EOF %>

<tr>

<td align="left"><h2>

<a href="resa.asp?Resenr=<%= nrField %>">

<%= reseField %></a></h2>

</td>

</tr>

<%

RS.MoveNext

Loop

 

%>

 

Tänk gärna på att om ni tar er tid att svara, så svara gärna utförligt så att jag kan använda erat svar :)

 

Mvh

Peter Linsten

 

Länk till kommentar
Dela på andra webbplatser

Testa något liknande:

%>

<% Do While Not RS.EOF %>

<tr>

<% for x = 1 To 3 %>

<td align="left"><h2>

<a href="resa.asp?Resenr=<%= nrField %>">

<%= reseField %></a></h2>

</td>

<% RS.MoveNext

if RS.EOF then exit while

next %>

</tr>

<%

if not rs.eof then RS.MoveNext

Loop

 

%>

 

Läs hur Ms och Intel planerar att ta över din dator:

http://www.cl.cam.ac.uk/users/rja14/tcpa-faq.html

http://www.againsttcpa.com/

 

[inlägget ändrat 2003-11-28 12:01:17 av Kraantz]

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Det fungerade, tyvärr, inte alls då det blev Internt Serverfel (500) när jag skulle kolla på sidan...?

 

Länk till kommentar
Dela på andra webbplatser

Christoffer Eklund

Gör en liten räknare då

 

<% Do While Not RS.EOF 
i = i + 1
if i > 3 then
i = 1
end if
if i = 1 then
'skriv ut <tr>
response.write("<tr>")
end if
.........
........
........
'innan loopen vänder
if i = 3 then
response.write("</tr>")
end if
%>

 

Det är inte fullständig kod, utan mer för att du ska fatta vad det handlar om. testa och laborera lite själv och återkom om du inte får ihop det

 

Tips för specade felmeddelanden: Internet Explorer, Verktyg, INternet-alternativ, avancerat, kryssa UR rutan "visa egna http-felmeddelanden"

Då står det vad som är galet så kan du tex bifoga det här i eforum, så blir det enklare att hjälpa till.

 

/doffe

 

[inlägget ändrat 2003-11-28 13:53:25 av Christoffer Eklund]

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Okej, jag har ordnat så att jag får upp ett bättre felmeddelande iaf - tack för det tipset.

 

Kraantz: Felmeddelandet jag får upp när jag kör din kod är denna:

"Microsoft VBScript compilation error '800a040f'

 

Invalid 'exit' statement

 

/nytb/resor2.asp, line 55

 

if RS.EOF then exit while

--------------------^"

 

Doffe: Jag kollade på din kod, provade att trixa lite, men i och med att jag inte vet vad jag sysslar med så fick jag det inte att fungera. En komplett kod skulle hjälpa oerhört mycket mer.

 

Tack för svaren!

 

Länk till kommentar
Dela på andra webbplatser

Christoffer Eklund

Joorå det kan du.

Börja med att översätt koden till ren svenska så kommer du nog fatta

> betyder alltså "större än"

 

/doffe

 

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Kraantz: Tack så mycket! Det fungerar utmärkt.

 

Doffe: Hehe, tack för försöket till utbildning, men jag är nog inte redo för det steget än.

Jag förstår allt innebörden av tecknen, men det handlar om vad som ska in vart.

 

Hur som, problemet löst. Tack för alla svar.

 

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Det visade sig att problemet inte alls var löst, bara nästan.

Var fjärde resa visas inte, vilket är ett ganska stort problem.

De tre första listas på rad, den fjärde försvinner och sedan följer resa fem till sju på raden under, resa åtta försvinner och så vidare.

 

Koden ser idag ut så här:

<%

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("..\..\dbq\Trestad_resor2.mdb") & ";"

 

Dim nrField, reseField

 

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open strConn

Set RS = Conn.Execute("SELECT Resenr, Resmal FROM Resor WHERE Synlig=True AND ((Antal_dagar)>=('2')) ORDER BY Resmal ASC")

 

Set nrField = RS("Resenr")

Set reseField = RS("Resmal")

 

%>

<% Do While Not RS.EOF %>

<tr>

<% for x = 1 To 3 %>

<td align="left" valign="top" width="33%"><h2>

<a href="resa.asp?Resenr=<%= nrField %>"><%= reseField %></a></h2>

</td>

<% RS.MoveNext

if RS.EOF then exit Do

next %>

</tr>

<%

if not rs.eof then RS.MoveNext

Loop

 

%>

 

Tacksam för mer hjälp :)

 

Länk till kommentar
Dela på andra webbplatser

Testa denna lösning:

<%

X=4

Do While Not RS.EOF

x= x + 1

if x/4 = int(x/4) then response.write("<tr>")

%>

<td align="left"><h2>

<a href="resa.asp?Resenr=<%= nrField %>">

<%= reseField %></a></h2>

</td>

<%

if x/4 = int(x/4) then response.write("</tr>")

 

if not rs.eof then RS.MoveNext

Loop

%>

 

Edit:

Jag glömda att startvärdet måste ändras till 4 för att en tr tagg skall skrivas ut först.

 

Läs hur Ms och Intel planerar att ta över din dator:

http://www.cl.cam.ac.uk/users/rja14/tcpa-faq.html

http://www.againsttcpa.com/

[inlägget ändrat 2003-12-02 20:02:12 av Kraantz]

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Provade och det funkade inte heller riktigt.

Först visade den tre på den första raden, sedan resa fyra på en egen rad och sedan de tre nästa på nästa rad...

 

Fler teorier? :)

 

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Okej, fixade det med, men det blev ändå inte rätt.

Så här ser det ut när det skrivs ut:

 

<td align="left"><h2>

<a href="resa.asp?Resenr=1">

Resa1</a></h2>

</td>

 

<td align="left"><h2>

<a href="resa.asp?Resenr=2">

Resa2</a></h2>

</td>

 

<td align="left"><h2>

<a href="resa.asp?Resenr=3">

Resa3</a></h2>

</td>

<tr>

<td align="left"><h2>

<a href="resa.asp?Resenr=4">

Resa4</a></h2>

</td>

</tr>

 

Det blir ingen <tr> innan och </tr> efter de tre första, men däremot vid resa fyra...

Och, ja jag har gjort exakt som du skrivit här ovan...

 

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Hehe, blir ändå inte rätt.

Nu skriver den ut första resan på en rad, sedan de tre nästa resorna på nästa rad, sedan en ny rad med en ensam resa o.s.v.

 

Länk till kommentar
Dela på andra webbplatser

Ok testa byt ut en av de sista raderna mot

if (x+3)/4 = int((x+3)/4) then response.write("</tr>")

 

Edit:

Detta för att den skall skriva ut 3 st <td> innan den avslutar raden...

Fungerar det inte så ändra till

if (x+2)/4 = int((x+2)/4) then

 

Läs hur Ms och Intel planerar att ta över din dator:

http://www.cl.cam.ac.uk/users/rja14/tcpa-faq.html

http://www.againsttcpa.com/

[inlägget ändrat 2003-12-02 21:12:29 av Kraantz]

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Inte riktigt rätt. Nu la den till ett <tr> innan första (vilket är rätt), ett </tr> efter den andra resan och sedan ett <tr> efter den fjärde.

 

<tr>

<td align="left"><h2>

<a href="resa.asp?Resenr=1">

Resa1</a></h2>

</td>

 

<td align="left"><h2>

<a href="resa.asp?Resenr=2">

Resa2</a></h2>

</td>

</tr>

<td align="left"><h2>

<a href="resa.asp?Resenr=3">

Resa3</a></h2>

</td>

 

<td align="left"><h2>

<a href="resa.asp?Resenr=4">

Resa4</a></h2>

</td>

<tr>

 

I IE blev detta då två resor per rad, men IE förlåter ju ganska mycket också...

 

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Nära, men inte riktigt.

De tre första resorna hamnar rätt inom tr-taggarna, men den fjärde mellan </tr> & <tr>, vilket gör att den (i IE) hoppar ned i en egen rad.

 

Länk till kommentar
Dela på andra webbplatser

Peter Linsten

Tror du fixade det där :)

Hittills verkar det fungerar finfint iaf, så - igen - tack så mycket för hjälpen!

 

Länk till kommentar
Dela på andra webbplatser

Det blev lite omständigare än vad jag tänkte.

Om du känner för det kan du också testa:

<% Do While Not RS.EOF %>

<tr>

<% for x = 1 To 3 %>

<td align="left"><h2>

<a href="resa.asp?Resenr=<%= nrField %>">

<%= reseField %></a></h2>

</td>

<% RS.MoveNext

if RS.EOF then exit for

next %>

</tr>

<%

Loop

%>

 

Läs hur Ms och Intel planerar att ta över din dator:

http://www.cl.cam.ac.uk/users/rja14/tcpa-faq.html

http://www.againsttcpa.com/

 

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...