webForumDet fria alternativet

ta emot data från mobil via asp

ASP

17 svar · 1 703 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

Jag använder mosms (yo.se) och jag vill på mitt community att en medlem ska kunna skicka vip som present till en annan användare, kruxet är att det måste ske till ett användarnamn och inte det egna numret.

Variabeln sms innehåller värde men jag får ändå detta:
Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters.

/sms-present.asp, line 25

med koden

objConn.Execute("Update tblUsers SET vipTillDatum=dateadd('d',30,date()), vip=true WHERE username= "&sms)

Rad25 är ovanstående kod

Nån som vet hur det kan lösas?

Medlem sedan dec. 20025 483 inlägg
#2

Om username är en strängtyp skall dess värde omges av apostrofer:

objConn.Execute("Update tblUsers SET vipTillDatum=dateadd('d',30,date()), vip=true WHERE username= '"&sms&"'")
Medlem sedan feb. 20032 027 inlägg
#3

Det fungerar när jag testar direkt på sidan, men inte när jag skickar sms med nallen trots att enda variabeln som används är sms

sms-present.asp?sms=användarens alias
webbis04 present användarens alias

Båda ska funka...den ena via sidan direkt och andra via sms...samma script, bara översta funkar

Ingen som vet svaret?????????????

Medlem sedan feb. 20032 027 inlägg
#4

Går det att fixa????

Medlem sedan juni 200032 967 inlägg
#5

Då verkar det vara så att sidan inte anropas på samma sätt. Logga till fil exakt vilken url som använts när man kommer till sidan, så kan du se om det är någon skillnad.

Medlem sedan feb. 20032 027 inlägg
#6

Hur loggar man till fil, mitt hotell har tagit bort stödet för textfiler

så här ser koden ut:

<!-- #include virtual="/include/dbconn.asp" -->

<%

' Detta skript anropas av yo när någon anropar din SMS-tjänst.
' tex [url]http://www.doman.se/min-sida.asp?sms=test+123&nr=0701234567[/url]
' Allting som ekas ut kommer att hamna i ett svar-sms. Så det är viktigt att skriptet 
' inte genererar några (interna) felmeddelanden.

nr = request("nr")
sms = request("sms")
' Antal kronor slutanvändaren blev debiterad (för exempelvis egen statistik etc).
tariff = request("tariff")

' Nu kan du göra vad du vill med det inkomna SMS:et. 
' Variabeln nr innehåller numret från den som har skickats SMS:et 
' och variabeln sms innehåller själva SMS-texten

' Skicka tillbaka svar.
' Om inget svar skickas inom 30 sekunder skickar Yo.se automatiskt ut ett:
' "Tack för din beställning"-SMS.

SET objConn = Connect()

objConn.Execute("Update tblUsers SET vipTillDatum=dateadd('d',30,date()), vip=true WHERE username = '"&sms&"'")
response.write "Din present är levererad."
%>
Medlem sedan juni 200032 967 inlägg
#7

Då får du väl logga till databasen istället då!
Det spelar ju ingen roll hur du loggar, bara du kan få ut informationen sedan...

Medlem sedan feb. 20032 027 inlägg
#8

@nders skrev:

Då får du väl logga till databasen istället då!
Det spelar ju ingen roll hur du loggar, bara du kan få ut informationen sedan...

Mitt svar på mosms är:
2005-09-09 17:36:30 - INCOMING_SMS - NR: '46708163326', DATA: 'Webbis04 present zally'
2005-09-09 17:36:31 - MATCH_WITH_SERVICE - RESULT: 'OK: Service found.'
2005-09-09 17:36:37 - FETCH_REPONSE_MSG - RESULT: "OK: External URL http://www.webbisen.com/sms-present.asp?nr=0708163326&sms=Webbis04+present+zally&tariff=10 fetched."
2005-09-09 17:37:07 - SEND_MSG_TO_QUE – NR: "46708163326", DATA: "Tack för din beställning!"

och i databasen fick jag ut
Webbis04 present zally (via mobilen)
Zally (test direkt från sidan)

Så presenten ska gå till användaren Zally och kostnaden går på mitt nummer.....varför funkar det direkt via sidan och inte via mobilen

Medlem sedan juni 2001272 inlägg
#9

på External url står det ju med en massa annan skit istället för bara ett användarnamn i strängen sms ju:
sms-present.asp?nr=0708163326&sms=Webbis04+present+zally&tariff=10

Gör en replace som rensar bort "webbis04 present " ur strängen, så bara zally blir kvar så borde det väl fungera?

Medlem sedan feb. 20032 027 inlägg
#10

Den externa url-en kan jag inte påverka eftersom jag inte kan se den efter att jag har skickatsms-et, när jag väl ser den så är ju allt genomfört

Medlem sedan juni 2001272 inlägg
#11

Det jag menar är att när DU behandlar den strängen som kommer kan du ju plocka bort det första om det "stör" resten av ditt script

<!-- #include virtual="/include/dbconn.asp" -->

<%

' Detta skript anropas av yo när någon anropar din SMS-tjänst.
' tex http://www.doman.se/min-sida.asp?sm...3&nr=0701234567
' Allting som ekas ut kommer att hamna i ett svar-sms. Så det är viktigt att skriptet 
' inte genererar några (interna) felmeddelanden.

nr = request("nr")
sms = request("sms")
' Antal kronor slutanvändaren blev debiterad (för exempelvis egen statistik etc).
tariff = request("tariff")

' Nu kan du göra vad du vill med det inkomna SMS:et. 
' Variabeln nr innehåller numret från den som har skickats SMS:et 
' och variabeln sms innehåller själva SMS-texten

' Skicka tillbaka svar.
' Om inget svar skickas inom 30 sekunder skickar Yo.se automatiskt ut ett:
' "Tack för din beställning"-SMS.

SET objConn = Connect()
If instr(sms,"Webbis04 present ") <> "" Then
sms = Replace(sms,"Webbis04 present ","")
End If

objConn.Execute("Update tblUsers SET vipTillDatum=dateadd('d',30,date()), vip=true WHERE username = '"&sms&"'")
response.write "Din present är levererad."
%>

Prova

Medlem sedan feb. 20032 027 inlägg
#12

TACK TACK TACK , du är suverän

Medlem sedan feb. 20032 027 inlägg
#13

Nu ska jag bara ta reda på hur jag får reda på användarens id nu när man bara använder namn. Ett annat problem är hur man bygger på användarens ev period de har med 30 dagar och inte som nu ersätter med 30 dagar framåt, testade med objConn.Execute("Update tblUsers SET vipTillDatum=vipTillDatum+dateadd('d',30,date()), vip=true WHERE username = '"&sms&"'") men det sket sig

Medlem sedan juni 2001272 inlägg
#14

måste du göra allt i sql-strängen? Personligen tycker jag det blir mycket lättare om man delar upp det lite, så det enda man gör i sql-strängen är att ge fälten deras nya värden.

Men det du vill göra är att plusa på 30 nya dagar till personens vip-tid?

<!-- #include virtual="/include/dbconn.asp" -->

<%

' Detta skript anropas av yo när någon anropar din SMS-tjänst.
' tex http://www.doman.se/min-sida.asp?sm...3&nr=0701234567
' Allting som ekas ut kommer att hamna i ett svar-sms. Så det är viktigt att skriptet 
' inte genererar några (interna) felmeddelanden.

nr = request("nr")
sms = request("sms")
' Antal kronor slutanvändaren blev debiterad (för exempelvis egen statistik etc).
tariff = request("tariff")

' Nu kan du göra vad du vill med det inkomna SMS:et. 
' Variabeln nr innehåller numret från den som har skickats SMS:et 
' och variabeln sms innehåller själva SMS-texten

' Skicka tillbaka svar.
' Om inget svar skickas inom 30 sekunder skickar Yo.se automatiskt ut ett:
' "Tack för din beställning"-SMS.

SET objConn = Connect()

If instr(sms,"Webbis04 present ") <> "" Then
sms = Replace(sms,"Webbis04 present ","")
End If

Set rs = Connect.ExeCute("SELECT vipTillDatum FROM tblUsers WHERE username = '"&sms&"'")
vipTillDatum = DateAdd("d",30,rs("vipTillDatum"))
rs.close
set rs = nothing

objConn.Execute("Update tblUsers SET vipTillDatum='"&vipTillDatum&"', vip=true WHERE username = '"&sms&"'")
response.write "Din present är levererad."
%>

Prova

EDIT: Kom på en grej...Den plusar ju bara på 30 dagar till aktuellt datum, och det kan ju bli så att den plusar på 30 dagar på en dag som var för 60 dagar sen, om du förstår hur jag menar...

Medlem sedan feb. 20032 027 inlägg
#15

Hulth skrev:

måste du göra allt i sql-strängen? Personligen tycker jag det blir mycket lättare om man delar upp det lite, så det enda man gör i sql-strängen är att ge fälten deras nya värden.

Men det du vill göra är att plusa på 30 nya dagar till personens vip-tid?

<!-- #include virtual="/include/dbconn.asp" -->

<%

' Detta skript anropas av yo när någon anropar din SMS-tjänst.
' tex http://www.doman.se/min-sida.asp?sm...3&nr=0701234567
' Allting som ekas ut kommer att hamna i ett svar-sms. Så det är viktigt att skriptet 
' inte genererar några (interna) felmeddelanden.

nr = request("nr")
sms = request("sms")
' Antal kronor slutanvändaren blev debiterad (för exempelvis egen statistik etc).
tariff = request("tariff")



' Nu kan du göra vad du vill med det inkomna SMS:et. 
' Variabeln nr innehåller numret från den som har skickats SMS:et 
' och variabeln sms innehåller själva SMS-texten

' Skicka tillbaka svar.
' Om inget svar skickas inom 30 sekunder skickar Yo.se automatiskt ut ett:
' "Tack för din beställning"-SMS.


SET objConn = Connect()

If instr(sms,"Webbis04 present ") <> "" Then
sms = Replace(sms,"Webbis04 present ","")
End If

Set rs = Connect.ExeCute("SELECT vipTillDatum FROM tblUsers WHERE username = '"&sms&"'")
vipTillDatum = DateAdd("d",30,rs("vipTillDatum"))
rs.close
set rs = nothing

objConn.Execute("Update tblUsers SET vipTillDatum='"&vipTillDatum&"', vip=true WHERE username = '"&sms&"'")
response.write "Din present är levererad."
%>

Prova

EDIT: Kom på en grej...Den plusar ju bara på 30 dagar till aktuellt datum, och det kan ju bli så att den plusar på 30 dagar på en dag som var för 60 dagar sen, om du förstår hur jag menar...

Denna kod funkar (men ger inte resultatet jag vill ha)

objConn.Execute("update tblUsers set vipTillDatum = vipTillDatum+30 WHERE username = '"&sms&"'")

'set ID=objConn.Execute("SELECT tblUsers.userID, tblUsers.username FROM tblUsers where username="&sms")
'varGBDate = Date()
'varGBTime = Time()
'vartoUser=ID("userID")
'gbMessage="Du har fått 1 månads  VIP i present av en användare"
'addPost = "INSERT INTO tblUsers_guestbook"
'	addPost = addPost & "([fromUser],[toUser],[gbMessage],[gbDate],[gbTime],[gbRead]) "
'	addPost = addPost & "VALUES(1,'"& vartoUser &"','"& varMessage &"',#"& varGBDate &"#,'"& varGBTime &"',true)"
'objConn.Execute(addPost)%>

Varför funkar inte din då????
Jag vill kunna leverera presenten och uppdatera till rätt datum och även skicka ut ett gb-inlägg till mottagaren

Medlem sedan juni 2001272 inlägg
#16

Så enkelt är det tyvärr itne att bara plusa på 30 dagar...

Men det jag menade är att om jag ger vip till någon, och hans vipTillDatum är ett datum som är 2 år och 2 månader gammalt kommer det ju bara att förlängas med 30 dagar så det blir 2 år och 1 månad, och så har jag pungat ut med pengarna och han får ändå inte sin vip.

Förstår du?

Därför skulle man nog göra en koll på vipTillDatum först, tex med datediff så om datumet har passerat, lägg in ett nytt datum (utgångspunkt idag + 30 dagar), om datumet inte har passerat lägg bara till 30 dagar på nuvarande datum.

<%
If instr(DateDiff,"d",vipTillDatum,Date),"-") = "-" Then
' datumet är negativt och har passerats
vipTillDatum = DateAdd("d",30,Date)
Else
' datumet har inte passerats
vipTillDatum = DateAdd("d",30,rs("vipTillDatum"))
End If
%>
Medlem sedan apr. 20031 660 inlägg
#17

HEJ!

Det är väl lite att gå över ån efter vatten att använda DateDiff?
If instr(DateDiff,"d",vipTillDatum,Date),"-") = "-" Then

Det räcker väl, som du skriver i ditt inlägg, kontrollera om aktuellt vipdatum är äldre än dagens datum.
if vipTillDatum<dagensdatum then...

Som jag förstår det räknar du ut hur många dagar +/- du är från idag.
Tänkte du fel, eller löser ett annat problem på samma gång?

Medlem sedan juni 2001272 inlägg
#18

Det är bara jag som har fått för mig att man inte kan använda < & > när det gäller datum, tid eller så beror det på att jag har stått i solen typ hela dagen och övat på skyldra gevär, i armen gevär om och om igen ;)

264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)