hejsan...
Det är som så att jag har två tabeller, från den ena tabellen ska jag lista företagsnamnen och från den andra tabellen ska jag lista rabatterna som ska finnas i en textbox.
typ:
just nu ser min kod ut så här, men problemet är att textboxen med rabatten hamnar över själva tabellen?? istället för att hamna under mellan <td> taggen
call OpenDb()
'Set RS = Server.CreateObject("ADODB.Recordset")
sql = " SELECT * FROM productlines "
Set rs = Conn.Execute(sql)
if rs.eof then
response.write "no discount"
end if
%>
<table cellpadding=2 cellspacing=2>
<tr>
<td bgcolor=#CCCCCC><font face=arial size=2><b>Apply Multiplier</b></font></td>
<td bgcolor=#CCCCCC><font face=arial size=2><b>Product Line</b></font></td>
<td bgcolor=#CCCCCC><font face=arial size=2><b>Discount</b></font></td>
</tr>
<%
do until rs.eof
'do until rs2.eof
%>
<tr>
<td><center><input type="checkbox" name="apply<%=rs("productLineID")%>" value="1"></center></td>
<td><%=rs("productLine")%></td>
<td>
<%
rs.moveNext
loop
conn.close
set conn = nothing
set rs = nothing
call OpenDb()
sql = " select * FROM privatediscount where " &_
" userID = '" &Request.Querystring("userId")& "' "
'response.write sql
'response.end
Set rs = Conn.Execute(sql)
'Set rs2 = Conn.Execute(sql2)
'if rs.eof then
'response.write "no discount found"
'end if
do until rs.eof
%>
<input type=text name="discount<%=rs("productLine")%>" size="4" value="<%=rs("discount")%>"><br></td>
</tr>
<%
rs.MoveNext
'rs2.MoveNext
'Loop
loop
conn.close
set conn = nothing
set rs = nothing
'set rs2 = nothing
%>
Det ser ut som om du måste ha en join på dina tabeller och plocka ut alla data direkt för att sen loopa ut allt i ett svep.
Det förefaller som att productLine är den gemensamma nämnaren?
Om du kikar på den resulterande HTML-koden kan jag slå mig i backen på att den inte är helt korrekt. Du verkar inte ha någon koll på öppnandet och stängandet av <td> och <tr> i din kod, så det är inte konstigt om det blir konstigt.
Även jag, liksom solbulle, föreslår att du joinar in rabatterna istället, och då blir det nog enklare att få koll på asp-koden också.
Och vad är userid i tabellen för rabatter? Är det inte ett id-nummer? Isåf, varför ligger i ett textfält i tabellen?
Hur gör man för att joina dessa?? är det något man måste ställa in i enterprisen eller går det att fixa med sql-koden??
anders, helt riktigt, html koden ser inte ut som den ska, men jag tycker att den borde se ut som den ska ty jag vill ju få in loopen med rabatterna som ska finnas i textfälten mellan <td> och </td> vilket jag gör oxå, men när den loopar ut rabatterna så hamnar de över denna html kod:
När man gör en join binder man ihop två tabeller på ett fält i varje tabell, som är gemensamt. Pseudokod:
Hämta allt från tabellerna productlines och privatediscount där tabellerna hänger ihop på fältet productLine, och användarid i tabellen privatediscount är 4.
Så här kan en sådan fråga se ut:
SELECT productLines.*, privateDiscount.* FROM productLines OUTER JOIN privateDiscount on productLines.productLine = privateDiscount.productLine AND privateDiscount.userID = 4
Ställ den frågan direkt i Access (som jag antar att det är du använder) och se om du får något vettigt där. I så fall är det bara att börja bygga om koden. ;)
ok fick det att funka tack så mycke ANDERS!
har en fråga till, har checkboxar i loopen som du ser:
<input type="checkbox" name="apply<%=rs("productLineID")%>" value="1">
checkboxarna får ju olika namn beroende på productlineID, så får de en siffra bredvid apply, det jag undrar är hur gör jag för att programmet ska känna av om det är förbockat eller inte, jag kör en update, och i databasen sätts den till en 1:a om den är bockad och 0:a om den inte är det...
men hur ska jag kalla på just den raden va request.form??
dvs:
Om du istället för att ge varje checkbox ett unikt namn, gör så här:
* kalla alla checkboxar för samma sak.
* ge checkboxarna tillhörande id-nummer som value
sedan:
* kör en update-sats som uppdaterar alla till 0 i databasen
* kör en update som ser ut liknande denna:
UPDATE privateDiscount SET apply = 1 WHERE productLineID IN (" & Request.Form("checkboxnamnet") & ")
När flera har samma namn kommer det att resultera i en kommaseparerad lista över alla markerade id:n, och update kommer att göras på alla poster med något av dessa id:n.
Men: om fältet apply ska lagra en etta eller en nolla, varför är det då ett textfält i tabellen? (Du har apostrofer runt värdet)? Du borde använda tal eller typen Ja/Nej (eller vad den heter i access). Taltyp är enklast om du inte vill skriva om dina frågor.
glömde nämna att det måste va ett where statement oxå där jag kollar om det är en viss id?? hur gör jag om det är två kolumner som skall uppdateras på samma sätt? jag har ju en där de ska fylla i sin rabatt oxå?
@nders eller någon annan, det är ju så att om man vill bocka av så skall det sättas till 0 i databasen och om man bockar i checkboxen så skall den sättas till 1 i databasen, la till ett OR men fick syntax fel:
SQL = " UPDATE privateDiscount SET apply = 1 OR apply = 0 WHERE productLine " &_
" IN ('" & Request.Form("apply") & "') AND userID = '" &Request.Form("userId")& "' "
@nders eller någon annan, det är ju så att om man vill bocka av så skall det sättas till 0 i databasen och om man bockar i checkboxen så skall den sättas till 1 i databasen
...
hur ska man göra för att lösa detta?
Läs mitt senaste inlägg igen?
264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25