/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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

Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408852
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste