|
| Flytte rundt i PGSQL db Fra : Henrik Stidsen |
Dato : 17-03-02 19:55 |
|
Jeg har en menu der er opbygget via en PGSQL database.
Hvert punkt hentes fra to tabeller i databasen, et med hoved-
overskriften og et med menupunktet.
Tabellerne er opbygget således:
overskrifter:
id tekst
1 bla
2 bla bla
3 bla igen
4 bla bla igen
5 osv
menupunkter:
id overskriftid tekst
1 1 bla
2 1 bla bla
3 2 om bla
4 3 guf
5 2 fugleburet
6 4 yaya
7 3 blob
8 4 you get the point...
Jeg er nu ved at lave en online-administration af dette system. Heri
skal der være muligheden for at slette menupunkter og indsætte nye.
Problemet er nu, hvordan klarer jeg at slette et punkt midt i rækken
uden at komme til at mangle et ID nummer ? (der må ikke ende med
1,2,3,5,6,8 - for så virker "indsæt ny" ikke)
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
| |
martin madsen (18-03-2002)
| Kommentar Fra : martin madsen |
Dato : 18-03-02 01:28 |
|
Henrik Stidsen skrev:
> Jeg har en menu der er opbygget via en PGSQL database.
> Hvert punkt hentes fra to tabeller i databasen, et med hoved-
> overskriften og et med menupunktet.
> Tabellerne er opbygget således:
>
> overskrifter:
> id tekst
> 1 bla
> 2 bla bla
> 3 bla igen
> 4 bla bla igen
> 5 osv
>
> menupunkter:
> id overskriftid tekst
> 1 1 bla
> 2 1 bla bla
> 3 2 om bla
> 4 3 guf
> 5 2 fugleburet
> 6 4 yaya
> 7 3 blob
> 8 4 you get the point...
>
> Jeg er nu ved at lave en online-administration af dette system. Heri
> skal der være muligheden for at slette menupunkter og indsætte nye.
> Problemet er nu, hvordan klarer jeg at slette et punkt midt i rækken
> uden at komme til at mangle et ID nummer ? (der må ikke ende med
> 1,2,3,5,6,8 - for så virker "indsæt ny" ikke)
Hvis du har talrækken 1,2,3,4,5,6,7,8 og så nummer 5 bliver slettet, skal du
bare gennemgå numrene 6-8 og trække værdien 1 fra dem. Altså:
SELECT MAX(id) AS sidste FROM table;
DELETE FROM table WHERE id=$id;
for($i=$id+1;$i<=$sidste;$i++){
UPDATE table SET id=$i-1 WHERE id=$i;
}
Mvh martin
| |
Svenne Krap (18-03-2002)
| Kommentar Fra : Svenne Krap |
Dato : 18-03-02 13:08 |
|
On Sun, 17 Mar 2002 18:55:28 GMT, Henrik Stidsen <s-p-a-m@spammer.dk>
wrote:
>Jeg er nu ved at lave en online-administration af dette system. Heri
>skal der være muligheden for at slette menupunkter og indsætte nye.
>Problemet er nu, hvordan klarer jeg at slette et punkt midt i rækken
>uden at komme til at mangle et ID nummer ? (der må ikke ende med
>1,2,3,5,6,8 - for så virker "indsæt ny" ikke)
delete from tabel where id=$id
update tabel set id=id-1 where id>$id
Svenne
--
Job-offerings with more than a googolplex* USD a year are instantly accepted.
* = http://www.fpx.de/fp/Fun/Googolplex/
| |
Henrik Stidsen (18-03-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 18-03-02 14:40 |
|
Svenne Krap <usenet@krap.dk> wrote in
news:l3mb9usdvi3nlu37quo5jeorn6a4b2n892@4ax.com
>>Jeg er nu ved at lave en online-administration af dette system.
>>Heri skal der være muligheden for at slette menupunkter og
>>indsætte nye. Problemet er nu, hvordan klarer jeg at slette et
>>punkt midt i rækken uden at komme til at mangle et ID nummer ?
>>(der må ikke ende med 1,2,3,5,6,8 - for så virker "indsæt ny"
>>ikke)
>
> delete from tabel where id=$id
> update tabel set id=id-1 where id>$id
thank you - den ser lidt lettere ud end det ellers logiske forslag
fra Martin ;)
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
| |
martin madsen (18-03-2002)
| Kommentar Fra : martin madsen |
Dato : 18-03-02 15:35 |
|
Henrik Stidsen skrev:
>
> thank you - den ser lidt lettere ud end det ellers logiske forslag
> fra Martin ;)
Ja, helt klart. Jeg havde helt glemt, man bare kunne gøre sådan. Men så
lærte jeg også noget i dag : D
Mvh martin
| |
Svenne Krap (18-03-2002)
| Kommentar Fra : Svenne Krap |
Dato : 18-03-02 16:15 |
|
On Mon, 18 Mar 2002 13:39:46 GMT, Henrik Stidsen <s-p-a-m@spammer.dk>
wrote:
>thank you - den ser lidt lettere ud end det ellers logiske forslag
>fra Martin ;)
Man skal huske, at SQL er lavet til at vise og behandle MÆNGDER !
Derfor kan man fx. også
delete from tabel
Hvilket vil slette alle rækker i tabellen :)
Svenne
--
Job-offerings with more than a googolplex* USD a year are instantly accepted.
* = http://www.fpx.de/fp/Fun/Googolplex/
| |
Henrik Stidsen (18-03-2002)
| Kommentar Fra : Henrik Stidsen |
Dato : 18-03-02 17:13 |
|
Svenne Krap <usenet@krap.dk> wrote in
news:a21c9u4cjdukcm08n213ppuhc55be01bel@4ax.com
>>thank you - den ser lidt lettere ud end det ellers logiske forslag
>>fra Martin ;)
>
> Man skal huske, at SQL er lavet til at vise og behandle MÆNGDER !
> Derfor kan man fx. også
>
> delete from tabel
>
> Hvilket vil slette alle rækker i tabellen :)
hehe, det ville så ikke være særlig smart i det her tilfælde ;)
--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
| |
|
|