Hallo iedereen,

Ik ben bezig met een klein CMS'je. Ik wil gebruikers de mogelijkheid geven de volgorde van pagina's in het menu te wijzigen.

Ik heb deze tabel (versimpeld):

navitems
- id
- title
- sequence

In het overzicht van alle pagina's staan 2 pijltjes bij iedere pagina: omhoog en omlaag.

Nu weet ik alleen niet hoe ik het werkend krijg aangezien het volgende gebeurd:

- Een nieuwe pagina begint standaard met sequence (volgorde) = 0
- Bij het klikken op omhoog heb ik squence - 1 gedaan (het menu doet ORDER BY squence ASC), en bij omlaag dus + 1

Bij het klikken op omhoog komt de pagina helemaal bovenaan te staan aangezien de sequence meteen lager is dan die met 0 of een ander getal. Bij andere pagina
s moet de volgorde dus ook veranderd worden. Zonder dat de al eerder opgeslagen volgorde gereset wordt.

Ik hoop dat het duidelijk is. Zou iemand weten hoe ik dit op kan lossen?

Maurice
Jurgen B op 03/06/2012 14:15:56

Afhankelijk van de hoeveelheid pagina's in je menu is het dus de vraag wat sneller is kwa querytijd. Danwel hele tabel opnieuw vullen, danwel alleen de aangepaste items een update geven. Persoonlijk zou ik voor het laatste gaan.


Maar dan krijg ik toch wat ik nu al heb? Dan klopt er niets van toch?

Nick Dijkstra op 03/06/2012 14:18:00

Ik gebruik deze code:


<?php
if(isset($_GET['omhoog']) && isset($_GET['volgorde'])){
	mysql_query("UPDATE categorieen SET volgorde = volgorde +1 WHERE volgorde = ".mysql_real_escape_string($_GET['volgorde']));
	mysql_query("UPDATE categorieen SET volgorde = volgorde -1 WHERE id = ".mysql_real_escape_string($_GET['omhoog']));
}elseif(isset($_GET['omlaag']) && isset($_GET['volgorde'])){
	mysql_query("UPDATE categorieen SET volgorde = volgorde -1 WHERE volgorde = ".mysql_real_escape_string($_GET['volgorde']));
	mysql_query("UPDATE categorieen SET volgorde = volgorde +1 WHERE id = ".mysql_real_escape_string($_GET['omlaag'])); 
	}
?>

<a title="Omhoog" href="?omhoog=<?php echo $row['id'];?>&volgorde=<?php echo $row['volgorde']-1;?>">Onhoog</a> 
<a title="Omlaag" href="?omlaag=<?php echo $row['id'];?>&volgorde=<?php echo $row['volgorde']+1;?>">Omlaag</a>



Dit had ik eerst ook inderdaad, maar dit werkt toch alleen voor 2 pagina's? Zodra er meer dan 2 pagina's komen klopt het niet meer. Dan krijgen pagina's dezelfde 'volgorde'.
Wat doe je op het moment dat een gebruiker op een 'omhoog' of 'omlaag' knop klikt? Herlaad je dan de pagina, of los je het in de browser op met javascript?
Nee, heb ik geen last van. Ik laat de omhoog-knop niet zijn bij de 1ste en de omlaag-knop niet bij de laatste. Dan werkt het gewoon goed.

[size=xsmall]Toevoeging op 03/06/2012 14:34:27:[/size]

Erwin H op 03/06/2012 14:30:50

Wat doe je op het moment dat een gebruiker op een 'omhoog' of 'omlaag' knop klikt? Herlaad je dan de pagina, of los je het in de browser op met javascript?

De pagina wordt bij mij dan opnieuw geladen. Maar kan ook opgelost worden mbv Javascript
Nick Dijkstra op 03/06/2012 14:31:29

Nee, heb ik geen last van. Ik laat de omhoog-knop niet zijn bij de 1ste en de omlaag-knop niet bij de laatste. Dan werkt het gewoon goed.

[size=xsmall]Toevoeging op 03/06/2012 14:34:27:[/size]

[quote="Erwin H op 03/06/2012 14:30:50"]
Wat doe je op het moment dat een gebruiker op een 'omhoog' of 'omlaag' knop klikt? Herlaad je dan de pagina, of los je het in de browser op met javascript?

De pagina wordt bij mij dan opnieuw geladen. Maar kan ook opgelost worden mbv Javascript

[/quote]

Het werkt inderdaad, maar alleen als er al een volgorde is. Dus bij het aanmaken van een nieuwe pagina moet ik hem dus al een sequence geven i.p.v. 0. Moet ik dan gewoon de hoogste sequence pakken + 1? (in jouw menu -1 aangezien je ws DESC gebruikt bij order)
Maurice vB op 03/06/2012 14:43:46

[quote="Nick Dijkstra op 03/06/2012 14:31:29"]
Nee, heb ik geen last van. Ik laat de omhoog-knop niet zijn bij de 1ste en de omlaag-knop niet bij de laatste. Dan werkt het gewoon goed.

[size=xsmall]Toevoeging op 03/06/2012 14:34:27:[/size]

[quote="Erwin H op 03/06/2012 14:30:50"]
Wat doe je op het moment dat een gebruiker op een 'omhoog' of 'omlaag' knop klikt? Herlaad je dan de pagina, of los je het in de browser op met javascript?

De pagina wordt bij mij dan opnieuw geladen. Maar kan ook opgelost worden mbv Javascript

[/quote]

Het werkt inderdaad, maar alleen als er al een volgorde is. Dus bij het aanmaken van een nieuwe pagina moet ik hem dus al een sequence geven i.p.v. 0. Moet ik dan gewoon de hoogste sequence pakken + 1? (in jouw menu -1 aangezien je ws DESC gebruikt bij order)
[/quote]

Ja, precies.
Nick Dijkstra op 03/06/2012 15:27:06

[quote="Maurice vB op 03/06/2012 14:43:46"]
[quote="Nick Dijkstra op 03/06/2012 14:31:29"]
Nee, heb ik geen last van. Ik laat de omhoog-knop niet zijn bij de 1ste en de omlaag-knop niet bij de laatste. Dan werkt het gewoon goed.

[size=xsmall]Toevoeging op 03/06/2012 14:34:27:[/size]

[quote="Erwin H op 03/06/2012 14:30:50"]
Wat doe je op het moment dat een gebruiker op een 'omhoog' of 'omlaag' knop klikt? Herlaad je dan de pagina, of los je het in de browser op met javascript?

De pagina wordt bij mij dan opnieuw geladen. Maar kan ook opgelost worden mbv Javascript

[/quote]

Het werkt inderdaad, maar alleen als er al een volgorde is. Dus bij het aanmaken van een nieuwe pagina moet ik hem dus al een sequence geven i.p.v. 0. Moet ik dan gewoon de hoogste sequence pakken + 1? (in jouw menu -1 aangezien je ws DESC gebruikt bij order)
[/quote]

Ja, precies.
[/quote]

Het is gelukt dankjewel!

Reageren