webForumDet fria alternativet

Byta ordning på rubriker

ASP

10 svar · 237 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

Jag har funderat på detta länge men har inte kommit på någon bra lösning. Nu måste jag få det att fungera.

Säg att jag har en tabell med mina rubriker i. I normala fall väljer man ORDER BY [x_ID] för att lista dom efter räknaren. Men om jag vill byta ordning på dom då!?

@nders, svarar du på denna måste du utveckla dig mer. Vad jag inte fattar är hur jag gör om jag plockar bort en rubrik.

rubrik 1 - id 1 - orderID - 1
rubrik 2 - id 2 - orderID - 2
rubrik 3 - id 3 - orderID - 3
rubrik 4 - id 4 - orderID - 4

Om jag tar bort trean måste ju ID 4 ha orderID 3. Are you with!?

rubrik 4 - id 4 - orderID - 3

------------------
Never underestimate your opponents.

Medlem sedan juni 200032 967 inlägg
#2

Vad jag inte fattar är hur jag gör om jag plockar bort en rubrik.

när du vill ta bort posten ur databasen antar jag att du på sida 1 har en lista och en liten länk typ bla.asp?radera=4.

jag hade (nog) gjort så här. utöver id för posten hade jag också skickat med den postens orderid, som du kallade, så länken er ut typ såhär: bla.asp?radera=4&orderid=2.

i bla.asp ställer du din delete-fråga, samt en liten update för att ändra orderid på resten. exempel:

id = request.querystring("radera")
orderid = request.querystring("orderid")

strSQL1 = "delete from [tbl] where [x_id] = " & id
strSQL2 = "update [tbl] set [orderid]=[orderid]-1 where [orderid] > " & orderid

en liten execute på de båda sql-frågorna skulle väl göra susen :q

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan juli 20003 825 inlägg
#3

Äntligen lite klarhet i det hela! Jag visste inte att man kunde skriva som du gör i strSQL2.

i'll be back...

---

För övrigt vill jag tillägga att jag gillar inte att skicka med fler värden än nödvändigt. Utifrån ID får man ju fram alla andra värden.

Jag tycker det ser osnyggt ut att ha en lång harang av massa värden, men det är klart, det är onekligen lite enklare.

Jag tror at det är så att våra kunder inte bara betalar för enkla lösningar utan även snygga. (Kunderna kan också läsa...)

Hur gör ni andra?

------------------
Never underestimate your opponents.

Medlem sedan juni 200032 967 inlägg
#4

För övrigt vill jag tillägga att jag gillar inte att skicka med fler värden än nödvändigt. Utifrån ID får man ju fram alla andra värden.

okej, jag är lite osäker på om en sån här subquery funkar i access, gör den inte det så har du ju alternativet att göra en select, en delete, och en update. jag håller hellre nere på antalet sql-frågor än antalet skickade värden.

strSQL2 = "update [tbl] set [orderid]=[orderid]-1 where [orderid] > (select [orderid] from [tbl] where [x_id] = " & id & ")"

som sagt, vet inte om denna typ av query funkar i access, men det får du prova. ;)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

[Redigerat av @nders den 07 feb 2001]

Medlem sedan juli 20003 825 inlägg
#5

Thanx for the input!

Jag måste få tillvägagångssättet att fungera i Access för att sedan kunna använda det i MySQL! :-)

För övrigt tycker jag det är helt okej att använda övertydlig kod på en sida utan trafik.

Även om det går att göra kortare och "snyggare" är min uppfattning att om man skriver lite längre och där med mer förklarande kod behöver an inte dokumentera sitt arbete, koden blir självdokumenterande både för mig och andra.

Det är bara sidor med hög trafik på som det finns någon poäng i att optimera kod.

"älle-va-då-då-typ..."

------------------
Never underestimate your opponents.

Medlem sedan dec. 200012 464 inlägg
#6

Jag måste få tillvägagångssättet att fungera i Access för att sedan kunna använda det i MySQL! :-)

Subselect är en sak som inte finns i MySQL

------------------
essentitia preter non sans multiplicandum

Medlem sedan juli 20003 825 inlägg
#7

Subselect är en sak som inte finns i MySQL

tack för tipset! Nu är inte jag så där jätte storm förtjust i just den typen av lösningar så för min egen del så är det helt okej.

@nders, hur gör du med första och sista posten då? Den första ska ju inte gå att flytta upp och den sista ska inte gå att flytta ner. Upp är väl okej för då är talet > 1 ... gör du en SELECT COUNT(*) på den sista, får ett värde, och har det värdet som parameter...??

------------------
Never underestimate your opponents.

Medlem sedan dec. 19998 577 inlägg
#8

Är det okej om Vide svarar? ;)

Jet SQL har ju två funktioner som heter Last och First, sedan vilka databaser dom funkar med vet jag inte... men testa :)

------------------
Nu har du sjungit på sista refrängen
Jourhavande Vide

Medlem sedan juli 20003 825 inlägg
#9

Vi de, du brukar inte svara på mina inlägg, men visst, det är helt okej! ;-)

Vaddå "Jet SQL"?? Det är intressant fråga du ställer för jag har erkligen ingen aning... Om jag skriver "mySQL.MoveNext" är det då access, sql, asp eller nå't annat.. Förmodligen inte access, men jag vet inte om det är asp eller sql!

Har du sett en databaskoppling i php? Det hade inte jag för två veckor sedan:

$myDB=mysql_connect("localhost","root");
mysql_select_db("mysql",$myDB);

$result=mysql_query("SELECT * FROM users",$myDB);

while($myrow = mysql_fetch_row($result)){
	printf("Namn: %s<BR>", $myrow["1"]);
}

mysql_connect är allt som behövs i php i stället för de där raderna med ODBC och server.mappath som man använder i asp.

När folk säger att det är så lätt att koppla databaser till php då är det ovanstående de menar. (MySQL i detta fallet.)
http://www.php.net/manual/en/function.msql.php

I manualen kan man se vas som finns att välja mellan, och en variant av FIRST och LAST verkar inte finnas.

---
Se ovanstående som en kort introduktion till php, inte byte av tråd...

------------------
Never underestimate your opponents.

Medlem sedan dec. 19996 721 inlägg
#10

Vaddå "Jet SQL"??

Databasmotorn som ligger bakom Access.

Det är intressant fråga du ställer för jag har erkligen ingen aning... Om jag skriver "mySQL.MoveNext" är det då access, sql, asp eller nå't annat.. Förmodligen inte access, men jag vet inte om det är asp eller sql!

Det är ADO, som man använder det i VBScript/ASP. ADO är, enkelt uttryckt, en samling funktioner för databasanvändning.

[Redigerat av emission den 08 feb 2001]

Medlem sedan juli 20003 825 inlägg
#11
IF request("up") <> "" THEN
	TMP1 = "SELECT * FROM [navigation] WHERE [x_id] = " & request("up") & ";"
	set myTMP1 = Conn.Execute(TMP1)
	POST1 = myTMP1("x_sortfield")
	TMP2 = "SELECT [x_ID] FROM [navigation] WHERE [x_sortfield] = " & POST1 - 1 & ";"
	set myTMP2 = Conn.Execute(TMP2)
	POST2 = myTMP2("x_ID")
	SQL2 = "UPDATE [navigation] SET [x_sortfield] = " & POST1 & " WHERE [x_ID] = " & POST2 & ";"
	SQL1 = "UPDATE [navigation] SET [x_sortfield] = " & POST1 - 1 & " WHERE [x_ID] = " & request("up") & ";"
	Conn.Execute(SQL2)
	Conn.Execute(SQL1)
ELSEIF request("down") <> "" THEN
	TMP1 = "SELECT * FROM [navigation] WHERE [x_id] = " & request("down") & ";"
	set myTMP1 = Conn.Execute(TMP1)
	POST1 = myTMP1("x_sortfield")
	TMP2 = "SELECT [x_ID] FROM [navigation] WHERE [x_sortfield] = " & POST1 + 1 & ";"
	set myTMP2 = Conn.Execute(TMP2)
	POST2 = myTMP2("x_ID")
	SQL2 = "UPDATE [navigation] SET [x_sortfield] = " & POST1 & " WHERE [x_ID] = " & POST2 & ";"
	SQL1 = "UPDATE [navigation] SET [x_sortfield] = " & POST1 + 1 & " WHERE [x_ID] = " & request("down") & ";"
	Conn.Execute(SQL2)
	Conn.Execute(SQL1)
END IF

Phew!! ÄNTLIGEN fungerar detta iallafall. DELETE funktionen ska väl endå inte vara lika jobbig... Länka så här:

index.asp?up=2
index.asp?down=2

Där tvåan representerar ID nummret. Min läsning kanske inte är den läckraset och met optimerade man kan tänka sig. Men jag värdesätter om man kan köra copy/paste i fortsättningen (och det kan man nu) samt om funktionen fungerar i asp och med php och med access och mysql och i framtiden även sql server.

Jag tror inte det krävs så stora ingrepp för att få koden att fungera med php... kommer tid kommer råd!

------------------
Never underestimate your opponents.

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