Hejsan! Jag har ett litet problem. När jag listar mina produkter i min webshop så listas dem neråt. Finns det något smart sätt att lista produkterna i rader( från vänster till höger), tre produkter i tre rader? Du kan ju använda float egenskapen i CSS: Tabeller använder jag ju, men jag vill skriva ut fler produkter ifrån databasen som ska radas upp i tre rader varav 3 produkter i varje rad. Tror att % fungerar i asp. Isåfall kan du göra såhär. skapa en variabel som ökar med 1 varje gång loopen körs. om din variabel % 3 = 0 så skriver du ut ett </tr><tr> vilket blir en ny rad. Det är bara lite kortfattat hur du skulle kunna göra Normalt vill man väl ha sortering uppifrån och ner och inte från vänster till höger. hmmm... normalt..? Tycker det känns mer normalt att läsa från vänster till höger, rad för rad... men alla är vi olika... Det smög sig in ett +1 som inte skall vara där Testa med 3 produkter... endast en produkt skrivs ut, dock 3 ggr... ;) Tack för testningen, borde naturligtvis gjort det själv. Så där ja... =) Tack Stefan och alla andra för hjälpen, nu har jag fått det å funka!Lista produkter
Tack på förhand.Sv: Lista produkter
<?xml version="1.0" encoding="utf-8"?>
<!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" >
<head>
<title>Untitled Page</title>
<style type="text/css">
div {
float: left;
width: 20em;
height: 20ex;
margin: 0.5em;
border: black thin solid;}
</style>
</head>
<body>
<div>
Product: 1
</div>
<div>
Product: 2
</div>
<div>
Product: 3
</div>
<div>
Product: 4
</div>
<div>
Product: 5
</div>
<div>
Product: 6
</div>
</body>
</html>
Sv:Lista produkter
Sv: Lista produkter
Sv: Lista produkter
<%
Dim row,col
Response.Write("<table>")
For row = 1 To 3 ' Tre rader
Response.Write("<tr>")
For col = 1 To 3 ' Tre kolumner
Response.Write("<td>")
If Not rs.EOF Then
Response.Write(rs("minProdukt"))
rs.MoveNext
End If
Response.Write("</td>")
Next ' col
Response.Write("</tr>")
Next ' row
Response.Write("</table>")
%>
Sv:Lista produkter
Då får man först läsa in alla posterna i en array och sen skriva ut
<code=vb>
antalArtiklar = UBound(artiklar)
For Rad = 0 To antalArtiklar\3
Response.Write("<tr>")
For Kolumn = 0 To 2
position = (antalArtiklar\3)*Kolumn+Kolumn+Rad
If position <= antalArtiklar Then Response.Write("<td>" + artiklar(position) + "</td>")
Next
Response.Write("</tr>")
Next
</code>Sv: Lista produkter
Sen... ditt exempel funkar inte...
<b>Fel1:</b>
Om antalet artiklar är 9 så går den första For-satsen från 0 till 3 (fyra rader)
<b>Fel2:</b>
Varje enskild produkt skrivs ut mer än en gång i tabellen
<b>Fel3:</b>
Samtliga produkter skrivs inte ut.
<b>Fel4:</b>
Multiplikation utförs före division... Ett div/0 fel uppstår om man inte sätter parenteser.
<b>Fel5:</b>
</table> är på fel ställe...
...orkar inte leta om det finns mer fel... ;)Sv:Lista produkter
antalArtikal = UBound(artiklar)
Borde nog byta namn på variabeln ocksåSv: Lista produkter
<info>
1 1 1
</info>
Testa med 9 produkter, endast produkterna 1-7 skriv ut (3 och 5 skrivs 2 ggr)... :
<info>
1 3 5
2 4 6
3 5 7
</info>Sv:Lista produkter
Nu fungerar det
Här är testprogrammet:
<code=vb>
Sub SkrivTabell(data)
WScript.Echo "<table>"
antal = UBound(data)
For Rad = 0 To antal\3
WScript.Echo "<tr>"
For Kolumn = 0 To 2
position = (antal\3)*Kolumn+Kolumn+Rad
If position <= antal Then WScript.Echo "<td>" & data(position) & "</td>"
Next
WScript.Echo "</tr>"
Next
WScript.Echo "</table>"
End Sub
WScript.Echo "<html><body>"
SkrivTabell Array(1)
SkrivTabell Array(1,2)
SkrivTabell Array(1,2,3)
SkrivTabell Array(1,2,3,4)
SkrivTabell Array(1,2,3,4,5)
SkrivTabell Array(1,2,3,4,5,6)
SkrivTabell Array(1,2,3,4,5,6,7)
SkrivTabell Array(1,2,3,4,5,6,7,8)
SkrivTabell Array(1,2,3,4,5,6,7,8,9)
SkrivTabell Array(1,2,3,4,5,6,7,8,9,10)
WSCript.Echo "</body></html>"
</code>Sv: Lista produkter
...och eftersom det är ASP så ersätter vi WScript.Echo med Response.Write...
Bara ett problem nu... om vi skall vara petig... har man 2-3 produkter kanske dom borde listas
<info>
1
2
3
</info>
istället för på en rad...
...och har man 4-6 produkter kanske dom borde listas
<info>
1 4
2 5
3 6
</info>
istället för på två rader... om man skall gå efter din tidigare devis...Sv:Lista produkter
Mycket tacksam för så snabb hjälp!
Mvh Patrik Karlsson