Positie eigenschap SQL updating
Dave L
05/10/2011 11:58:56Ik heb een aantal foto's in een database staan. De database tabel bevat de filename van de foto + de positie (en nog wat onrelevante fields)
In het begin heeft alles een volgorde van 1,2,3,4. Dus:
(filename / positie):
1.jpg / 1
2.jpg / 2
3.jpg / 3
4.jpg / 4
Nu open ik de pagina waarmee men de foto volgorde kan veranderen. Hier wordt dus achter iedere foto een dropdown box weergegeven met daar het totaal aantal posities in de database, dus 1,2,3,4
Hoe stel ik nu de query samen zodat als men bijvoorbeeld 3.jpg op positie 1 wil hebben ?
Dus in de database zou dit moeten worden:
1.jpg / 2
2.jpg / 3
3.jpg / 1
4.jpg / 4
De oplossing die ik nu heb is dat de waardes van 2 dropdown boxes niet hetzelfde mogen zijn. Dus 1.jpg en 3.jpg kunnen niet allebei positie 3 hebben.
Weet iemand een manier om dit dynamisch te maken ? Zodat wanneer slechts de positie van 1 dropdown box wordt gewijzigd (en er dus 2 dropdownboxes zijn met bijv. positie 2) dat de positie van de rest ook wordt gewijzigd?
In het begin heeft alles een volgorde van 1,2,3,4. Dus:
(filename / positie):
1.jpg / 1
2.jpg / 2
3.jpg / 3
4.jpg / 4
Nu open ik de pagina waarmee men de foto volgorde kan veranderen. Hier wordt dus achter iedere foto een dropdown box weergegeven met daar het totaal aantal posities in de database, dus 1,2,3,4
Hoe stel ik nu de query samen zodat als men bijvoorbeeld 3.jpg op positie 1 wil hebben ?
Dus in de database zou dit moeten worden:
1.jpg / 2
2.jpg / 3
3.jpg / 1
4.jpg / 4
De oplossing die ik nu heb is dat de waardes van 2 dropdown boxes niet hetzelfde mogen zijn. Dus 1.jpg en 3.jpg kunnen niet allebei positie 3 hebben.
Weet iemand een manier om dit dynamisch te maken ? Zodat wanneer slechts de positie van 1 dropdown box wordt gewijzigd (en er dus 2 dropdownboxes zijn met bijv. positie 2) dat de positie van de rest ook wordt gewijzigd?
PHP hulp
24/11/2024 08:15:42Dat kan met een combinatie van jQuery, Ajax en MySQL:
http://wil-linssen.com/entry/extending-the-jquery-sortable-with-ajax-mysql/
Het aardige is dat deze oplossing uitgaat van drag & drop, wat wel zo handig is voor juist zoiets visueels als foto's.
Demo: http://demo.wil-linssen.com/jquery-sortable-ajax/
http://wil-linssen.com/entry/extending-the-jquery-sortable-with-ajax-mysql/
Het aardige is dat deze oplossing uitgaat van drag & drop, wat wel zo handig is voor juist zoiets visueels als foto's.
Demo: http://demo.wil-linssen.com/jquery-sortable-ajax/
dat gaat ook puur met SQL:
UPDATE menuitems SET position=(IF(idfield = ?id, position = ?pos, IF(position >= ?pos, position + 1, position))
lees ?* parameters in mysqli of gewoon waardes met php gegenereerd.
Toevoeging op 05/10/2011 16:35:28:
en natuurlijk ook nog een where der overheen
@ward in de links die jij aangeeft worden meerdere query´s aangeroepen, dit is hetzelfde maar dan in 1 query
UPDATE menuitems SET position=(IF(idfield = ?id, position = ?pos, IF(position >= ?pos, position + 1, position))
lees ?* parameters in mysqli of gewoon waardes met php gegenereerd.
Toevoeging op 05/10/2011 16:35:28:
en natuurlijk ook nog een where der overheen
@ward in de links die jij aangeeft worden meerdere query´s aangeroepen, dit is hetzelfde maar dan in 1 query
Gewijzigd op 05/10/2011 16:53:28 door Ger van Steenderen