Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Checkboxar

Postades av 2006-04-09 19:44:21 - Joakim Wilhelmsson, i forum asp - allmänt, Tråden har 12 Kommentarer och lästs av 462 personer

Jag har ett antal checkboxar som jag loopar ut, sen vill jag spara de olika alternativen som man kryssar i för just den användaren i en tabell som heter User_File

User_FileID | UserID | FileID
---------------------------
1 | 2 | 17
2 | 2 | 18
3 | 2 | 22

Hur gör jag för att endast spara de alternativ (FileID) som inte redan är sparade för den användaren, dvs endast de nya kryssrutorna som man kryssat i.
Följande kod ta inte hänsyn till om om den användaren redan har det FileID:t
<code>
for each item in request.form

SQL = "INSERT INTO User_File (UserID, FileID) VALUES("& userid &", "& item &")"
Conn.Execute(SQL)

Next
</code>


Svara

Sv: Checkboxar

Postades av 2006-04-10 23:04:27 - Andreas Hillqvist

Välkommen hackers? Du bör läsa artikeln om SQL inject först.

Varför köra en fråga för varje post? Vi börjar med denna frågeställning.
Det är möjligt att infoga flera poster med en fråga om man har en tabell med informationen. Vilket jag antar stämmer i ditt fall.

För att infoga alla filer till en användare skriver du:

INSERT INTO User_File (UserID, FileID)
SELECT 1, FileID
FROM Files


Vi vill ju begränsa detta:
INSERT INTO User_File (UserID, FileID)
SELECT 1, FileID
FROM Files
WHERE FileID IN (12, 45, 67)

Vilket infogar bara tre av filerna.

Nu vill vi ju inte infoga filer som redan finns hos användaren:
INSERT INTO User_File (UserID, FileID)
SELECT 1, FileID
FROM Files LEFT JOIN Files ON ((Files.FileID = User_File.FileID) AND (User_File.FileID = 1))
WHERE FileID IN (12, 45, 67) AND User_File.User_FileID



Eftersom du inte uppgivit databas. Chansar på att du använder Access, MySQL eller MS SQL Server.
Syntaxen bör funka i Access och MS SQL Server. Kan krävas lite anpassning för MySQL.


Svara

Sv:Checkboxar

Postades av 2006-04-11 21:31:19 - Joakim Wilhelmsson

Tack för hjälpen men jag får ett felmeddelande när jag testkör frågan i Access "Syntaxfel i JOIN-operation", någon idé om vad det kan vara?


Svara

Sv: Checkboxar

Postades av 2006-04-11 22:17:10 - Jonas Boman

vet inte om det hjälper men försök specificera tabell till fältnamn

INSERT INTO User_File (UserID, FileID)
SELECT 1, FileID
FROM Files LEFT JOIN Files ON ((Files.FileID = User_File.FileID) AND (User_File.FileID = 1))
WHERE FileID IN (12, 45, 67) AND User_File.User_FileID

"FROM Files LEFT JOIN Files ON"

hm, joina sig själv?


Svara

Sv:Checkboxar

Postades av 2006-04-12 10:43:59 - Andreas Hillqvist

Skall vara:

INSERT INTO User_File (UserID, FileID)
SELECT 1, FileID
FROM Files LEFT JOIN User_File ON ((Files.FileID = User_File.FileID) AND (User_File.FileID = 1))
WHERE FileID IN (12, 45, 67) AND User_File.User_FileID IS Null


Svara

Sv: Checkboxar

Postades av 2006-04-12 14:03:31 - Joakim Wilhelmsson

Nu får jag ett annat felmmedelande: "Det angivna fältet 'FileID' kan referera till fler än en av de tabeller som är uppräknade i SQL-uttryckets FROM-instruktion." Blir inte riktigt klok på detta... Testade att skriva
<code>
WHERE User_File.FileID IN...
</code>
men får samma fel.


Svara

Sv:Checkboxar

Postades av 2006-04-12 14:12:43 - Jonas Boman

SELECT 1, FileID <- denna skall specas med tabellnamn antar jag?!


Svara

Sv: Checkboxar

Postades av 2006-04-12 14:51:24 - Joakim Wilhelmsson

Testade detta:
<code>
INSERT INTO User_File (UserID, FileID)
SELECT 1, User_File.FileID
FROM Files LEFT JOIN User_File ON ((Files.FileID = User_File.FileID) AND (User_File.FileID = 1))
WHERE User_File.FileID IN (12, 45, 67) AND User_File.User_FileID IS Null
</code>
Får inget felmeddelande med det lades inte till några poster heller...


Svara

Sv:Checkboxar

Postades av 2006-04-12 15:05:08 - Andreas Hillqvist

22, 45, 67 är exempel id'n du skall ersätta dessa med de idn till filer du vill lägga till.
1 är ett exempel på user id som bör ersättas med idet till användaren du vill lägga till filerna.


Svara

Sv: Checkboxar

Postades av 2006-04-12 15:19:50 - Joakim Wilhelmsson

Jag körde föjlande:
<code>
INSERT INTO User_File (UserID, FileID)
SELECT 1, User_File.FileID
FROM Files LEFT JOIN User_File ON ((Files.FileID = User_File.FileID) AND (User_File.FileID = 3))
WHERE User_File.FileID IN (2, 3) AND User_File.User_FileID IS Null
</code>
Det finns filer med id:t 2 och 3 i tabellen files och en användare med id:t 3 i tabellen Users men ändå läggs inga poster till. Förstår inte riktigt var "AND (User_File.FileID = 3))" gör.


Svara

Sv:Checkboxar

Postades av 2006-04-12 15:24:22 - Jonas Boman

Det är bara ett exempel helge....

Du får applicera med det som gäller för just dina checkboxar.


Svara

Sv: Checkboxar

Postades av 2006-04-12 15:43:29 - Andreas Hillqvist

Litet fel. Skall vara File.FileID istället för User_File.FileID i where satsen:

INSERT INTO User_File (UserID, FileID)
SELECT @UserId, File.FileID
FROM Files LEFT JOIN User_File ON ((Files.FileID = User_File.FileID) AND (User_File.UserID = @UserId))
WHERE File.FileID IN (2, 3) AND User_File.User_FileID IS Null

Eller:
INSERT INTO User_File (UserID, FileID)
SELECT @UserId, File.FileID
FROM Files 
WHERE File.FileID IN (2, 3) AND NOT File.FileID IN (SELECT User_File.FileID
    LEFT JOIN User_File
    WHERE User_File.UserID = @UserId)

Den sista frågan kanske har lite mer tydlig syntax.


Svara

Sv:Checkboxar

Postades av 2006-04-12 16:11:14 - Joakim Wilhelmsson

Nu fungerar följande:
<code>
INSERT INTO User_File (UserID, FileID)
SELECT 3, File.FileID
FROM Files LEFT JOIN User_File ON ((Files.FileID = User_File.FileID) AND (User_File.UserID = 3))
WHERE File.FileID IN (2, 3) AND User_File.User_FileID IS Null
</code>
Fråga 2 fick jag inte att fungera. Problemet är bara att om jag kör frågan två gånger så lägger den till FileID 2 och 3 båda gångerna till användaren med id:t 3 . Den tar alltså inte hänsyn till om användaren redan har filen.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 777
27 960
271 761
501
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies