12. januar 2007 - 09:12Der er
11 kommentarer og 1 løsning
Bytte om på 2 værdier i databasen??
Hej, Jeg har eks disse 2 rækker i min database :
id | tekst | url | sortering ---------------------------- 1 | bla | eb.dk | 1 2 | asdf | bt.dk | 2
Jeg har lavet en knap, med hvilken jeg skal jeg kunne ombytte de 2 værdier i "sortering". Hvis jeg trykker på den, så skal de 2 værdier i "sortering" byttes om. Hvordan gøres dette i SQL??
Så laver du først en forespørgsel, der tildeler den ens sortering til swop og derefter den anden. Til sidst sætter du sortering = swop på dem begge og de har dermed byttet plads.
Indholdet i databasen fungere som en menupunkter på en side indenfor bestemte sektioner på en side, den egentlige database ser mere sådan her ud nu.
id | fil | tekst | url | sortering ----------------------------- 1 | artikler.php | Teamer | tema.php | 1 2 | artikler.php | Fokus | artikler.php?action=sfa | 2 3 | artikler.php | Prædiken intro | artikler.php?action=sfa | 3 4 | artikler.php | Studie | artikler.php?action=sfa | 4 5 | artikler.php | Et ord med på vejen | artikler.php?action=sfa | 5 6 | artikler.php | Artikel links | artikler.php?action=sfa | 6 7 | artikler.php | Søg / Guide | artikler.php?action=sfa | 7 8 | search.php | Test | search.php?action=sfa | 1 10 | artikler.php | Test punkt | artikler.php?action=sfa | 7
alle "filer" der hedder artikler.php hører til sektionen "Artikler" på siden, og underpunkter der hører til den side skal så have "teksten" udprintet som punkterne, hvor "sortering" så er i hvilken rækkefølge de skal stå på siden.
I administrationsmodulet skal admin så have mulighed for at kunne flytte et menupunkt på eller ned. Dvs. at "Fokus" evt. skulle kunne flyttes ned under "Prædiken intro", og derfor skal id i "sortering" byttes rundt, når admin trykker på det link jeg har lavet til det, og det ser eks. sådan her ud: swapmenu.php?action=menu_ned&id=$id. I action=menu_ned, skal der så ligge et stykke kode der bytter den nuværende værdi i "sortering" ud med det id der er lige nedenunder...
Gør det i PHP koden. Nu er det længe siden jeg har brugt PHP, så du får den i ASP:
function swap(fID1, fID2) set rs1 = conn.execute("select sortering from dinTabel where id="& fID1) set rs2 = conn.execute("select sortering from dinTabel where id="& fID2) tmp1 = rs1("sortering") tmp2 = rs2("sortering") conn.execute("update dinTabel set sortering="& tmp2 &" where id="& fID1) conn.execute("update dinTabel set sortering="& tmp1 &" where id="& fID2) end function
Det kan gøres med færre select/update, men dette er den letforstålige udgave.
Det du skal have er, at du skal vide hvilke to der skal bytte plads. Derefter bytter du de tos sorterings-værdier. Dette kan du gøre ved at tilføje et felt der hedder swop. og så bruge det. Jeg skal se, om jeg kan finde et eksempel.
coderdk: Det virker ikke helt så nemt som sådan, da jeg også hele tiden skal vide hvad mit forrige og næste id er, og da id kan svinge, så er det vist lidt sværere...
Hvis jeg sletter et menupunkt med id=4, så er id-rækkefølgen nu en anden: 1,2,3,5,6,7
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.