---
title: "Favoritval av affärer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/73124-favoritval-av-affärer"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Bj"
published: "2003-04-04T08:12:20.000Z"
updated: "2003-04-06T13:15:58.000Z"
replies: 23
views: 500
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/73124-favoritval-av-affärer"
---

# Favoritval av affärer

_Sida 1 av 2._

## #1 — Bj, 2003-04-04T08:12Z

Jag har kört fast totalt och kommer ingen vart för tillfället. Skall se om jag kan förklara på ett bra sätt vad jag vill göra.

Access databas.

Tabeller:
entreprenorer
affarer
orders

Jag har ett inloggningsformulär för entreptrenörer.
När de loggat in kommer de till en ordersida med ett formulär de skall fylla i. Deras egna namn och adress ligger också med där som hidden-fält från tabellen entreprenorer.
Här skall de sedan välja vilken affär de vill skicka ordern till.
Den ligger som en dropdown-lista där alla anslutna affärers email visas. (Hämtas från tabellen affarer)
När allt är ifyllt skickas ordern till affären med vald emailadress med hjälp av CDONT och Request.Form affaremail.

Men om denna lista "sväller" och blir många så skulle jag vilja att entreprenören någonstans skulle kunna välja ut ett antal "favoritaffärer" så endast dessa visas i framtida besök i just hans dropdown-lista.

Någon som känner sig manad att förklara detta för mig?

Permalänk: https://www.webforum.nu/p/73124

## #2 — Vide, 2003-04-04T08:50Z

Skapa en relationstabell där du sparar entreprenörens id tillsammans med dom affärsid:n som skall vara favoriter. Sedan är det bara att kolla i den tabellen när du skall lista affärerna. Finns det inga favoriter (eof) så listar du alla, om det finns favoriter så listar du bara dom affärer kopplade till entreprenörens id.

MvV

Permalänk: https://www.webforum.nu/p/1000421

## #3 — KoTTeN, 2003-04-04T08:51Z

Om du har ett extra fält i entreprenorer för affarerID där du sammlar alla affärs ID åtskillt med ; eller liknande och sedan när du ska skapa listan splitar du upp dom i en Array och hämtar dom sedan från databasen.

Permalänk: https://www.webforum.nu/p/1000423

## #4 — Bj, 2003-04-04T09:47Z

Oki!
Om man börjar med Vides förslag:
Skapade en tabell som heter favoriter med fälten:
favoritID (räknare)
favoritentreprenorID (text)
favoritaffarID (text)

Då kommer det att bli tre tabeller inblandade när de kommer till orderformuläret...
Hur skall man lösa det. Så här ser det ut nu där affären väljs.

```
	Set RecSet = Server.CreateObject("ADODB.Recordset")
	SQL = "SELECT * From affarer ORDER BY AffarsNamn"
	RecSet.Open SQL, Connect
	If RecSet.EOF Then
	response.write "Inga affärer är inlagda i databasen"
	End If
	%>

<option value='0'>- Välj affär här -</option>

	<% Do While Not RecSet.EOF %>
<option>

	<% =RecSet("AffarsEmail") %>

	<%
	RecSet.MoveNext
	Loop
	RecSet.Close
	Connect.Close
	Set RecSet = nothing
	Set Connect = nothing
	%>
</option>
</select>
```

Permalänk: https://www.webforum.nu/p/1000455

## #5 — Vide, 2003-04-04T10:33Z

Är favoritentreprenorID (text) och favoritaffarID (text) nummer eller textnamn? Förslagsvis skall det vara nummer och således inte text. Antar att varje entreprenör och affär har ett unikt idnummer.

Permalänk: https://www.webforum.nu/p/1000481

## #6 — Vide, 2003-04-04T10:37Z

Denna kod bygger på att du har ID-nummrena som nummer och inte text:

```
<%
SQL = "select * from favoriter where favoritentreprenorID = " & strEntId
set RecSet = Connect.execute( SQL )

if RecSet.eof then
	SQL = "SELECT * From affarer ORDER BY AffarsNamn"
	set rsAffarer Connect.execute( SQL )
else
	while not RecSet.eof
		strIds = strIds & RecSet( "favoritaffarID" ) & ","
		RecSet.movenext
	wend
	strIds = left( strIds, len( strIds ) -1 )
	SQL = "select * from affarer where arrarsid in( " & strIds & " )"
	set rsAffarer = Connect.execute( SQL )
end if

If rsAffarer.EOF Then
	response.write "Inga affärer är inlagda i databasen"
End If
%>
<option value='0'>- Välj affär här -</option>

	<% Do While Not rsAffarer.EOF %>
<option>

	<%=rsAffarer("AffarsEmail") %>

	<%
	rsAffarer.MoveNext
	Loop
	rsAffarer.Close
	RecSet.Close
	Connect.Close
	Set rsAffarer = nothing
	Set RecSet = nothing
	Set Connect = nothing
	%>
</option>
</select>
```

Permalänk: https://www.webforum.nu/p/1000483

## #7 — Bj, 2003-04-04T10:58Z

Har ändrat ID nummren i tabellen favoriter till "tal"

Fick följande fel:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Syntaxfel (operator saknas) i frågeuttrycket 'favoritentreprenorID ='.
/databas/orderform1.asp, line 244

vilket är följande rad.
set RecSet = Connect.execute( SQL )

Permalänk: https://www.webforum.nu/p/1000503

## #8 — Vide, 2003-04-04T11:19Z

Du måste ange entreprenörsidt i variabeln strEntId också, det är kopplingen till vilkas favoriter som skall tas fram.

Permalänk: https://www.webforum.nu/p/1000518

## #9 — Bj, 2003-04-04T11:44Z

Tyvärr hänger jag inte riktigt med där Vide.
Hur skall det anges?

Permalänk: https://www.webforum.nu/p/1000540

## #10 — Vide, 2003-04-04T12:10Z

Hur anges vilken entreprenör som kollar på sidan? Det måste på något sätt kopplas innan du kör scriptet.

Permalänk: https://www.webforum.nu/p/1000565

## #11 — Bj, 2003-04-04T13:00Z

Mmm, den skall alltså kopplas till fältet entreprenorsID från tabellen entreprenorer.
Kanske... ;)
Provade med strEntId=Request.Form("entreprenorsId")
men det gick ju inte.....

Permalänk: https://www.webforum.nu/p/1000590

## #12 — solbulle, 2003-04-04T13:11Z

Vad hände när du gjorde det? Tycker det borde fungerat.
Förutsatt att det är ett tal som finns i Request.Form("entreprenorsId")

Permalänk: https://www.webforum.nu/p/1000599

## #13 — Bj, 2003-04-04T13:25Z

Riktigt solbulle.
Jag hade naturligtvis ingen form att hämta ifrån utan det skulle vara RecSet.
Nu funkar detta... tror jag. Skall testa lite mer.
STORT TACK VIDE!!!

Sedan kommer jag till nästa del.
Hur lägger man upp det så entreprenören första gången kan välja sina affärer, och han borde även kunna någon gång gå tillbaka och ta bort eller lägga till nya affärer om han vill.

Permalänk: https://www.webforum.nu/p/1000613

## #14 — Bj, 2003-04-05T17:47Z

Nu har jag kommit till valet av favoritaffärer.
En länk från orderformuläret tar entreprenören till följande sida.
Tanken är att entreprenören skall kunna sätta en bock i de affärer han vill visas i dropdown menyn i framtiden.
Men hur skall informationen från formuläret tas emot?

```
	<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	MdbFilePath = Server.MapPath("db_1.mdb")
	Connect.Open = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

	Set RecSet = Server.CreateObject("ADODB.Recordset")
	Visa = "SELECT * FROM entreprenorer WHERE entreprenorsid = " & Trim(Request.QueryString("adressID")) & " "
	RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic
	%>

	<%=RecSet("entreprenorsid")%><br>
	<%=RecSet("entreprenorsnamn")%><br>
	
	<%
	RecSet.Close
	Connect.Close
	Set RecSet = nothing
	Set Connect = nothing
	%>
<br><br>

<form action="valj_favorit2.asp" method="post">
	<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	MdbFilePath = Server.MapPath("db_1.mdb")
	Connect.Open = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

	Set RecSet = Server.CreateObject("ADODB.Recordset")
	Visa = "SELECT * FROM affarer order by affarsnamn"
	RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

	Do While Not RecSet.EOF
	%>
<input type="checkbox" name="mina_favoriter">
	<%=RecSet("affarsid")%> - 
	<%=RecSet("affarsnamn")%> - 
	<%=RecSet("affarsort")%>
<br>

	
	<%
	RecSet.MoveNext
	Loop
	RecSet.Close
	Connect.Close
	Set RecSet = nothing
	Set Connect = nothing
	%>
<input type="submit" Value="Välj dessa favoriter">
</form>
```

Permalänk: https://www.webforum.nu/p/1001311

## #15 — @nders, 2003-04-06T08:40Z

Jag är inte helt säker på vad du är ute efter, men jag gör ett försök i alla fall.

```
<input type="checkbox" name="mina_favoriter"[b] value="<%=RecSet("IDfältet")%>"[/b]>
 . . . .
' när du tar emot:
<%
strFavoritesList = Request.Form("mina_favoriter")
varFavoritesList = Split(strFavoritesList, ", ")  ' skapa array genom att dela strängen vid kommatecken (man kan välja fler affärer)
for i = 0 to ubound (varFavoritesList)
    Response.write varFavoritesList(i) & "<br>"
next
%>
```

Mvh,

Permalänk: https://www.webforum.nu/p/1001547

## #16 — Bj, 2003-04-06T09:30Z

Jo du har nog hängt med @nders. Sedan är tanken att dessa förbockade rutor skall uppdateras i tabellen
Favoriter

som alltså innehar fälten
FavoritId (räknare)
FavoritaffarId (tal)
FavoritentreprenorId (tal)

Permalänk: https://www.webforum.nu/p/1001570

## #17 — @nders, 2003-04-06T09:35Z

Har du alla de värdena på sidan innan? Behövs det verkligen tre värden, det borde väl räcka med ett id-nummer, det verkar som du hämtar allt från samma tabell när du skapar formuläret?

Mvh

Permalänk: https://www.webforum.nu/p/1001573

## #18 — Bj, 2003-04-06T10:00Z

Entreprenörens uppgifter hämtas från "sin" tabell vid dennes inloggning.
I forumläret loopas sedan alla affärer i en dropdown-lista.

Men om entreprenören via en länk gått till valj_favoriter.asp och där valt vilka affärer han vill använda i framtiden så skall endast dessa visas i ovanstående dropdown-lista. Därför finns tabellen "Favoriter"

Har testat med att "manuellt" lägga in uppgifter i tabellen favoriter.
FavoritId   FavoritaffarId     FavoritentrepenorId
     1                   10                          5
     2                   11                          5
     3                   12                          5
     4                   10                          19
     5                   15                          19
osv...

Nu gäller det för att låta entreprenören själv välja favoritaffärer vilket jag tänkte med ovanstående formulär.

Puh.. inte så enkelt att förklara kanske...

Permalänk: https://www.webforum.nu/p/1001597

## #19 — solbulle, 2003-04-06T10:29Z

Det där verkar sunt tycker jag, en relationstabell helt enkelt.

Permalänk: https://www.webforum.nu/p/1001626

## #20 — @nders, 2003-04-06T11:18Z

Nu är jag med. Jag missuppfattade dig en aning bara, och precis som solbulle skriver; det ser sunt ut. :)

Jag vet inte om du har entreprenörsid någon annanstans än i en querystring på sidan där du skriver ut formuläret, så vi skickar vidare det också i formuläret:

```
<form action="valj_favorit2.asp" method="post">
[b]<input type="hidden" name="entreprenorsid" value="<%=Trim(Request.QueryString("adressID")) %>[/b]
	<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	MdbFilePath = Server.MapPath("db_1.mdb")
	Connect.Open = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

	Set RecSet = Server.CreateObject("ADODB.Recordset")
	Visa = "SELECT * FROM affarer order by affarsnamn"
	RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

	Do While Not RecSet.EOF
	%>
<input type="checkbox" name="mina_favoriter" value="<%=RecSet("IDfältet")%>">	<%=RecSet("affarsid")%> - 
	<%=RecSet("affarsnamn")%> - 
	<%=RecSet("affarsort")%>
<br>

	
	<%
	RecSet.MoveNext
	Loop
	RecSet.Close
	Connect.Close
	Set RecSet = nothing
	Set Connect = nothing
	%>
<input type="submit" Value="Välj dessa favoriter">
</form>
```

Och sedan, när det är dags att ta emot då:

```
<%
strFavoritesList = Request.Form("mina_favoriter")
varFavoritesList = Split(strFavoritesList, ", ")  ' skapa array genom att dela strängen vid kommatecken (man kan välja fler affärer)
' skapa connectionobjekt, Connect
' här tar vi och rensar bort allt som var inlagt tidigare, eftersom vi ändå kommer göra INSERT på allt som markerades
strSQL = "DELETE FROM Favoriter WHERE FavoritentreprenorId = " & Request.Form("entreprenorsid") 
Connect.Execute strSQL,,128
for i = 0 to ubound (varFavoritesList)
    strSQL = "INSERT INTO Favoriter (FavoritaffarId, FavoritentreprenorId) VALUES (" & varFavoritesList(i) & ", " & Request.Form("entreprenorsid") & ")"
    Connect.Execute strSQL,,128
next
%>
```

Återigen, med reservation för eventuella missförstånd. ;)

Mvh,

Permalänk: https://www.webforum.nu/p/1001680

---

Tråden på webben: https://www.webforum.nu/amne/asp/73124-favoritval-av-affärer  
Nästa sida: https://www.webforum.nu/amne/asp/73124-favoritval-av-affärer/page2.md
