webForumDet fria alternativet

Null i formulär

ASP

20 svar · 624 visningar · startad av Lorelie

Medlem sedan juni 2005264 inlägg
Frågan#1

Håller på med ett formulär där jag vill att om man inte fyller i något så ska det vara ett nullvärde i databasen, det är ju inga större problem så långt, man anger ju bara option value=null, MEN, jag vill itne att det ska stå "null" rutorna från början, de icke ifyllda rutorna ska bli till nullvärden i databasen. Vill ha det så i alla rutor utom 3 (en av dem kan inte vara null, och de andra två ska ha standardvärde 1 och 2, det står inskrivet med option value)

Medlem sedan sep. 2006867 inlägg
#2

Hej!

Om du använder en bra databas så finns det SQL-funktionen isnull så att du redan i din SQL-fråga kan returnera nullvärden som vadsomhelst, exempelvis en tom sträng eller ett mellanslag för all del.

/* For Access: */ 
 
    SELECT IIF(ISNULL(column),' ',column) FROM Table 
 
 
    /* For SQL Server: */ 
 
    SELECT ISNULL(column,' ') FROM Table 
 
        -- or, more ANSI-compliant: 
 
    SELECT COALESCE(column,' ') FROM Table

Snott exempel från http://databases.aspfaq.com/database/how-do-i-prevent-nulls-in-my-database-from-mucking-up-my-html.html

Medlem sedan juni 2005264 inlägg
#3

headbug skrev:

Hej!

Om du använder en bra databas så finns det SQL-funktionen isnull så att du redan i din SQL-fråga kan returnera nullvärden som vadsomhelst, exempelvis en tom sträng eller ett mellanslag för all del.

/* For Access: */ 
 
    SELECT IIF(ISNULL(column),' ',column) FROM Table 
 
 
    /* For SQL Server: */ 
 
    SELECT ISNULL(column,' ') FROM Table 
 
        -- or, more ANSI-compliant: 
 
    SELECT COALESCE(column,' ') FROM Table

Snott exempel från http://databases.aspfaq.com/database/how-do-i-prevent-nulls-in-my-database-from-mucking-up-my-html.html

Fattar ingenting :OO

Jag vill att rutorna som inte fylls i ska få ett null-värde, hur gör man det?

Medlem sedan juni 20019 519 inlägg
#4

Mitt råd är att du ska läsa lite extra om SQL och hur det fungera...
http://w3schools.com/sql/ är en enkel start men förhoppsningsvis ger lite ljus på ditt problem.

Medlem sedan juni 2005264 inlägg
#5

voigtann1 skrev:

Mitt råd är att du ska läsa lite extra om SQL och hur det fungera...
http://w3schools.com/sql/ är en enkel start men förhoppsningsvis ger lite ljus på ditt problem.

Jag förstår inte vad null-värdet har i sql-satsen att göra. Jag ska ju lägga dem via formuläret, inte söka efter dem?

Medlem sedan sep. 2006867 inlägg
#6

Jaha, jag läste ditt inlägg åt fel håll så att säga, ibland är det svårt att tyda vad frågaren vill exakt =)

Då skriver du bara något i stil med att

Dim input1
input1 = Request.Form("input1")
If input1 = "" Then input1 = "NULL"

Sedan använder du detta i din INSERT-sats utan ändring.

Medlem sedan juni 2005264 inlägg
#7

headbug skrev:

Jaha, jag läste ditt inlägg åt fel håll så att säga, ibland är det svårt att tyda vad frågaren vill exakt =)

Då skriver du bara något i stil med att

Dim input1
input1 = Request.Form("input1")
If input1 = "" Then input1 = "NULL"

Sedan använder du detta i din INSERT-sats utan ändring.

Inte så lätt alla gånger :OO

Det fungerade inte. Blir inga felmeddelanden, men det blir heller inga null-värden i databasen

Medlem sedan maj 200010 687 inlägg
#8

Lorelie skrev:

Jag förstår inte vad null-värdet har i sql-satsen att göra. Jag ska ju lägga dem via formuläret, inte söka efter dem?

På ett eller annat sätt så används SQL för att spara värdet i databasen.

Om du skriver dina INSERT-statements själv så utforma SQL:en så att det blir typ:

INSERT INTO tabell(kolumn1, kolumn2, kolumn3) VALUES(123, 'abc', NULL)

Eller om du använder ADO:

rs("kolumn1") = 123
rs("kolumn2") = "abc"
rs("kolumn3") = Null
Medlem sedan juni 2005264 inlägg
#9

Erik Juhlin skrev:

På ett eller annat sätt så används SQL för att spara värdet i databasen.

Om du skriver dina INSERT-statements själv så utforma SQL:en så att det blir typ:

INSERT INTO tabell(kolumn1, kolumn2, kolumn3) VALUES(123, 'abc', NULL)

Eller om du använder ADO:

rs("kolumn1") = 123
rs("kolumn2") = "abc"
rs("kolumn3") = Null

sql = "insert into hast (namn, kon, reg_nr, stamboks_nr, ras, fodd, dod, farg, tecken, mankh, pappa, mamma, uppf, utlstbnr, inskickad_av, inskickad_av_mail, hemsida, ovrigt, diplom_ar, diplompoang, elit_ar, prem, prem_poang,utlatande, imp, exp, bild_url) values ('"& SafeSQL(Request.Form("namn")) &"','" & SafeSQL(request.form("kon")) & "','" & SafeSQL(request.form("reg_nr")) & "', '" & SafeSQL(request.form("stamboks_nr")) & "' ,  '" & SafeSQL(request.form("ras")) & "' ,'" & SafeSQL(request.form("fodd")) & "','" & SafeSQL(request.form("dod")) & "' ,'" & SafeSQL(request.form("farg")) & "','" & SafeSQL(request.form("tecken")) & "' ,'" & SafeSQL(request.form("mankh")) & "' ,'" & SafeSQL(request.form("pappa")) & "' ,'" & SafeSQL(request.form("mamma")) & "' ,'" & SafeSQL(request.form("uppf")) & "' ,'" & SafeSQL(request.form("utlstbnr")) & "', '" & SafeSQL(request.form("inskickad_av")) & "', '" & SafeSQL(request.form("inskickad_av_mail")) & "', '" & SafeSQL(request.form("hemsida")) & "',  '" & SafeSQL(request.form("ovrigt")) & "',  '" & SafeSQL(request.form("diplom_ar")) & "' ,  '" & SafeSQL(request.form("diplompoang")) & "'  ,  '" & SafeSQL(request.form("elit_ar")) & "' ,  '" & SafeSQL(request.form("prem")) & "' ,  '" & SafeSQL(request.form("prem_poang")) & "' ,  '" & SafeSQL(request.form("utlatande")) & "' ,  '" & SafeSQL(request.form("imp")) & "' ,  '" & SafeSQL(request.form("exp")) & "',  '" & SafeSQL(request.form("bild_url")) & "')"
response.write sql

Hur klämmer man in ett nullvärde där?

Medlem sedan maj 200010 687 inlägg
#10

Nu skrev du inte vilken kolumn du ville skulle kunna få vara null, men jag tar bild_url som exempel:

Dim bild_url
If request.form("bild_url") <> "" Then
	bild_url = "'" & SafeSQL(request.form("bild_url")) & "'"
Else
	bild_url = "NULL"
End IF

sql = _
	" insert into hast (namn, kon, reg_nr, stamboks_nr, ras, fodd, dod, farg, tecken, mankh, pappa, mamma, uppf, utlstbnr, inskickad_av, inskickad_av_mail, hemsida," & _
	" ovrigt, diplom_ar, diplompoang, elit_ar, prem, prem_poang,utlatande, imp, exp, bild_url)" & _
	" values ('"& SafeSQL(Request.Form("namn")) &"','" & SafeSQL(request.form("kon")) & "','" & SafeSQL(request.form("reg_nr")) & "', '" & SafeSQL(request.form("stamboks_nr")) & "'," & _
	" '" & SafeSQL(request.form("ras")) & "', '" & SafeSQL(request.form("fodd")) & "','" & SafeSQL(request.form("dod")) & "', '" & SafeSQL(request.form("farg")) & "'," & _
	" '" & SafeSQL(request.form("tecken")) & "', '" & SafeSQL(request.form("mankh")) & "' ,'" & SafeSQL(request.form("pappa")) & "' ,'" & SafeSQL(request.form("mamma")) & "'," & _
	" '" & SafeSQL(request.form("uppf")) & "' ,'" & SafeSQL(request.form("utlstbnr")) & "', '" & SafeSQL(request.form("inskickad_av")) & "', '" & SafeSQL(request.form("inskickad_av_mail")) & "'," & _
	" '" & SafeSQL(request.form("hemsida")) & "', '" & SafeSQL(request.form("ovrigt")) & "', '" & SafeSQL(request.form("diplom_ar")) & "', '" & SafeSQL(request.form("diplompoang")) & "'," & _
	" '" & SafeSQL(request.form("elit_ar")) & "' , '" & SafeSQL(request.form("prem")) & "' , '" & SafeSQL(request.form("prem_poang")) & "', '" & SafeSQL(request.form("utlatande")) & "'," & _
	" '" & SafeSQL(request.form("imp")) & "' , '" & SafeSQL(request.form("exp")) & "', " & bild_url & ")"

Tips: Kod på bredden är inte så lättläst.

Medlem sedan juni 2005264 inlägg
#11

Erik Juhlin skrev:

Nu skrev du inte vilken kolumn du ville skulle kunna få vara null, men jag tar bild_url som exempel:

Dim bild_url
If request.form("bild_url") <> "" Then
	bild_url = "'" & SafeSQL(request.form("bild_url")) & "'"
Else
	bild_url = "NULL"
End IF

sql = _
	" insert into hast (namn, kon, reg_nr, stamboks_nr, ras, fodd, dod, farg, tecken, mankh, pappa, mamma, uppf, utlstbnr, inskickad_av, inskickad_av_mail, hemsida," & _
	" ovrigt, diplom_ar, diplompoang, elit_ar, prem, prem_poang,utlatande, imp, exp, bild_url)" & _
	" values ('"& SafeSQL(Request.Form("namn")) &"','" & SafeSQL(request.form("kon")) & "','" & SafeSQL(request.form("reg_nr")) & "', '" & SafeSQL(request.form("stamboks_nr")) & "'," & _
	" '" & SafeSQL(request.form("ras")) & "', '" & SafeSQL(request.form("fodd")) & "','" & SafeSQL(request.form("dod")) & "', '" & SafeSQL(request.form("farg")) & "'," & _
	" '" & SafeSQL(request.form("tecken")) & "', '" & SafeSQL(request.form("mankh")) & "' ,'" & SafeSQL(request.form("pappa")) & "' ,'" & SafeSQL(request.form("mamma")) & "'," & _
	" '" & SafeSQL(request.form("uppf")) & "' ,'" & SafeSQL(request.form("utlstbnr")) & "', '" & SafeSQL(request.form("inskickad_av")) & "', '" & SafeSQL(request.form("inskickad_av_mail")) & "'," & _
	" '" & SafeSQL(request.form("hemsida")) & "', '" & SafeSQL(request.form("ovrigt")) & "', '" & SafeSQL(request.form("diplom_ar")) & "', '" & SafeSQL(request.form("diplompoang")) & "'," & _
	" '" & SafeSQL(request.form("elit_ar")) & "' , '" & SafeSQL(request.form("prem")) & "' , '" & SafeSQL(request.form("prem_poang")) & "', '" & SafeSQL(request.form("utlatande")) & "'," & _
	" '" & SafeSQL(request.form("imp")) & "' , '" & SafeSQL(request.form("exp")) & "', " & bild_url & ")"

Tips: Kod på bredden är inte så lättläst.

(Det allra viktigaste är stamboks_nr). Hur ska jag få med SafeSQL då? Eller kan man inte ha det samtidigt?

Edit, provade att lägga in koden du visade, men det blir felmeddelande

Medlem sedan juni 2005264 inlägg
#12

Det var visst inte alls bara till att lägga in Option Value="NULL", det blir ändå 0 i databasen =S

Medlem sedan juni 20019 519 inlägg
#13

tilllåter du null färde på bild_url?

Medlem sedan apr. 20031 660 inlägg
#14

HEJ!

Det verkar som att du har ett default-värde som noll?

Prova att ändra det till inget, och sedan när du uppdaterar med inget, blir det inget, hoppas jag. Inget är inte alltid null har jag märkt, men prova.

Medlem sedan juni 2005264 inlägg
#15

voigtann1 skrev:

tilllåter du null färde på bild_url?

Nullvärde tillåts överallt utom på hast_id (automatiskt id-nummer), namn, pappa och mamma

Medlem sedan juni 2005264 inlägg
#16

J.N. skrev:

HEJ!

Det verkar som att du har ett default-värde som noll?

Prova att ändra det till inget, och sedan när du uppdaterar med inget, blir det inget, hoppas jag. Inget är inte alltid null har jag märkt, men prova.

Tittade i databasen, där står det att standard är NULL, sen stod det Null Default Null när jag lagt in en ny rad via formuläret. Tog bort standard = Null och då försvann default, men det står fortfarande 0 i rutan när jag la in ytterligare en rad

Medlem sedan mars 20041 505 inlägg
#17

Jag hade samma problem förut minns jag.
Lösningen blev en NULLIF-sats för varje värde i själva SQL-frågan.
Jag tror denna syntax borde fungera i både SqlServer och MySQL.

<%
input = SafeSQL(Request.Form("input")) 'Låt oss säga att input i detta fall blir tomt.
sql = "INSERT INTO tabell (input) VALUES( NULLIF('" & input & "','') )"
%>
Medlem sedan juni 2005264 inlägg
#18

Troxy skrev:

Jag hade samma problem förut minns jag.
Lösningen blev en NULLIF-sats för varje värde i själva SQL-frågan.
Jag tror denna syntax borde fungera i både SqlServer och MySQL.

<%
input = SafeSQL(Request.Form("input")) 'Låt oss säga att input i detta fall blir tomt.
sql = "INSERT INTO tabell (input) VALUES( NULLIF('" & input & "','') )"
%>

Låter ju bra iof, men ska jag byta ut tex namn mot input? Hur vet den då att det ska vara namn där?

Medlem sedan mars 20041 505 inlägg
#19

Hoppas du förstår min förklaring nu:
Funktionen NULLIF() tar två argument och jämför dom mot varandra.
Om argumentens värden är lika så skickas värdet NULL tillbaka.
Om däremot argumentens värden är olika så skickas värdet i argument 1 tillbaka.
Exempel:

NULLIFF('Hej','Hello')  <-- Argumenten är olika, så då skickas 'Hej' tillbaka.
NULLIFF('Hej','Hej')  <-- Argumenten är lika, så då skickas NULL-värde tillbaka

Om du då tar och använder formuläret som argument 1, och sedan ett tomt värde '' som argument 2, så kommer NULL att skickas tillbaka om formulärets värde är tomt.

Medlem sedan juni 2005264 inlägg
#20

Troxy skrev:

Hoppas du förstår min förklaring nu:
Funktionen NULLIF() tar två argument och jämför dom mot varandra.
Om argumentens värden är lika så skickas värdet NULL tillbaka.
Om däremot argumentens värden är olika så skickas värdet i argument 1 tillbaka.
Exempel:

NULLIFF('Hej','Hello')  <-- Argumenten är olika, så då skickas 'Hej' tillbaka.
NULLIFF('Hej','Hej')  <-- Argumenten är lika, så då skickas NULL-värde tillbaka

Om du då tar och använder formuläret som argument 1, och sedan ett tomt värde '' som argument 2, så kommer NULL att skickas tillbaka om formulärets värde är tomt.

Det funkar :e

Tack för hjälpen!

285 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
137 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
139 ms — ändringar (db)