Just nu i M3-nätverket
Jump to content

hjälp med SQL-satsen, tack


plelkes1

Recommended Posts

Jag fortsätter med webstudions skola...

<!-- #include virtual="/databas/adovbs.inc" --> 
<b>Redigera adressboken! </b>
<hr noshade size="1"> 
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\databas\adressbok.mdb" 
Set RecSet = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM adressbok ORDER BY Fornamn"
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %> 
Följande adresser finns att redigera i adresseboken. <p> 
<ul> 
<% Do Until RecSet.EOF %>
<li><% =RecSet("Fornamn") %>& nbsp; 
<b><% =RecSet("Efternamn") %></b><br><% =RecSet("Adress") %><br>
<a href="redigera1.asp?adressID=<% =RecSet("ID") %>">
Redigera denna adress</a>
<hr noshade size="1" width="250" align="left"> 
<% RecSet.MoveNext
Loop
RecSet.Close %> 
redigera1.asp 
Visa = "SELECT * FROM adressbok WHERE ID = " & Trim(Request.QueryString("adressID")) & " "
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %> 
<form method="POST" action="redigera2.asp"> 
<input type="hidden" name="AD" value="<% =Request.QueryString("adressID") %>">
<input type="text" size="30" name="fornamn" value="<% =RecSet("Fornamn") %>"><br>
<input type="text" size="30" name="efternamn" value="<% =RecSet("Efternamn") %>"><p>
<input type="text" size="30" name="adress" value="<% =RecSet("Adress") %>"><p> 
<input type="submit" value="Uppdatera"> 
</form> 

 

Jag har lite problem med delar följande SQL:

Visa = "SELECT * FROM adressbok WHERE ID = " & Trim(Request.QueryString("adressID")) & " "

jag fattar så långt att från databasen adressbokskall väljas de ID som efter frågas MEN

i " & Trim(Request.QueryString("adressID")) & "varför klippa/klistra med & - varför räcker inte med:WHERE ID = "(Request.QueryString("adressID")) "

Tacksam på förhand för all Er hjälp och svar..

 

/Peter

 

==================================================

 

Vad du än med din dator gör - så glöm ALDRIG Murphy´s och Finagle´s lagar

 

 

Link to comment
Share on other sites

Jag har lite problem med delar följande SQL:

Visa = "SELECT * FROM adressbok WHERE ID = " & Trim(Request.QueryString("adressID")) & " "

 

jag fattar så långt att från databasen adressbokskall väljas de ID som efter frågas MEN

i " & Trim(Request.QueryString("adressID")) & "varför klippa/klistra med & - varför räcker inte med:WHERE ID = "(Request.QueryString("adressID")) "

Tacksam på förhand för all Er hjälp och svar..

 

SQL frågan är ju en sträng och du vill ha med AdressID från querystring, & sätter ihop flera strängar till en.

 

Däremot har den sista tomma & " " inget där att göra, den gör ingen nytta alls.

 

 

Link to comment
Share on other sites

SQL frågan är ju en sträng och du vill ha med AdressID från querystring, & sätter ihop flera strängar till en.
så långt hänger jag med soms agt,

men:

1) vad betyder egentligen "TRIM"?

2)varför räcker det inte med:

WHERE ID = "(Request.QueryString("adressID")) " 

Tacksam på förhand för all Er hjälp och svar..

 

/Peter

 

==================================================

 

Vad du än med din dator gör - så glöm ALDRIG Murphy´s och Finagle´s lagar

 

 

Link to comment
Share on other sites

1.) Trim tar bort eventuella blanksteg.

 

 

2.) Hmm, isåfall hänger du nog inte med för nu ser det ut som du stoppat in Request.QueryString inuti din SQL fråga, du ska väl ändå ha värdet från den och inte strängen "Request.QueryString" inuti SQL frågan.

 

 

Link to comment
Share on other sites

Hmm, isåfall hänger du nog inte med för nu ser det ut som du stoppat in Request.QueryString inuti din SQL fråga, du ska väl ändå ha värdet från den och inte strängen "Request.QueryString" inuti SQL frågan.
Nej tydligen så hänger jag inte riktigt med, för jag har svårt att se skillnaden*suck*

Visa = "SELECT * FROM adressbok WHERE ID = " & Trim(Request.QueryString("adressID")) & " "

Kan någon förklara den exakta lydelsen av SQL satsen, så att jag förstår och klarar av att konsturera för framtiden?

Jag hänger med så långt att:välj alla fält från adressboken, där fältet id är lika med...

Tacksam på förhand för all Er hjälp och svar..

 

/Peter

 

==================================================

 

Vad du än med din dator gör - så glöm ALDRIG Murphy´s och Finagle´s lagar

 

 

Link to comment
Share on other sites

Request.Querystring("adressID") = Ett formulärfält som heter adressID, som skickas via ett textfält eller liknande med ditt formulär som använder metoden "GET" i stället för "POST"

 

Eller så har Du en länk som heter adressbok.asp?adressID=OchEttVärde

Och detta värde sorteras din SQL efter

DVS i SQL satsen SELECT * FROM adressbok WHERE ID = " & Request.Querystring("adressid") //Adressid blir ett värde te.x 3 och den post som du får från databasen.

 

"Hämta all från Adressbok där min ID i databasen har värdet 3"

 

[inlägget ändrat 2003-02-24 11:13:06 av Dieselmannen]

Link to comment
Share on other sites

Hej igen,

tänkte förtydliga mig lite:

1) det handlar om en redigeringssida

2) För att kunna välja vilken post som skall redigeras har varje post fått en länk som innehåller variabeln adressID

3)adressID=<% =RecSet("ID") %>

4) och länken: <a href="redigera1.asp?adressID=<% =RecSet("ID") %>">Redigera </a>

 

 

 

Skrivet på rent svenska vill jag att min SQL skall utföra följande:

hämta alla från databasen adressbok, där min ID i databasen har värdet som markerats med länken

 

Jag vill lära mig hur jag formulerar/översätter detta till SQL? Hoppas ngn pedagogisk person ser detta inlägg och kan förklara.

Dessutom vore jag tacksam för förslag på lämplig länk och/eller bok.

 

Link to comment
Share on other sites

Hej,

nu måste jag fråga;

Du vill att sql-satsen skall utföra följande:

 

"hämta alla från databasen adressbok, där min ID i databasen har värdet som markerats med länken"

 

Menar du att det inte går med:

 

// Visa = "SELECT * FROM adressbok WHERE ID = " & Trim(Request.QueryString("adressID")) & " " //

 

Eller är frågan varför du måste använda &-tecknet + Trim?

 

Link to comment
Share on other sites

Alltså min fråga består av flera delfrågor:

1) hur skall jag tänka när jag vill översätt svenskan till SQL? - detta för att själv kunna konstruera

 

2)i koden:

DVS i SQL satsen SELECT * FROM adressbok WHERE ID = " & Request.Querystring("adressid") 

varför avslutas inte med ett "?

 

3) varför måste jag använda &-tecknet

 

[inlägget ändrat 2003-02-24 15:37:09 av plelkes]

Link to comment
Share on other sites

1. Du måste kunna SQL om du inte kan det, så læs på http://www.sqlsidan.nu

 

Øversættingingen ær inte mycket svårare æn øversættnign från engelska.

 

ta den SQL sats

SELECT firstName FROM personer WHERE lastName = 'Andersson'

 

på svenska (danska)

HÆMTA ALLA førnamn FRÅN personer DÆR efternamn ÆR LIKA MED Anderssion

 

2. Satsen behøver inget " islutet eftersom strængen redan ær avslutat. Detta ær grundlæggande variabel hantering och ett MÅSTE att kunna om du skall programmera.

 

3. &-tecknet slår ihop flera variabler (strængar) till en stræng. Detta ær ett kommand før ASP så den vet att texten SELECT * FROM adressbok WHERE IDoch variablen Request.Querystring("adressid") skall slåssamman och lagras i variablen visa

 

Webstudio har en nybørjar kurs i ASP dær man sækert førklarar varaibel hanteringen.

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

Link to comment
Share on other sites

Tack Magnus för ditt svar, men:

http://www.sqlsidan.nu sidan fungerar ej

 

”Øversættingingen ær inte mycket svårare æn øversættnign från engelska.

ta den SQL sats

SELECT firstName FROM personer WHERE lastName = 'Andersson' “

Ja så långt, eller rättare sagt så enkelt hänger jag med ju. Men i mitt fall är ju det lite komplicerat, eller?

 

”&-tecknet slår ihop flera variabler (strængar) till en stræng. Detta ær ett kommand før ASP så den vet att texten SELECT * FROM adressbok WHERE IDoch variablen Request.Querystring("adressid") skall slåssamman och lagras i variablen visa”

 

 

Men varför räcker inte med

ID = Request.Querystring("adressid")

 

På rent svenska är det ju det ovanstående jag vill säga, dvs att fältet ID = den adressid som erhålles via Queristringen dvs då jag klickar på länken!

 

 

Link to comment
Share on other sites

ID = Request.Querystring("adressid")

 

På rent svenska är det ju det ovanstående jag vill säga, dvs att fältet ID = den adressid som erhålles via Queristringen

 

Som sagt innan så är det vanlig variabel hantering.

Kör följande kodsatser så kommer du se varför du måste ha " och & med i din kod

 

sSQL = "SELECT * FROM [tabell] WHERE ID = Request.Querystring("adressid")"
s2SQL = "SELECT * FROM [tabell] WHERE ID = " & Request.Querystring("adressid")

response.write "UTAN & " & sSQL
response.write "<br>MED & " & s2SQL

 

Skall försöka förklara hur man använder variabler.

 

1. tänk dig att alla din variabler är som små kartonger med namn på.

 

Alltså om du skriver

sSQL = "SELECT * FROM [tabell]"

Så skapar du en variabel (en liten låda) som du döper till sSQL.

 

När du sedan vill skriva ut din variabel så kan man inte skriva så här.

response.write "sSQL"

och det beror på att ASP tolkar allt inom "" som en text, alltså den tror att det är text som du har skrivit och kommer bara att skriva ut det på sidan EXAKT så som det står mellan ""

 

om du däremot vill komma åt innehållet i din variabel: sSQL så skriver du så här:

response.write sSQL

När ASP ser din variabel så letar han fram din låda från ett stort lager och plockar ut vad som finns i den och skriver ut det på skärmen.

 

Vad händer om jag har flera variabler som jag vill att den skall skriva ut efter varandra.

string1 = "Magnus"
string2 = "är"
string3 = "bäst"

response.write string1

kommer bara skriva ut Magnus

 

response.write string1
response.write string2
response.write string3

kommer att skriva ut Magnusärbäst

 

det var ju inte rikgtig vad vi ville ha, vi vill ha mellanrum mellan orden.

response.write string1
response.write " "
response.write string2
response.write " "
response.write string3

så nu får vi Magnus är bäst

 

fast det är rätt jobbigt att skriva 5 response.write för att skriva ut 1 rad, så därför slår vi ihop våra variabler till 1 och skriver sedan ut den.

 

stringNy = string1 & " " & string2 & " " & string3
response.write stringNy

Då får vi ut Magnus är bäst precis som vi vill ha. vad händer om vi inte har & och " på rätt ställen

 

stringNy = string1 " " string2 " " string3
response.write stringNy

detta kommer att generera ett FEL eftersom ASP inte vet vad den skall göra med koden efter string1.

 

stringNy = "string1" & " " & "string2" & " " "string3"
response.write stringNy

ny kommer vi få strängen string1 string2 string3

Varför får vi det och inte magnus är bäst?

 

jo för att när du sätter "" runt variabel namnet så tolkar inte ASP det som en variabel, alltså springer ingen kille till lagret och hämtar din låda utan man tolkar det som en text och skriver ut det rakt ut på skärmen.

 

om vi tittar på din SQL sats:

Visa = "SELECT * FROM adressbok WHERE ID = " & Request.QueryString("adressID") & " "

 

så har du 2 variabler och 1 textsträng.

 

Variabler:

- Visa

- Request.QueryString("adressID")

 

Textsträng:

- SELECT * FROM adressbok WHERE ID =

 

1. Vad du gör är att du skapar variablen visa.

2. tar texten SELECT * FROM adressbok WHERE ID = och läger ner den i variablens lilla låda.

3. Det sista du gör är att du hämtar fram variablen Request.QueryString("adressID") från minnet och tar dess innehåll (kanske 4) och lägger ner det i variablen visa så om du skriver ut visa på skärmen så får du utskriften:

 

SELECT * FROM adressbok WHERE ID = 4

 

Detta är en giltig SQL fråga och betyder:

HÄMTA alla poster FRÅN adressbok DÄR id ÄR LIKA MED 4.

 

om du har skrivit:

WHERE ID = "(Request.QueryString("adressID")) "

Så hade du fått ett felmeddelande eftersom ASP inte hade vetat vad man skall göra med koden efter ="

 

och om du tar bort det " och skriver

WHERE ID = (Request.QueryString("adressID")) "

så får du utskriften:

SELECT * FROM adressbok WHERE ID = (Request.QueryString("adressID")

 

och det får du för att du INTE hämtar innehållet i variablen (Request.QueryString("adressID") utan endast skriver ut texten.

 

den sista & " " behövs inte eftersom vad den gör är att den endast lägger till ett mellanslag sist i din sträng. Och det påverkar inte innehållet i din variabel mer än att den blir 1 tecken längre och att det finns ett mellanslag sist i strängen.

 

Nu kan jag inte förklara det mer.

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

[inlägget ändrat 2003-02-24 19:20:40 av Magnus Gladh]

Link to comment
Share on other sites

Tack Magnus för ditt utförliga svar!

Nu har jag nå`t att bita i... Återkommer när jag har tagit till mig och förstått det du skriver*ler*

 

 

En liten fråga: för att kunna testa med Response.Write - hur mycket "kod" behöver jag till sidan, och skall sidan sparas som *.asp?

 

Jag försökte som nedan - och sparade sidan som *.asp

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
sSQL = "SELECT * FROM [tabell] WHERE ID = Request.Querystring("adressid")"
s2SQL = "SELECT * FROM [tabell] WHERE ID = " & Request.Querystring("adressid")

response.write "UTAN & " & sSQL
response.write "<br>MED & " & s2SQL

<body bgcolor="#FFFFFF" text="#000000">

</body>
</html>

 

Fast jag fick aldrig till det hela

 

[inlägget ändrat 2003-02-24 20:10:11 av plelkes]

Link to comment
Share on other sites

Jag rekomender starkt att du läser igenom kursen på http://www.idg.se/webstudio/pub/object.asp?id=10

även artiklarna på följande sida: http://www.pellesoft.nu/login/articles/default.asp?group=1

 

Du har missat några riktigt grundläggande funktioner med ASP.

All ASP kod måste inslutas i <% %> och skall ha .asp som extension på filen. Det betyder att för att kunna köra kod exemplet så skriver du så här

 

<%
sSQL = "SELECT * FROM [tabell] WHERE ID = Request.Querystring("adressid")"
s2SQL = "SELECT * FROM [tabell] WHERE ID = " & Request.Querystring("adressid")

response.write "UTAN & " & sSQL
response.write "<br>MED & " & s2SQL
%>

sparar ner i en fil i din wwwroot och döper den till test.asp

 

öppnar din webläsare och skriver http://localhost/test.asp

 

 

 

 

 

Link to comment
Share on other sites

Tack Magnus, men faktiskt så visste jag om att

All ASP kod måste inslutas i <% %> och skall ha .asp som extension på filen

 

Är bara så koncentrerad på SQL och variabler så att jag inte tänker på ngt annat

 

Link to comment
Share on other sites

Hej Magnus, och tack en gång till. NU har jag funderat och smält saker lite (kanske? )

Visa = "SELECT * FROM adressbok WHERE ID = " & Request.QueryString("adressID") & " "

1. Vad du gör är att du skapar variablen visa.

2. tar texten SELECT * FROM adressbok WHERE ID = och läger ner den i variablens lilla låda.

3. Det sista du gör är att du hämtar fram variablen Request.QueryString("adressID") från minnet och tar dess innehåll (kanske 4) och lägger ner det i variablen visa..

Kan man tänka sig så att:

den första & hämtar variabeln från minnet, medan den sista & lägger ner den samma i lådan?

 

Du som är pedagogisk och bra kan du försöka vara lika pedagogisk på följande kodsnutt:

Data Source ="& server.mappath("/") & "/db/databas.mdb"

Data Source ="& Server.MapPath("/db/databas.mdb")

Tacksam på förhand för all Er hjälp och svar..

 

/Peter

 

==================================================

 

Vad du än med din dator gör - så glöm ALDRIG Murphy´s och Finagle´s lagar

 

 

[inlägget ändrat 2003-02-27 12:57:13 av plelkes]

Link to comment
Share on other sites

ARRRRRGGHHHHHH...

 

Skrev ett långt inlægg hær, som hade obalanserade taggar och vips så førsvann all text..

 

ERIK FIXA.....

 

/Magnus Gladh

 

Link to comment
Share on other sites

vill läsa inlägget

Tacksam på förhand för all Er hjälp och svar..

 

/Peter

 

==================================================

 

Vad du än med din dator gör - så glöm ALDRIG Murphy´s och Finagle´s lagar

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...