PHP, MySQL

Tags:    php

Hvordan kan jeg finde værdien på id'en før og efter en aktuel id?

Jeg har et arkiv hvor brugeren kan tildele et emne en højere eller lavere placering i listen, altså skal den skifte id med emnet før eller efter, alt efter hvad brugeren ønsker. Push pull???




4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hvordan kan jeg finde værdien på id'en før og efter en aktuel id?

Jeg har et arkiv hvor brugeren kan tildele et emne en højere eller lavere placering i listen, altså skal den skifte id med emnet før eller efter, alt efter hvad brugeren ønsker. Push pull???


Jeg er ikke helt sikker på hvad du mener, men jeg mener at forstå, at dine brugere skal kunne arrangere en liste efter deres egen prioitet.

hvis det er korrekt opfattet, behøver du ikke bruge deres id hvis systemet er lavet smart.

hvis din tabel (subjects) ser således ud:

emne,bruger,placering,id

hvor emner er emnet er emnet, bruger er ejer og placering er dens placering på listen, kan det gøres således, idet vi antager at emnet med id = 3 med placering = $placering rykkes:

Ryk ned:

mysql_query("UPDATE subjects SET placering = placering - 1 WHERE placering = $placering + 1");
mysql_query("UPDATE subjects SET placering = $placering + 1 WHERE id = 3");


Ryk op:

mysql_query("UPDATE subjects SET placering = placering + 1 WHERE placering = $placering - 1");
mysql_query("UPDATE subjects SET placering = $placering - 1 WHERE id = 3");

Har ikke testet det, men det burde virke.

husk: Du skal bruge placering og id på det indlæg som flyttes.

P.S. Denne model kan give problemer ved brug af unikke nøgle-par i f.eks. PostgreSQL



Indlæg senest redigeret d. 14.08.2006 21:44 af Bruger #4683
du sparer en masse emner hvis du har 3 tabeller:

id,emne

brugerid,bruger

brugerid,id,placering


også gør som foregående poster siger, dette gør det også sandsynligvis lettere at oprette nye brugere og nye emner.




Hvordan kan jeg finde værdien på id'en før og efter en aktuel id?

Jeg har et arkiv hvor brugeren kan tildele et emne en højere eller lavere placering i listen, altså skal den skifte id med emnet før eller efter, alt efter hvad brugeren ønsker. Push pull???


Jeg er ikke helt sikker på hvad du mener, men jeg mener at forstå, at dine brugere skal kunne arrangere en liste efter deres egen prioitet.

hvis det er korrekt opfattet, behøver du ikke bruge deres id hvis systemet er lavet smart.

hvis din tabel (subjects) ser således ud:

emne,bruger,placering,id

hvor emner er emnet er emnet, bruger er ejer og placering er dens placering på listen, kan det gøres således, idet vi antager at emnet med id = 3 med placering = $placering rykkes:

Ryk ned:

mysql_query("UPDATE subjects SET placering = placering - 1 WHERE placering = $placering + 1");
mysql_query("UPDATE subjects SET placering = $placering + 1 WHERE id = 3");


Ryk op:

mysql_query("UPDATE subjects SET placering = placering + 1 WHERE placering = $placering - 1");
mysql_query("UPDATE subjects SET placering = $placering - 1 WHERE id = 3");

Har ikke testet det, men det burde virke.

husk: Du skal bruge placering og id på det indlæg som flyttes.

P.S. Denne model kan give problemer ved brug af unikke nøgle-par i f.eks. PostgreSQL


Denne model virker vel kun hvis id er kronologisk 1,2,3,4,5,6 og ikke hvis den hedder 2,5,7,8,10,22?





Denne model virker vel kun hvis id er kronologisk 1,2,3,4,5,6 og ikke hvis den hedder 2,5,7,8,10,22?


Nej, den skulle gerne virke uanset hvad deres id er... Du bruger jo kun id fra den du flytter.

Det er derimod vigtigt at din "placering" er i kronologisk rækkefølge - men det kan du jo bare vælge at den er.

Vil gerne give Nørden ret i, at tabellen kan laves smartere. Mit eksempel var udelukkende valgt med henblik på, at vise pricippet i at flytte op og ned, og ikke for at vise hvordan den endelige tabel-struktur skulle være.



t