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 455 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

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 569 600
27 953
271 705
3 989
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