Jag undrar hur det fungerar med formulär som postas till samma sida och läggs in i en databas. Det går ju bra om formulärfälten från början är tomma för då kan man ju bara lägga in en IF sats allra först...
Jag antar att du vill få reda på hur du uppdaterar befintlig information. När du hämtar upp värdena till fälten kan du göra en <input type="hidden" value="<%=ID%>" name="ID"> och sedan hämta upp den med ID = Request.Form("ID"). Sedan nåt sånt här:
if ID <> "" then
SQL = "UPDATE..."
else
SQL = "INSERT INTO
end if
Ändra i databasen istället och tillåt nollvärden så slipper du massa onödiga if-satser...sen för att obligatoriska fält i form så använd java-script...här är min kod:
Set RecSet = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM sseerrss"
RecSet.Open Visa, Connect, 3, 3
RecSet.AddNew
RecSet("Username") = Request.Form("username")
RecSet("Password") = Request.Form("password")
RecSet("E-post") = Request.Form("epost")
function submit_form(value) {
if (document.myForm.fenamn.value == "") {
alert('Du måste fylla i ditt för- och efternamn.');
document.myForm.fenamn.focus();
}
else if (document.myForm.email.value == "") {
alert('Du måste fylla i din e-postadress.');
document.myForm.email.focus();
}
else {
document.myForm.action.value = value;
document.myForm.submit();
}
}
Informationen hämtas sedan upp som vanligt:
if trim(Request.Form("action")) = "Posta" then
...
end if
Vad som händer är alltså att JavaScript-funktionen kontrollerar om de obligatoriska fälten är tomma. "If not" tilldelar den hidden-fältet värdet "Posta" och submittar informationen.
Jag anser den här metoden vara mer praktisk än ren ASP, eftersom man då måste skicka iväg information och omge koden med fler if-satser.
varför lägga till med recordset?
Finns vissa tillfällen då det är lyckat att lägga till med recordset och det är tex vid en medlemsansökan där användarnamn ej får ha dubletter.
I detta läga så är det ju onödigt att först hämta alla poster som finns i tabellen och sedan lägga till.
Bättre att göra på detta viset och lite snällre mot servern:
En sak till. Det är inte alltid som javascriptlösningen är den bästa lösningen för att validera formulärfält.
[r]
Tex om man har "dynamiska" formulrfält som ska visas beroende på användare, då kan jscript lösningen vara klart knölig att använda.
[/r]
Själv tycker jag det är irriterande att hela tiden få upp dessa alerts när man ska submitta. :o
cya,
PatrikB
------------------
*Det tar sig sa han som hade eld i håret*
Ptcha... Det är ju en smakfråga. Ibland kombinerar jag JavaScript-validering med ASP-validering. Det går ju t.ex. inte att kontrollera om ett användarnamn är upptaget. JavaScript-valideringen får ta hand om simplare kontroller av typen "är fältet tomt?", medan ASP får kolla om e-postadressen är giltig etc.
Jag har ännu inte förstått funktionen av recordsets men i detta fallet så var det en registrering det handlade om i min kod som jag klippte ut det ifrån...används recordset bara för att undvika dubbleter?
nej, man kan kolla efter dubbletter på annat sätt oxå.
om man tex insertar till db ändå så kommer det att genereras ett fel. om man då har On Error Resume Next "påslaget" så behöver man ej använda recordset för att lägga till.
Annars är det så här att ADODB.Recordset använder man BARA när man ska hämta poster från db och tex visa dem på en sida.
Om du ska lägga till nya poster, editera redan befintliga poster eller ta bort poster så ska man INTE använda ADODB.Recordset utan man använder istället .Execute metoden i ADODB.Connection ojbektet.
Som sagt ... sök på IDG här på forumet så ska du få se vad det sägs om deras "ASP-skola"
cya,
PatrikB
------------------
*Det tar sig sa han som hade eld i håret*
260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25