EclipseMedlem sedan juli 20003 825 inlägg [b]access[/b] - behörighet
x_ID - räknare
x_userID - int
x_navigationID - int
[b]users[/b] - användare
x_ID - räknare
[b]navigation[/b] - navigering
x_ID - räknare
x_name - 20, namn
x_url - 50, sökväg
x_sortfield - int
Hur ska jag förklara... Jag vill lista alla länkar som en viss användare har behörighet till och de ska ORDER BY [x_sortfield]; typ...
------------------
Never underestimate your opponents.
LarsGMedlem sedan dec. 200012 464 inlägg
select *
from users u,
access a,
navigation n
where u.x_id = 4711
and u.x_id = a.x_userid
and a.x_navigation_id = n.x_id
order by x_sortfield
Varför har du med kolumnen x_id i tabellen access?
------------------
essentitia preter non sans multiplicandum
EclipseMedlem sedan juli 20003 825 inlägg Hmm... intressant kod. Thanx!
---
För att jag är paranoid.
"Ta bort access för användare" --> DELETE * FROM [access] WHERE [x_ID] = request("x_ID")
Två användare kan ha samma namn men aldrig samma ID...
------------------
Never underestimate your opponents.
EclipseMedlem sedan juli 20003 825 inlägg OK, jag förstår din undran. Har jag en community med 200.000 användare med gratis webmail osv är det inte jättehäftigt om flera användare kan ha samma namn men till det lilla intranätet med fem användare är det skit samma om två heter samma sak.
Min kod fungerar på båda.
---
Hur skriver jag ut länkarna på skärmen då??
x_name.navigation
x_url.navigation
Jag tror det är dessa jag behöver skriva ut. Klassikern mySQL("x_name") fungerar ju inte i detta sammanhanget!
------------------
Never underestimate your opponents.
EclipseMedlem sedan juli 20003 825 inlägg Hallå eller!?
SQL = "SELECT * FROM [users] u, [access] a, [navigation] n WHERE u.x_id = "_
& session("x_userID") & " AND u.x_id = a.x_userID "_
& "AND a.x_navigationID = n.x_id ORDER BY x_sortfield;"
set mySQL = Conn.Execute(SQL)
on error resume next
response.write sql
DO UNTIL mySQL.EOF
-- response.write mySQL("n.x_name") & "<BR>"
LOOP
Nu har jag testat och tänkt en himmlans massa. Vad har jag inte tänkt på!?
------------------
Never underestimate your opponents.
@ndersMedlem sedan juni 200032 969 inlägg lessen att jag inte sett detta, jakob... ;)
select tabellen1.gukx as fält1, tabell2.gukx as fält2
du ger alltså fälten alias med as för att sedan referera till de nya namnen.
response.write rs("fält2")
mvh,
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>
ToonsterMedlem sedan feb. 20001 590 inlägg Borde gå att lösa utan AS, med rätt relationer, utan flera räknare (inga främmande nycklar förstår jag, eftersom det är MySQL :-) )
Lite prestanda tänk från min sida, man slipper spara undan i u, a, n
Typ (ett exempel, funkar nog inte för dig, eftersom du inte har några relationer?):
SELECT x_namn, x_url, x_sortfield, x_id, x_userID FROM acess, users, navigation WHERE (x_id="&request("id")&") ORDER BY x_sortfield
Så får man ut alla x_url osv automatiskt
Med rätt typ av relation, så kan du ta bort alla värden för en viss "user" i alla relaterade tabeller, genom att bara ta bort "user'n"
/T
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."
[Redigerat av Toonster den 07 mar 2001]
EclipseMedlem sedan juli 20003 825 inlägg Nej det är inte MySQL utan ASP och Access... Jag vet att namnvalet är sämsta möjliga och att förväxlingen mellan namnet på mjukvaran MySQL och variabeln mySQL i vissa sammanhang kan vara ett faktum.
I kod brukar jag dock nöja mig med variabler och inte namn på mjukvara. I detta fallet är det även frestande att förväxla mjukvaran Access med tabellnamet access. Snäll, gör inte det! :-)
---
Jag ska försöka mig på era exempel. Det finns en viss möjlighet att även jag fattar! Man tackar.
------------------
Never underestimate your opponents.
EclipseMedlem sedan juli 20003 825 inlägg Toonster:
>Så får man ut alla x_url osv automatiskt
Jo jag vet, det har jag gjort förut men nu var det så att dom skulle vara listade i en speciell ordning, x_sortfield.
I admin gränssnittet kan man nämligen på annan plats välja vilken ordning de olika rubrikerna ska vara i. Det är ju en rätt risig lösning om man sen inte listar dom i den ordningen...
------------------
Never underestimate your opponents.
ToonsterMedlem sedan feb. 20001 590 inlägg Aha, du vill alltså med hjälp av x_sortfield spara vilken ording det ska listas i namn, sökväg,A-Ö Ö-A ?
/T
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."
EclipseMedlem sedan juli 20003 825 inlägg Toonster... vem är det mest fel på? Mig som ställer så risiga frågor eller dig som svarar på fel saker..???
http://www.olailindgren.se/jakob/sortfield.gif
Kolla in denna bilden. Jag har skrivit ut sortfield för dig. Hajar du? Det är menyn till vänster vi snackar om. Läs mitt första inlägg.
Rent kodmässigt är detta mitt senaste tänk:
SQL = "SELECT navigation.x_name AS myName, navigation.x_url AS myURL"_
& " FROM [users] u, [access] a, [navigation] n WHERE u.x_id = "_
& session("x_userID") & " AND u.x_id = a.x_userID "_
& "AND a.x_navigationID = n.x_id ORDER BY n.x_sortfield;"
set mySQL = Conn.Execute(SQL)
on error resume next
DO UNTIL mySQL.EOF
-- response.write mySQL("myName") & "<BR>"
LOOP
------------------
Never underestimate your opponents.
ToonsterMedlem sedan feb. 20001 590 inlägg Ok, en siffra anger alltså ordningen på länkarna
Men har du relationer så borde det funka med det jag skrev i mitt tidigare inlägg. Det enda du behöver ha är x_ID, de värden du vill skriva ut från tabellen navigation, och dessa skrivs ut ordnat efter x_sortfield.
Frågan är om tabellen users måste vara med, eftersom du ändå kan få x_ID
SQL = "SELECT
x_ID,x_name,x_url,x_sortfield FROM
access, navigation WHERE x_id =
& session("x_userID") & " ORDER BY x_sortfield;"
sedan loopa och skriva ut x_name och x_url
Om tabellerna är relaterade så får man ut ett namn och flera länkar i frågan.
Vet inte om jag fortfarande fattar?...
/T
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."
[Redigerat av Toonster den 08 mar 2001]
EclipseMedlem sedan juli 20003 825 inlägg Way to go! :-) Usch, efter att ha blivit felciterad i en annan tråd och missförstådd hela morgonen känner jag att tangentbordet inte riktigt är på min sida...
Du har helt rätt i att [users] inte behöver vara med. Jag minns inte riktigt varför jag tog med den, förmodligen för att påvisa helheten, för att visa "alla berörda komponenter" typ...
Tack för tipset!
------------------
Never underestimate your opponents.
ToonsterMedlem sedan feb. 20001 590 inlägg Ja man kan trassla in sig bland tabeller, poster o fält.
Ett tips, som det skrivits om här tidigare, är att man kör frågorna i Access, och när man ser att det funkar så väljer man visa som SQL, och sen bara klipp o klistra (med vissa modifikationer)
Det allra bästa är om man gör formulär i Access, och tillsammans med frågorna, testar hela applikationen, tabeller och relationer i databasen. Sen när det är klart kan man ta bort formulärena. Frågorna kan man faktiskt ha kvar, och köra direkt från ASP koden om man vill. Det ska ge viss prestandavinst. Uppdateringsfrågor är suveräna att köra i databasen via script.
/T
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."
EclipseMedlem sedan juli 20003 825 inlägg Tack för ditt engagemang. Vi ska ha grillfest i kväll så jag har inte tid att hacka just nu.
återkommer...
------------------
Never underestimate your opponents.
EclipseMedlem sedan juli 20003 825 inlägg Nu har jag tagit mig tid för din kåd (det blev lite tid över...) och det där kan ju aldrig fungera var min första tanke och senare även ett faktum.
x_ID och x_name finns ju i båda tabellerna!
Jag testade en variant av navigation.x_url men, men...
Det är kanske läge att tänka om, jag har ju suttit med detta rätt länge nu.
------------------
Never underestimate your opponents.
EclipseMedlem sedan juli 20003 825 inlägg Ha! Det gick ju på fem röda! (Varför fungerade inte detta första gången...???)
SQL = "SELECT * FROM [navigation] WHERE [x_view] = TRUE ORDER BY [x_sortfield];"
set mySQL = Conn.Execute(SQL)
on error resume next
'response.write sql
DO UNTIL mySQL.EOF
-- TMP = "SELECT * FROM access WHERE [x_navigationID] = " & mySQL("x_ID") & " AND [x_userID] = " & session("x_userID") & ";"
-- set myTMP = Conn.Execute(TMP)
-- IF NOT myTMP.EOF THEN
-- -- response.write mySQL("x_name") & "<BR>"
-- END IF
-- mySQL.MoveNext
LOOP
Inte världens snyggaste - men det fungerar och jag kan dra iväg ett mail till kunden med subject "färdig" och man kan delfakturera. Cashflow is all that matters! ;-)
------------------
Never underestimate your opponents.
ToonsterMedlem sedan feb. 20001 590 inlägg Jag har kollat dina tabeller, och det är där problemet ligger.
Med hjälp av räknare kan man särskilja poster, men man måste kunna ha en relation mellan dom också. Flera urler till en användare, alltså räknare hos användaren, relation till accesstabellen (1:N)
(tog mig friheten att ändra accesstabellen, och komplettera :-) lite att göra på jobbet....)
tbl_access
a_ID - räknare *
a_username - text
a_password - text
a_lastlogin - datum
tbl_navigation
n_ID - heltal *
n_name - 20, namn
n_url - 50, sökväg
n_sortfield - int
tbl_user
u_ID - heltal *
u_namn - text
u_adress - text
u_bildurl - text
u_ovrigt - text
u_osv
a_ID till n_ID 1:N
a_ID till u_ID 1:1
/T
[Redigerat av Toonster den 08 mar 2001]
EclipseMedlem sedan juli 20003 825 inlägg >Jag har kollat dina tabeller, och det är där problemet ligger.
My tables are never failing but my brain is...
---
Snacka om major backdraft. Här har jag suttit i flera dagar och engagerat mig i ett problem som inte finns!
Koden ovan var den jag skrev första gången mern i stället för SELECT * skrev jag SELECT [x_userID] men det torde ha underordnad betydelse(?)
Däremot var jag väl ambitiös av användandet av variabeln tmp... Shit happens!!
---
No harm, men vid en första anblick tycker jag ditt förslag verkar jättedåligt...
Nåja, tack för ditt engagemang i alla fall! :-)
------------------
Never underestimate your opponents.
ToonsterMedlem sedan feb. 20001 590 inlägg
No harm, men vid en första anblick tycker jag ditt förslag verkar jättedåligt...
fasen, 4 år bortkastat på universitetet... :-)
Jo, det var en databasmodell snabbt ihopkastat, men vad är dåligt? den är klockren gällande användare, inloggning, data kopplad till användaren?
Möjligtvis några fält som kan läggas till i respektive tabell...
Hoppas du använder relationer, eller skapar du flera tabeller utan att koppla dom? I så fall kan man ju lika gärna använda en textfil...
/T
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."