webForumDet fria alternativet

Sparar bara vissa fält?

ASP

10 svar · 264 visningar · startad av SoulGod

Medlem sedan aug. 20051 200 inlägg
Frågan#1

Hade nyss ett fungerande adminscript för att spara ner till en databas, nu helt plötsligt har den slutat spara vissa fält.
Vad är fel?
Infogar koden i ett nästkommande inlägg, då det är en hel del kod.

Fälten som sparas är: str5 , str7 & str8

Förstår itne vad som hänt, för ingenting har ändrats i koden, när det blev såhär.

Medlem sedan aug. 20051 200 inlägg
#2
<html>

<head>
<script type="text/javascript">
<!--
function Tabort(go){
				if (confirm("Vill du verkligen ta bort den?\n\nHelt säker?")){
								self.location=(go)
								}else{
				}
}

//-->
</script>
<link href="inc/style.css" type="text/css" rel="stylesheet">
</head>

<body>
<%If Request.Querystring("visa")= "" Then%>
<form method="post" action="admin.asp?visa=login" name="login" onSubmit="return tecken()">
<table border="0" width="500" id="table1" cellspacing="0" cellpadding="0">
	<tr>
		<td width="105"><b>Användarnamn:</b></td>
		<td><input type="text" name="Username" size="20"></td>
	</tr>
	<tr>
		<td width="105"><b>Lösenord:</b></td>
		<td><input type="password" name="Password" size="20"></td>
	</tr>
	<tr>
		<td width="105">&nbsp;</td>
		<td><input border="0" src="images/skicka.gif" name="I1" width="43" height="14" type="image"></td>
	</tr>
</table>
</form>
<%
' Kollar om inloggningen stämmer
ElseIf Request.Querystring("visa")= "login" Then

	If Request.Form("Username") = strUsername AND Request.Form("Password") = strPassword then
		Session("Admin") = "true"
		Response.Redirect "admin.asp?visa=nyhet"
	Else
		Session("Mess") = "Ditt användarnamn eller lösenord är fel!"
		Response.Redirect "admin.asp?visa="
	End If

' Loggar ut dig
ElseIf Request.Querystring("visa")= "logut" Then

	Session.Abandon
	Response.Redirect "news.asp"

ElseIf Request.Querystring("visa")= "nyhet" AND Session("Admin") = "true" Then%>
<table border="0" width="800" cellspacing="0" cellpadding="0">
	<tr>
		<td colspan="3" class="rubrik">Admin</td>
	</tr>
	<tr>
		<td colspan="3"><b><a href="admin.asp?visa=nyhetadd">Lägg till</a> | <a href="admin.asp?visa=logut">Logga Ut</a></b></td>
	</tr>
	<tr>
		<td colspan="3" class="dot"></td>
	</tr>
<%
Set objRS = objConn.Execute("SELECT * FROM domare ORDER BY ID DESC")
Do Until objRS.EOF

' Gör så att varannan rad får bakgrundsfärgen #F7F7F7 och varannan #EAEAEA
x = x + 1
strColor = "#F7F7F7" 
If x Mod 2 = 0 Then strColor = "#EAEAEA"
%>
	<tr bgcolor="<%=strColor%>" onMouseover="this.bgColor='#C0C0C0'" onMouseout="this.bgColor='<%=strColor%>'">
		<td width="100" height="18">
			<a href="admin.asp?visa=nyhetchange&id=<%=objRS("ID")%>">
			<%
			' Om rubriken är längre än 29 täcken så kommer det att skrivas ut 20 tecken och ... efter (rubrik...)
			If Len(objRS("namn")) > 29 Then Response.Write Left(objRS("namn"),20) & "..." Else Response.Write objRS("namn") End If
			%>
		  </a>
	  </td>
		<td width="100"><% Select case objRS("roll")
     case "dist"
           Response.write "Distriktsdomare"
     case "for"
           Response.write "Föreningsdomare"
     case else
           Response.write "-"
End Select %></td>
		<td width="100"><%=objRS("adress")%></td>
		<td width="100"><%=objRS("postadress")%></td>		
		<td width="100"><%=objRS("telnr")%></td>
		<td width="100"><%=objRS("mobnr")%></td>		
		<td width="100"><%=objRS("mail")%></td>
		<td width="100"><%=objRS("ovrigt")%></td>		
	</tr>
<%
objRS.MoveNext
Loop

' Stänger och förstör alla objekt
objRS.Close : Set objRS = nothing
objConn.Close : Set objConn = nothing
%>
</table>
<%ElseIf Request.QueryString("visa") = "nyhetadd" AND Session("Admin") = "true" Then%>
<form method="post" action="admin.asp?visa=nyhetspara" name="nyhetsadd" onSubmit="return tecken()">
<table width="465" cellpadding="0" cellspacing="0">
		<tr>
		<td colspan="5" class="rubrik">Lägg till Domare </td>
	</tr>
	<tr>
		<td colspan="5"><b><a href="admin.asp?visa=nyhet">Tillbaka</a> | <a href="admin.asp?visa=logut">Logga Ut</a></b></td>
	</tr>
	<tr>
		<td colspan="5" class="dot"></td>
	</tr>
	<tr>
	  <td><b>Namn:<br>
      </b>
        <input type="text" name="namn2" size="30"></td>
	  <td width="244" rowspan="4" valign="top"><h5><b>Roll:<br>
	    <input type="checkbox" name="roll" value="for">
	    </b>F&ouml;reningsdomare<br>
	    <input type="checkbox" name="roll" value="dist">
	    Distriktsdomare</h5></td>
    </tr>
	<tr>
		<td width="219"><h5><b>Adress:</b><br>
            <input type="text" name="adress2" size="30">
	  </h5>		  </td>
    </tr>
	<tr>
	  <td><b>Postadress:</b><br>
        <input type="text" name="postadress2" size="30"></td>
    </tr>
	
	<tr>
		<td width="219"><b>Telefon Nr:</b><br>
          <input type="text" name="telnr2" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2"><b>Mob Nr:</b><br>
        <input type="text" name="mobnr" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2"><b>E-mail:</b><br>
        <input type="text" name="email" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2"><b>&Ouml;vrigt:</b><br>
        <input type="text" name="ovrigt" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2">&nbsp;</td>
    </tr>
	<tr>
		<td colspan="2">
	<input border="0" src="images/skicka.gif" name="I2" width="43" height="14" type="image"></td>
	</tr>
</table>
</FORM>

<%
' Stänger och förstör alla objekt
Set objRS = nothing
objConn.Close : Set objConn = nothing

ElseIf Request.Querystring("visa") = "nyhetchange" AND Session("Admin") = "true" Then
Set objRS = objConn.Execute("SELECT * FROM domare WHERE id="& SafeSQL(CLng(Request.Querystring("id"))))
%>
<form method="post" action="admin.asp?visa=nyhetandrat&id=<%=Request.Querystring("id")%>" name="change" onSubmit="return tecken2()">
<table cellspacing="0" cellpadding="0" width="500">
	<tr>
		<td width="444" colspan="5" class="rubrik">Ändra</td>
	</tr>
	<tr>
		<td width="444" colspan="5"><b><a href="admin.asp?visa=nyhet">Tillbaka</a> | <a href="admin.asp?visa=logut">Logga Ut</a></b></td>
	</tr>
	<tr>
		<td width="444" colspan="5" class="dot"></td>
	</tr>
	<tr>
	  <td width="50%"><h5><b>Namn:<br>
          </b>
              <input name="namn" type="text" value="<%=objRS("namn")%>" size="30">
      </h5></td>
	  <td width="50%" rowspan="2"><h5><b>Roll:<br>
                <input name="roll" type="checkbox" value="for">
          </b>F&ouml;reningsdomare<br>
          <input type="checkbox" name="roll" value="dist">
	    Distriktsdomare</h5></td>
	</tr>
	<tr>
	  <td><b>Adress:</b><br>
          <input name="adress" type="text" value="<%=objRS("adress")%>" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2"><b>Postadress:</b><br>
          <input name="postadress" type="text" value="<%=objRS("postadress")%>" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2"><b>Telefon Nr:</b><br>
          <input name="telnr" type="text" value="<%=objRS("telnr")%>" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2"><b>Mob Nr:</b><br>
          <input name="mobnr" type="text" value="<%=objRS("mobnr")%>" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2"><b>E-mail:</b><br>
          <input name="email" type="text" value="<%=objRS("mail")%>" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2"><b>&Ouml;vrigt:</b><br>
          <input name="ovrigt" type="text" value="<%=objRS("ovrigt")%>" size="30"></td>
    </tr>
	<tr>
	  <td colspan="2">&nbsp;</td>
    </tr>
	
	<tr>
		<td colspan="2">
			<input border="0" src="images/andra.gif" name="I3" width="40" height="14" type="image">
		<a href="javascript:Tabort('admin.asp?visa=tabort&id=<%=objRS("id")%>')"><img border="0" src="images/tabort.gif" width="49" height="14"></a>	</td>
	</tr>
</table>
</form>
<%
' Stänger och förstör alla objekt
objRS.Close : Set objRS = nothing
objConn.Close : Set objConn = nothing

' Sparar nyheten
ElseIf Request.QueryString("visa") = "nyhetspara" AND Session("Admin") = "true" Then

	str1		= SafeSQL(Request.Form("namn"))
	str2		= SafeSQL(Request.Form("adress"))
	str3		= SafeSQL(Request.Form("postadress"))
	str4		= SafeSQL(Request.Form("telnr"))
	str5		= SafeSQL(Request.Form("mobnr"))
	str6		= SafeSQL(Request.Form("mail"))
	str7		= SafeSQL(Request.Form("ovrigt"))
	str8		= SafeSQL(Request.Form("roll"))

	
	objConn.Execute("INSERT INTO domare(namn,adress,postadress,telnr,mobnr,mail,ovrigt,roll) VALUES('" & str1 & "','" & str2 & "','" & str3 & "','" & str4 & "','" & str5 & "','" & str6 & "','" & str7 & "','" & str8 & "')")
	
	' Stänger och förstör alla objekt
	Set objRS = nothing : objConn.Close : Set objConn = nothing
	
	Response.Redirect sidnamn & "?visa=nyhet"
	
	
' Ändrar nyheten
ElseIf Request.QueryString("visa") = "nyhetandrat" AND Session("Admin") = "true" Then

	str1		= SafeSQL(Request.Form("namn"))
	str2		= SafeSQL(Request.Form("adress"))
	str3		= SafeSQL(Request.Form("postadress"))
	str4		= SafeSQL(Request.Form("telnr"))
	str5		= SafeSQL(Request.Form("mobnr"))
	str6		= SafeSQL(Request.Form("mail"))
	str7		= SafeSQL(Request.Form("ovrigt"))
	str8		= SafeSQL(Request.Form("roll"))

	objConn.execute("Update domare Set namn='" & str1 & "', adress='" & str2 & "', postadress='" & str3 & "', telnr='" & str4 & "', mobnr='" & str5 & "', email='" & str6 & "', ovrigt='" & str7 & "', roll='" & str8 & "' Where id = "& SafeSQL(CLng(Request.Querystring("id"))))

	' Stänger och förstör alla objekt
	Set objRS = nothing : objConn.Close : Set objConn = nothing

	Response.Redirect sidnamn & "admin.asp?visa=nyhet"

' Tar bort nyheten
ElseIf Request.QueryString("visa") = "tabort" AND Session("Admin") = "true" Then
	objConn.Execute("DELETE FROM domare WHERE id="& SafeSQL(CLng(Request.Querystring("id"))))
	Response.Redirect sidnamn & "?visa=nyhet"

	' Stänger och förstör alla objekt
	Set objRS = nothing : objConn.Close : Set objConn = nothing

End If
%>
</body>

</html>
Medlem sedan dec. 20003 563 inlägg
#3

Börja med att printa ut alla strängar som du använder i sql-satsen samt hela sql-satsen. Saknas något? Om något värde saknas kolla varför. Saknas value i formuläret eller är något namn fel?

Printa resultat av utskrift här. Ett exempel på utskrift är:

str1		= SafeSQL(Request.Form("namn"))
response.write(str1 & "<br/>")

sqlStr = "insert ... ('" & str1 & "' ..."
response.write(sqlStr)
Medlem sedan aug. 20051 200 inlägg
#4

Du menar alltså när den sparas?
Jag är ganska dålig på SQL :(

Medlem sedan apr. 20003 174 inlägg
#5

På rad 248, i koden som du visar här ovan, har du ett INSERT-statement,
skriv ut hela den sql-strängen för att se så alla värden följer med. :)

ex.

Koden innan:

...
247
248		objConn.Execute("INSERT INTO domare(namn,adress,postadress,telnr,mobnr,mail,ovrigt,roll) VALUES('" & str1 & "','" & str2 & "','" & str3 & "','" & str4 & "','" & str5 & "','" & str6 & "','" & str7 & "','" & str8 & "')")
249	
250		' Stänger och förstör alla objekt
251		Set objRS = nothing : objConn.Close : Set objConn = nothing
252	
...

Koden efter:

...
247
248		Response.Write "INSERT INTO domare(namn,adress,postadress,telnr,mobnr,mail,ovrigt,roll) VALUES('" & str1 & "','" & str2 & "','" & str3 & "','" & str4 & "','" & str5 & "','" & str6 & "','" & str7 & "','" & str8 & "')"
249		Response.End
250
251		objConn.Execute("INSERT INTO domare(namn,adress,postadress,telnr,mobnr,mail,ovrigt,roll) VALUES('" & str1 & "','" & str2 & "','" & str3 & "','" & str4 & "','" & str5 & "','" & str6 & "','" & str7 & "','" & str8 & "')")
252	
253		' Stänger och förstör alla objekt
254		Set objRS = nothing : objConn.Close : Set objConn = nothing
255	
...
Medlem sedan aug. 20051 200 inlägg
#6

Det jag får upp när jag lägger till din kod, får jag svaret:

INSERT INTO domare(namn,adress,postadress,telnr,mobnr,mail,ovrigt,roll) VALUES('','','','','','','','')
Medlem sedan dec. 20003 563 inlägg
#7

Det betyder att inget av dina värden kommer fram. Alla fält är tomma.

Kontrollera att dina fältnamn är rätt. Kontrollera att din SafeSQL-funktion verkligen returnerar någonting.

Medlem sedan aug. 20051 200 inlägg
#8

Alltså, den sparas juh vissa fält? Och jag har felsökt koden flera dagar nu, jag hittar verkligen ingenting fel.

Ser du något fel?
Annars måste jag sätta mig och göra om allting :(

Medlem sedan dec. 20003 563 inlägg
#9

Enligt din utskrift sparar den ingenting.

Jag utgår från att du skrev något i alla textfält i den utskriften du printade ovan?

e1: Attacha filen annars.
e2: Ett stavfel som ändrar tre värden? Säker på att det inte finns några fler?
e3: F.ö. hamnar värderna fel. mobnr antar jag ska hamna i fältet mobnr? Så är inte fallet med din utskrift.

Medlem sedan aug. 20051 200 inlägg
#10

Hittade ett stavfel , vilket ger mig svaret

INSERT INTO domare(namn,adress,postadress,telnr,mobnr,mail,ovrigt,roll) VALUES('','dist','','','','mobnr','','ovrigt')

om jag lägger in koden som körs, har du lust att hjälpa mig felsöka vidare? Hittar inget fel på dom andra koderna :(

Medlem sedan aug. 20051 200 inlägg
#11

Tackar så mycket för hjälpen. Hittade felen nu. Var stavfel på ett av dom, och sedan hjälpte det när jag skrev om SafeSQL-raderna bara. Tack så jättemycekt grabbar! ni är underbara ;)

273 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)