webForumDet fria alternativet

felra DB

ASPur ASP

21 svar · 413 visningar · startad av pellsäter

Medlem sedan aug. 2000526 inlägg
Frågan#1

en db med olika fält...

har ett som heter smak och ett som hter storlek. I dessa sätter man en bokstav som betyder olika smaker

ex. A= jordgubb, choklad och B= choklad, vanilj

Nu vill jag ha en db fil där jag har alla dessa olika smaker och vad just bokstaven A innehåller.... hur gör jag sedan när jag presenterar produkten på hemsidan.

I produktdb står det en bokstav A hur kopplar jag ihop den med smakdb.

Och hur skriver jag smakdb bäst?

Är jätteglad för lite hjälp!

Medlem sedan dec. 20003 887 inlägg
#2

tblSmak
- strTyp (A, B, ..., etc)
- strSmak

tblProdukt
- strNamn
- strTyp

Relationen i Accessdatabasen blir en-till-flera mellan tblProdukt.strTyp och tblSmak.strTyp.

SELECT strNamn FROM tblProdukt tP
INNER JOIN tblSmak tS ON tS.strTyp = tP.strTyp
WHERE tP.strTyp = 'A'

Presentation på sidan... hur du gör det är ju helt upp till dig.

Dim rsInfo, objConn

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

objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("GlassDatabas.mdb") [blue]'Sökväg...[/blue]

strSQL = "SELECT strNamn, strSmak FROM tblProdukt tP INNER JOIN tblSmak tS ON tS.strTyp = tP.strTyp WHERE tP.strTyp = 'A'"

Set rsInfo = objConn.Execute(strSQL, , 1)

While Not rsInfo.EOF
  Response.Write rsInfo("strNamn") & " har smaker: " & rsInfo("strSmak") & "<br>"
 
  rsInfo.MoveNext
Wend

Set rsInfo = Nothing
Set objConn = Nothing
Medlem sedan aug. 2000526 inlägg
#3

ok.. ska testa detta

men om jag nu har en produkt som har typ A (choklad, vanlij) och en produkt med typ B (vanilj) och båda ska visas för dom till hör samma produktgrupp (piller) allstå

select namn, pris from tblprod where prodtyp = piller

så skulle det vara tidigare utan smak och sen skulle jag loopa igenom den... men nu så är det ju heltplötsligt så att jag måste loopa igenom smakdatabasen inuti den första loopen från proddatabasen,, hur funkar det... loop i loop blir det väl

Medlem sedan aug. 2000526 inlägg
#4

är det nån som har nån bra förklaring till problem 2?

Medlem sedan aug. 2000526 inlägg
#5

hoppas fortfarande nån har en lösning på problem 2

Medlem sedan juni 200032 969 inlägg
#6

Jag tror inte jag förstår frågan. Försök förklara igen, det kanske är jag som är seg.

Mvh

Medlem sedan aug. 2000526 inlägg
#7

Jo jag har en datbasfil med oliak produkter... en del av dessa produkterna har olika smaker.. men i dagsläget så står det en bokstav.. tex A = choklad, jorgubb: B= vanlij, päron.

i den lösningen jag har nu så presenteras all produkterna på en sida via en querystring där man väljer produkttyp... tex. Strut eller Våffla.....
i samma sida så kollas det i produktdatabasfilen om det står en smakkod... gör det detta så finns en If Else sats som är "hårdkodad" står det A så ska choklad, jorgubb vara med i en dropdown

vad jag nu är ute efter är att den smakkod ska finnas kvar i databasfilen men att betydelsen för de olika bokstäverna också ska ligga i en separat fil i databasen... (mkt enklare at uppdatera då)

Hur gör jag då när jag loopar igenom produkterna och stöter på en produkt som har smakkod A. Då ska den ju loopa igenom de olika smakerna som finns för A... och sedan fortsätta loopa igenom produkterna.

Klarnade det nu??? *ler*
Bengt

Medlem sedan juni 200032 969 inlägg
#8

Är det inte detta Engine^ har svarat på med sin join? Så förstår jag det i alla fall...

Mvh

Medlem sedan aug. 2000526 inlägg
#9

nja... alla produkter har ju inte smak

kika på
http://www.fitnessbutiken.se/varor.asp?item=Bars

Medlem sedan juni 200032 969 inlägg
#10

Prova då med en left outer join istället för inner join.

Medlem sedan aug. 2000526 inlägg
#11

ok... men om jag som du ser på sidan vill lägga smakerna i en dropdown så måste den ju loopa dropdownlisten om den hittar smak för produkten och sedan gå tillbaka till den vanliga loopen och det går väl inte att ha en loop inuti en loop

Medlem sedan juni 200032 969 inlägg
#12

Jo, det kan du, men jag förstår inte varför inte resultatsetet från Engine^s fråga (fast en left outer join) kan räcka bra? Du borde få all data du behöver?

Medlem sedan aug. 2000526 inlägg
#13
While Not rsInfo.EOF
  Response.Write rsInfo("strNamn") & " har smaker: " & rsInfo("strSmak") & "<br>"
 
  rsInfo.MoveNext
Wend

med denna koden så borde ju resultatet bli att den skriver för ut produktens namn sedan alla smaker i en följd och sedan nästa produkt osv.... jag vill ju kunna lägga smakerna i en dropdown..

men jag ska prova när jag kommer hem

tack så länge

Medlem sedan juni 200032 969 inlägg
#14

pellsäter skrev:

med denna koden så borde ju resultatet bli att den skriver för ut produktens namn sedan alla smaker i en följd och sedan nästa produkt osv.... jag vill ju kunna lägga smakerna i en dropdown..

Det ska inte vara några problem att lösa i asp-koden, med lite if-satser och variabler. Det kan du få hjälp med i ASP-forumet sedan, om du inte får ihop det själv. :)

Mvh

Medlem sedan aug. 2000526 inlägg
#15

har inte till gång till databasen just nu men skulle detta kunna funka

<% 
if "" & rs("smak") <> "" then 
		response.write "<select name=""smak"" class=""form_varor""> & rs(""sssmak"") & </option></select>" 

else 
        response.write "" 
    
end If
%>
Medlem sedan dec. 20003 887 inlägg
#16

Eller så här

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("GlassDatabas.mdb")

strSQL = "SELECT strNamn, strTyp FROM tblProdukt tP"
Set rsProdukt = objConn.Execute(strSQL, , 1)

Response.Write "<table>"

While Not rsProdukt.EOF
  Response.Write "<tr><td>" & rsProdukt("strNamn") & "</td>"

  strSQL = "SELECT strSmak FROM tblSmak WHERE strTyp = '" & rsProdukt("strTyp") & "'"
  Set rsSmak = objConn.Execute(strSQL, , 1)

  Response.Write "<td>"

  If Not rsSmak.EOF Then
    Response.Write "<select>"

    While Not rsSmak.EOF
      Response.Write "<option value=""" & rsSmak("strSmak") & """>" & rsSmak("strSmak") & "</option>"

      rsSmak.MoveNext
    Wend

    Response.Write "</select>"
  End If

  Response.Write "</td></tr>"

  rsProdukt.MoveNext
Wend

Response.Write "</table>"

Set rsInfo = Nothing
Set objConn = Nothing

Vidare frågor bör du ställa i ASP, VBScript forumet

Medlem sedan mars 20015 287 inlägg
#17

Får han inte ut all info med den första frågan du postade?
Det ska väl inte behövas en loop i loopen så att säga?

Medlem sedan dec. 20003 887 inlägg
#18

Jo, men det regnar ju ute ju... ;)

Jag använde två loopar istället för att hålla på med if-satser.

Medlem sedan aug. 2000526 inlägg
#19

en dum fråga Engine men när jag gör databasen så ska jag ha ett fältnamn som heter
strTyp och ett som heter strSmak..

I strTyp är det de olika bokstäverna
I strSmak de olika smakerna

men hur fattar sidan sedan att när srtTyp = A vilka smaker som tillhör den när jag bara skrivit in alla smakerna utan att åtminsoten jag förstår hur kopplingen till A ska vara.

Ska man skriva in alla smaker i samma fält (strSmak) och sedan dela upp det när man lägger in dessa i Dropdown iså fall hur skriver jag in det med mellanslag elle rmed kommatecken och hur delar jag upp det sedan

Medlem sedan dec. 20003 887 inlägg
#20

tblSmak
- strTyp (A, B, ..., etc)
- strSmak

tblProdukt
- strNamn
- strTyp

Eftersom jag tänkte att datat lagras som ovan, så kan det se ut som följande:
tblProdukt
strNamn: Piller, strTyp = A
strNamn: Tablett, strTyp = B
strNamn: Grunk, strTyp = C

tblSmak
strTyp: A, strSmak: Banan
strTyp: A, strSmak: Choklad
strTyp: A, strSmak: Vanilj
strTyp: B, strSmak: Citron
strTyp: B, strSmak: Vanilj
strTyp: C, strSmak: Choklad

Så om du gör en fråga

SELECT strNamn, strSmak FROM tblProdukt tP INNER JOIN tblSmak tS ON tS.strTyp = tP.strTyp WHERE tP.strTyp = 'A'

får du ett resultat som ser ut så här:

strNamn, strSmak
Piller, Banan
Piller, Choklad
Piller, Vanilj

I mitt svar ovan, så delade jag upp frågan i två delar då jag tyckte att det gav ett tydligare svar. Samma sak åstadkoms dock. Det viktiga är alltså det sätt du använder för att lagra datan.

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