Toon posts:

[PHP/MYSQL] elk block ophogen!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi.,


Ik heb deze tabel:
code:
1
2
3
4
5
6
7
8
tabel: blocks

id | naam | volg

1 | Menu | 3
2 | Nieuws | 2
3 | Weetjes | 4
4 | Forum | 1

Nu is dit mijn query:

SELECT * FROM blocks ORDER BY volg ASC


Werkt perfect, maar ik wil nu maken dat je in de admin dit krijgt:

Forum (omlaag)
Nieuws (omlaag / omhoog)
Menu (omlaag / omhoog)
Weetjes (omlaag / omhoog)

Dus als je op 'omhoog' klikt moet ie alles ophogen, en dus 'volg' ophogen..
'omlaag' is nu dus ook duidenlijk.

Weet iemand hoe ik dit moet aanpakken ?

Alvast bedankt.

  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Bedoel je als je bij Nieuws op omhoog clicked, dat je dan voor Nieuws volg op 3 zet en bij Menu volg op 2?

Dat is namelijk op te lossen met twee update queries en misschien nog een select om te weten welke je moet updaten.

Team ColdFusion


Verwijderd

Topicstarter
jah dat bedoel ik, ik weet alleen niet de beste manier om het te doen.. ik dacht zelf eerst alles selecteren en dan in array zetten en dan ewer terug doen, weet iemand een andere (goeie) manier ??

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Het gaat bij zulke verplaatsingen altijd om een swap; twee waarden worden omgewisseld. Dat krijg je niet met 2 updates voor elkaar, want anders zou na de eerste update alles dezelfde waarde hebben. Dus moet je eerst de eerste waarde omzetten naar een tijdelijke waarde, dan de tweede waarde naar de eerste en dan de tijdelijke waarde naar de tweede.

dus als je 2 en 3 wilt omwisselen:
2 -> x
3 -> 2
x -> 3

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Je kunt natuurlijk gewoon de volgnummers omwisselen.
Stel Menu wordt verlaagd, dan moet je die in essentie omwisselen met Weetjes. Dus Menu krijgt nummer 4 en Weetjes nummer 3. Met twee simpele update-queries is dit gebeurd. Dit is wat Arnim al bedoelde.

Verwijderd

Topicstarter
aha., maar hoe doe je dit nu in PHP dan ?? best wel vaag iets!! :D

Verwijderd

Topicstarter
Nieuws
Links
Weetjes
Forum

Akls je omlaag doed:

Nieuws
Links
Forum
Weetjes

Nog keer

Weetjes
Nieuws
Links
Forum


Nog keer

Nieuws
Weetjes
Links
Forum

  • Elroy
  • Registratie: April 2000
  • Laatst online: 05-09 12:37

Elroy

Zelda!!!

PHP:
1
<?mysql_query("UPDATE blocks SET volg = (volg + 1) where naam=?");mysql_query("UPDATE blocks SET volg = (volg - 1) where naam=?");?>

Zoiets :?

Specs Computer


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Nu gaat _alles_ omlaag. Niet alleen Weetjes.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Verwijderd

Topicstarter
Hmmzz ik dacht ff fout,

Het moet dus zo worden:


Nieuws
Links
Weetjes
Forum

Akls je omlaag doed:

Nieuws
Links
Forum
Weetjes

Nog keer

Weetjes
Nieuws
Links
Forum


Nog keer

Nieuws
Weetjes
Links
Forum

Verwijderd

Topicstarter
Op dinsdag 09 april 2002 17:50 schreef elroy het volgende:
PHP:
1
<?mysql_query("UPDATE blocks SET volg = (volg + 1) where naam=?");mysql_query("UPDATE blocks SET volg = (volg - 1) where naam=?");?>

Zoiets :?
HEHe, heb het al door, ik zat gewoon heel dom te doen :D
Ik dacht te moeilijk, ik dacht steeds die hele rij omlaag, maar ik wilde eigenlijk alleen 1 woordje

Dit topic mag wel dicht dus :D

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Het is dus alleen een probleem als Weetjes al onderaan staat? Dan zou ik er voor zorgen dat je bij de onderste niet meer op 'naar beneden' kan klikken. Dan maar wat vaker drukken als je hem helemaal boven wilt hebben. De bovenste mocht immers ook al niet omhoog!

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ah, zo! Dat is echt verrekte lastig. Als ik jouw was, zou ik die mogelijk niet bieden om Weetjes die laatste keer naar beneden te halen. Je kon immers de bovenste ook niet omhooghalen. Dit maakt het erg ingewikkeld, dus tenzij het niet anders kan zou ik het laten zitten.

Als je het toch wilt, kun je beter een andere DB-opzet maken, waarbij het attribuut volg niet slaat op het volgnummer, maar op de id van de volgende in de rij.
Dus dat zou dan worden (waarbij blank je start- en eindpunt is, dus zodra er verwezen wordt naar blank ben je klaar):
code:
1
2
3
4
5
6
id | naam | volg
0 | Blank | 4
1 | Menu | 3
2 | Nieuws | 1
3 | Weetjes | 0
4 | Forum | 2

Als je dan Weetjes omlaag wilt halen, moet Weetjes dus bovenaan komen te staan, dus moet volg van Blank 3 worden en volg van Weetjes wordt 4. Een soort pointer-structuur dus...

Verwijderd

Topicstarter
Op dinsdag 09 april 2002 17:57 schreef bigtree het volgende:
Het is dus alleen een probleem als Weetjes al onderaan staat? Dan zou ik er voor zorgen dat je bij de onderste niet meer op 'naar beneden' kan klikken. Dan maar wat vaker drukken als je hem helemaal boven wilt hebben. De bovenste mocht immers ook al niet omhoog!
Ja, checks komt er wel in!! zelfde als Weetjes bovenaan staat, dan kan je niet omhoog, dat lukt me wel..

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Simpel where conditietje bij de update?
Pagina: 1