Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Berichten: 1.215
Reg. datum: 21 februari 2001
Reg. datum: 21 februari 2001
Voor de liefhebber:quote:GandalfTheGrey schreef op woensdag 02 mei 2007 @ 16:32:
Daar zou je me een groot plezier mee doenGebruik zelf ook border=0.
http://home.hccnet.nl/reddevil/tablesort.zip
Als iemand nog zin en tijd heeft om 't probleem van de border=1 op te lossen of ze kunnen het werkend krijgen onder diverse andere browsers....
PS. Kan zijn dat er in de html nog wat onzin code staat, maar dat kan je eenvoudig strippen.
reddevil wijzigde dit bericht 03-05-2007 09:41 (36%)
Vaelaa - Human Warlock 80 @ Sunstrider
Bedankt reddevil. Alleen werkt volgens mij de "klik" showAll niet en de serializeList geeft niks terug.
Inderdaad. Daarom ben ik nu ook aan het proberen de TOOLMAN te editen voor tables.quote:Janoz schreef op donderdag 03 mei 2007 @ 09:26:
Wat je daar laat zien is gewoon een tabel. Ik zie niet in waarom je daarvoor een li zou moeten misbruiken aangezien een li gemaakt is voor een lijstje van elementen, en niet tabulaire data (lees: met kolommen).
GandalfTheGrey wijzigde dit bericht 03-05-2007 12:13 (79%)
Berichten: 1.215
Reg. datum: 21 februari 2001
Reg. datum: 21 februari 2001
De klik laat alleen zien welke rows aangevinkt zijn met de checkbox voor de row.quote:GandalfTheGrey schreef op donderdag 03 mei 2007 @ 12:05:
Bedankt reddevil. Alleen werkt volgens mij de "klik" showAll niet en de serializeList geeft niks terug.
geen idee wat de serializeList exact doet, maar zoals ie bij mij nu werkt kan ik gewoon de volgordes ophalen door een javascriptje te gebruiken die de tabel row voor row doorloopt (beetje zoals de showAll doet).
Vaelaa - Human Warlock 80 @ Sunstrider
Het javascript werkt nu volledig goed 
Alleen SQL statement lijkt niks te doen?!
Affected rows: 0 (Query took 0.0004 sec)
SQL query: UPDATE company SET priority = ELT( priority, 2, 1 )
Alleen SQL statement lijkt niks te doen?!
Affected rows: 0 (Query took 0.0004 sec)
SQL query: UPDATE company SET priority = ELT( priority, 2, 1 )
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
die query werkt alleen voor rijen die al bestaan in de database he? m.a.w. bestaan er wel rijen in je tabel... en hebben deze nu als priority ook 1 en 2.... nadeel van dit systeem is nl wel dat je netjes moet ordenen...
Volgens mij is er een probleem als er 1 rij verwijdert wordt en de nummers niet meer oplopend zijn. Klopt dit?
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
dat klopt in principe ja... ELT is een leuke functie, maar je moet hem exact goed gebruiken in dit geval.. anders heeftie geen goed effect...
je kunt denk ik het best ook in het javascript zorgen dat je nummers oplopend blijven...
en verwijderde rijen misschien vervangen door 0 of NULL en daarna de velden met priority 0 of NULL verwijderen...
je kunt denk ik het best ook in het javascript zorgen dat je nummers oplopend blijven...
en verwijderde rijen misschien vervangen door 0 of NULL en daarna de velden met priority 0 of NULL verwijderen...
P.O. Box wijzigde dit bericht 04-05-2007 15:44 (42%)
Op een of andere manier krijgen twee bedrijven elke x priority = 0 na de Update.
Moet de oude situatie (IN de database) ook een oplopend rijtje zijn ?
Mijn javascript geeft gewoon dit door (Rij met alle company ID's in volgorde gescheiden door pipes):
?action=order&order=0|94|21|20|26|22|23|24|28|29|50|48|52..|95|17
Vervolgens krijgen company 95 en 17 elke keer priority 0 van ELT. Terwijl alle andere priority's wel goed en oplopend kloppen?! Verder lijkt hij sommige wijzingen wel op te slaan en andere niet
Mijn code (PHP4 server)
Ik doe eerst een substring waarin ik de eerste twee tekens verwijder, omdat het javascript ook de tableheadrow meegeeft (die heeft standaard id=0)
PHP:
Moet de oude situatie (IN de database) ook een oplopend rijtje zijn ?
Mijn javascript geeft gewoon dit door (Rij met alle company ID's in volgorde gescheiden door pipes):
?action=order&order=0|94|21|20|26|22|23|24|28|29|50|48|52..|95|17
Vervolgens krijgen company 95 en 17 elke keer priority 0 van ELT. Terwijl alle andere priority's wel goed en oplopend kloppen?! Verder lijkt hij sommige wijzingen wel op te slaan en andere niet
Mijn code (PHP4 server)
Ik doe eerst een substring waarin ik de eerste twee tekens verwijder, omdat het javascript ook de tableheadrow meegeeft (die heeft standaard id=0)
PHP:
| <?php
|
GandalfTheGrey wijzigde dit bericht 04-05-2007 17:12 (139%)
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
eerst even een vraag: begrijp je de functie ELT? dan zou je er in principe uit moeten kunnen komen...
de originele prioriteiten hoeven niet perse oplopend te zijn... wel moet de ELT functie aangeroepen worden met minimaal de originele prioriteit aantal aan argumenten... zo niet, dan geeft hij null terug....
het is niet de meest ideale functie hiervoor, maar wel als je in 1 statement de volgorde wilt updaten... vereiste is dus wel dat je netjes nummert...
op zich moet dat ook geen probleem zijn... je begint bij 1... en een volgende rij wordt altijd max + 1... als je rijen verwijdert doe je de ELT actie, waardoor de nummering daarna weer OK zou moeten zijn... als je het netjes doet kan het niet fout gaan...
edit: oh, je hebt wat toegevoegd... ff bekijken...
de originele prioriteiten hoeven niet perse oplopend te zijn... wel moet de ELT functie aangeroepen worden met minimaal de originele prioriteit aantal aan argumenten... zo niet, dan geeft hij null terug....
het is niet de meest ideale functie hiervoor, maar wel als je in 1 statement de volgorde wilt updaten... vereiste is dus wel dat je netjes nummert...
op zich moet dat ook geen probleem zijn... je begint bij 1... en een volgende rij wordt altijd max + 1... als je rijen verwijdert doe je de ELT actie, waardoor de nummering daarna weer OK zou moeten zijn... als je het netjes doet kan het niet fout gaan...
edit: oh, je hebt wat toegevoegd... ff bekijken...
P.O. Box wijzigde dit bericht 04-05-2007 17:11 (3%)
Ik snap het principe van de ELT functie wel, maar ik heb het gevoel dat ik ergens iets mis.
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
de code ziet er op zich goed uit... ik denk dat je even wat print_r-en er tussen moet gooien om te kijken wat er nou waar in de code staat... ik heb het vermoeden dat $oud niet evenlang is als $nieuw... terwijl die wel even lagn moeten zijn... verwijderde items moet je namelijk niet uit $nieuw verwijderen, maar voorzien van 0 bijvoorbeeld... ook al heb je ze namelijk inmiddels verwijderd... de oude volgordenummering weet dat nog niet...
P.O. Box wijzigde dit bericht 04-05-2007 17:22 (13%)
PHP:
| <?php
|
Het deleten gebeurd real-time. Misschien moet ik hier dan gewoon een UPDATE statement bijgooien waarin ik alles > company_id priority = priority -1 doe?
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
je bedoelt dat als je verwijderd, dat dan direct de betreffende rij uit de database wordt verwijderd? en wordt dan je overzicht opnieuw getoond of doe je het verwijderen dan met ajax ? m.a.w. is $oud op het moment van zenden (en dus voor de database bewerkingen) nog wel exact gelijk aan wat er in je database staat?
overzicht wordt opnieuw getoond. $oud klopt met wat er in de database staat.
De arrays zijn ook even groot. Maar bij het deleten wordt de volgorde dus NIET geupdate en krijg je gaps in de priority volgorde.
De arrays zijn ook even groot. Maar bij het deleten wordt de volgorde dus NIET geupdate en krijg je gaps in de priority volgorde.
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
eigenlijk moeten de verwijderde items wel nog worden meegegeven in de prioriy lijst.... met 0 ofzo... boeit niet, de update ziet ze toch niet, maar de overige priorities staan wel op hun plaats...
kun je anders even het resultaat van dit posten:
na $Query = "UPDATE .... ";
PHP:
kun je anders even het resultaat van dit posten:
na $Query = "UPDATE .... ";
PHP:
| <?php
|
code:
1
2
3
4
5
6
7
8
| Oud = Order => Company_ID Oud ( [1] => 17 [2] => 95 [3] => 94 [4] => 21 [5] => 26 [6] => 20 [7] => 23 [8] => 22 [9] => 24 [10] => 28 [11] => 29 [12] => 50 [13] => 48 [14] => 52 [15] => 55 [16] => 31 [17] => 33 [18] => 16 [19] => 34 [20] => 37 [21] => 35 [22] => 36 [23] => 30 [24] => 38 [25] => 39 [26] => 40 [27] => 41 [28] => 25 [29] => 42 [30] => 43 [31] => 45 [32] => 44 [33] => 46 [34] => 47 [35] => 49 [36] => 32 [37] => 53 [38] => 54 [39] => 56 [40] => 58 [41] => 51 [42] => 15 [43] => 57 [44] => 18 [45] => 60 [46] => 61 [47] => 62 [48] => 63 [49] => 64 [50] => 65 [51] => 66 [52] => 67 [53] => 68 [54] => 69 [55] => 70 [56] => 71 [57] => 72 [58] => 73 [59] => 74 [60] => 75 [61] => 76 [62] => 78 [63] => 77 [64] => 79 [65] => 81 [66] => 89 [67] => 82 [68] => 83 [69] => 84 [70] => 85 [71] => 88 [72] => 90 [73] => 91 [74] => 105 [75] => 99 [76] => 101 [77] => 92 [78] => 14 [79] => 19 [80] => 86 [81] => 59 [82] => 27 [83] => 87 [84] => 96 [85] => 93 [86] => 97 [87] => 98 [88] => 100 [89] => 102 [90] => 103 [91] => 104 [92] => 106 ) Nieuw = Company ID => Nieuw Orde Nieuw ( [17] => 1 [95] => 2 [94] => 3 [21] => 4 [26] => 5 [20] => 6 [23] => 7 [22] => 8 [24] => 9 [28] => 10 [29] => 11 [50] => 12 [48] => 13 [52] => 14 [55] => 15 [31] => 16 [33] => 17 [16] => 18 [34] => 19 [37] => 20 [35] => 21 [36] => 22 [30] => 23 [38] => 24 [39] => 25 [40] => 26 [41] => 27 [25] => 28 [42] => 29 [43] => 30 [45] => 31 [44] => 32 [46] => 33 [47] => 34 [49] => 35 [32] => 36 [53] => 37 [54] => 38 [56] => 39 [58] => 40 [51] => 41 [15] => 42 [57] => 43 [18] => 44 [60] => 45 [61] => 46 [62] => 47 [63] => 48 [64] => 49 [65] => 50 [66] => 51 [67] => 52 [68] => 53 [69] => 54 [70] => 55 [71] => 56 [72] => 57 [73] => 58 [74] => 59 [75] => 60 [76] => 61 [78] => 62 [77] => 63 [79] => 64 [106] => 65 [81] => 66 [89] => 67 [83] => 68 [84] => 69 [85] => 70 [88] => 71 [90] => 72 [91] => 73 [105] => 74 [99] => 75 [101] => 76 [92] => 77 [14] => 78 [19] => 79 [86] => 80 [59] => 81 [27] => 82 [87] => 83 [96] => 84 [93] => 85 [97] => 86 [98] => 87 [100] => 88 [102] => 89 [103] => 90 [104] => 91 [82] => 92 ) Nieuwevolgorde = lijst nieuwe volgorde's 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 92, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 65 |
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
ik bedenk me ineens nog iets...
toen ik die ELT functie voorstelde, had ik in gedachte dat je oude priorities, naar nieuwe priorities ging zetten, zonder ID's e.d. te weten... jij kwam echter met een code waarbij je de ID's op een volgorde in een array zette.... om dan ELT te gebruiken geeft een heel geklooi met "nieuwevolgorde" zoals je zelf al zag...
nu bedacht ik me net dat de FIELD functie eigenlijk nog veel makkelijker is als je ID's gebruikt...
je hebt een array $order, met daarin de ID's op de nieuwe volgorde...
dan doe je:
PHP:
FIELD geeft de positie van id terug in de lijst....
scheelt je een hoop code lijkt me...
toen ik die ELT functie voorstelde, had ik in gedachte dat je oude priorities, naar nieuwe priorities ging zetten, zonder ID's e.d. te weten... jij kwam echter met een code waarbij je de ID's op een volgorde in een array zette.... om dan ELT te gebruiken geeft een heel geklooi met "nieuwevolgorde" zoals je zelf al zag...
nu bedacht ik me net dat de FIELD functie eigenlijk nog veel makkelijker is als je ID's gebruikt...
je hebt een array $order, met daarin de ID's op de nieuwe volgorde...
dan doe je:
PHP:
| <?php
|
FIELD geeft de positie van id terug in de lijst....
scheelt je een hoop code lijkt me...
Chique!
Enige probleem wat open blijft staan is dat meerdere mensen in de database kunnen werken. Stel dat ik een rij verwijder en er een paar toevoeg terwijl iemand anders in JavaScript aan het sorteren is dan heb je een probleem.
Enige probleem wat open blijft staan is dat meerdere mensen in de database kunnen werken. Stel dat ik een rij verwijder en er een paar toevoeg terwijl iemand anders in JavaScript aan het sorteren is dan heb je een probleem.
Een website voor maar ¤ 1299 op maat ontworpen! GO-ON.nl Goedkope Websites!
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
grappig, net toen ik mijn nieuwe oplossing aan het posten was, postte jij dit.... ik denk dat je met de nieuwe oplossing hier geen antwoord meer op hoeft, maar mocht dat wel zo zijn: is het mogelijk om het met een kleinere set te testen? ik kan hier nl. niet echt een fout in vinden, maar misschien komt dat omdat ik door de enorme hoeveelheid getallen...quote:GandalfTheGrey schreef op zaterdag 05 mei 2007 @ 11:57:
code:
1 2 3 4 5 6 7 8 Oud = Order => Company_ID Oud ( [1] => 17 [2] => 95 [3] => 94 [4] => 21 [5] => 26 [6] => 20 [7] => 23 [8] => 22 [9] => 24 [10] => 28 [11] => 29 [12] => 50 [13] => 48 [14] => 52 [15] => 55 [16] => 31 [17] => 33 [18] => 16 [19] => 34 [20] => 37 [21] => 35 [22] => 36 [23] => 30 [24] => 38 [25] => 39 [26] => 40 [27] => 41 [28] => 25 [29] => 42 [30] => 43 [31] => 45 [32] => 44 [33] => 46 [34] => 47 [35] => 49 [36] => 32 [37] => 53 [38] => 54 [39] => 56 [40] => 58 [41] => 51 [42] => 15 [43] => 57 [44] => 18 [45] => 60 [46] => 61 [47] => 62 [48] => 63 [49] => 64 [50] => 65 [51] => 66 [52] => 67 [53] => 68 [54] => 69 [55] => 70 [56] => 71 [57] => 72 [58] => 73 [59] => 74 [60] => 75 [61] => 76 [62] => 78 [63] => 77 [64] => 79 [65] => 81 [66] => 89 [67] => 82 [68] => 83 [69] => 84 [70] => 85 [71] => 88 [72] => 90 [73] => 91 [74] => 105 [75] => 99 [76] => 101 [77] => 92 [78] => 14 [79] => 19 [80] => 86 [81] => 59 [82] => 27 [83] => 87 [84] => 96 [85] => 93 [86] => 97 [87] => 98 [88] => 100 [89] => 102 [90] => 103 [91] => 104 [92] => 106 ) Nieuw = Company ID => Nieuw Orde Nieuw ( [17] => 1 [95] => 2 [94] => 3 [21] => 4 [26] => 5 [20] => 6 [23] => 7 [22] => 8 [24] => 9 [28] => 10 [29] => 11 [50] => 12 [48] => 13 [52] => 14 [55] => 15 [31] => 16 [33] => 17 [16] => 18 [34] => 19 [37] => 20 [35] => 21 [36] => 22 [30] => 23 [38] => 24 [39] => 25 [40] => 26 [41] => 27 [25] => 28 [42] => 29 [43] => 30 [45] => 31 [44] => 32 [46] => 33 [47] => 34 [49] => 35 [32] => 36 [53] => 37 [54] => 38 [56] => 39 [58] => 40 [51] => 41 [15] => 42 [57] => 43 [18] => 44 [60] => 45 [61] => 46 [62] => 47 [63] => 48 [64] => 49 [65] => 50 [66] => 51 [67] => 52 [68] => 53 [69] => 54 [70] => 55 [71] => 56 [72] => 57 [73] => 58 [74] => 59 [75] => 60 [76] => 61 [78] => 62 [77] => 63 [79] => 64 [106] => 65 [81] => 66 [89] => 67 [83] => 68 [84] => 69 [85] => 70 [88] => 71 [90] => 72 [91] => 73 [105] => 74 [99] => 75 [101] => 76 [92] => 77 [14] => 78 [19] => 79 [86] => 80 [59] => 81 [27] => 82 [87] => 83 [96] => 84 [93] => 85 [97] => 86 [98] => 87 [100] => 88 [102] => 89 [103] => 90 [104] => 91 [82] => 92 ) Nieuwevolgorde = lijst nieuwe volgorde's 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 92, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 65
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
dat hou je natuurlijk altijd als je eerst een hele lijst bewerkingen doet alvorens daadwerkelijk de opdracht naar de database te sturen....quote:djluc schreef op zaterdag 05 mei 2007 @ 12:09:
Chique!
Enige probleem wat open blijft staan is dat meerdere mensen in de database kunnen werken. Stel dat ik een rij verwijder en er een paar toevoeg terwijl iemand anders in JavaScript aan het sorteren is dan heb je een probleem.
Geweldig het werkt
de functie saveOrder is nu maar 3 of 4 lines 
Berichten: 1.188
Reg. datum: 24 augustus 2005
Reg. datum: 24 augustus 2005
super! twas leuk om mee te denken!quote:GandalfTheGrey schreef op zaterdag 05 mei 2007 @ 13:25:
Geweldig het werktde functie saveOrder is nu maar 3 of 4 lines
