Ik zie steeds vaker websites waarbij ze het profielen systeem steeds persoonlijker maken, ik kwam laatst een site tegen daar kon je in je profiel info boxen zelf heen en weer slepen.
Dan bedoel ik niet alleen het slepen, maar als je zo'n box tussen 2 andere boxen plaatst, schuifen die uit elkaar om ruimte te maken voor die box etc.
Google heeft dit ook bij het personaliseren van je pagina.
Ik had al een keer ergens een goed script gedownload, en helemaal gemodificeert, en dit is het resultaat:
Maar hoe kan ik ervoor zorgen dat de posities worden opgeslagen in een cookie ofzo, dat als ik op de knop opslaan druk, dat een stuk php code de cookies uitleest en de posities in de DB gooit?
Bij elke box een hidden field zetten met het ID/nummer van de box. Zet dit in je database per userid (bv. 2,1,3 => Box 2, dan 1, dan 3) en lees dat dan uit bij het laden van de pagina.
Ik had een keer een stukje van die javascript gevonden, die helemaal gemodificeert, en daar een nette layout bij gemaakt, ik wil dus dat als je op die button daarboven klikt op opslaan, dat er positie gegevens wordt geplaatst in een DB.
Het orgineel was alleen een stukje javascript.
Ik heb het helemaal omgebouwd incl. grafisch interface, ik wil het namelijk gebruiken voor een CMS.
Waar een admin dan bepaalde blokken kan aanmaken met informatie, en op een eenvoudige manier kan sorteren, maar dan moet de lokatie van de blokken wel opgeslagen worden, misschien dat als we met z'n allen hiermee klooien, komen we misschien tot een oplossing, en mag je het script gewoon gebruiken van me.
Ik zoek al weken naar een goed compleet script, toen dacht ik, laat ik het met een basic stukje zelf bouwen, maarja, dat is wel gelukt, maar opslag en data afhandeling lukt me niet echt.
@Godlord,
Als een website draait in een submap:
www.domein.ext/map/submap/index.php
En je ziet in het script:
src="blaat.js"
Dan ziet zoekt het script naar die file in dezelfde directorie als waar die pagina geladen is, in de map submap dus.
Ik denk dat het mogelijk moet zijn bij elke 'verschuiving' de positie aan te passen in de DB mbv AJAX.
Hieronder een korte gedachtegang van hoe je het misschien kan aanpakken.
We gebruiken 2 tabellen (zie * onderaan mijn post)
1 tabel genaamd: docks
met daarin:
Citaat:
ID tinyint(3) primary key
description varchar(255)
andere tabel: contents
met daarin:
Citaat:
ID int(4) primary key
dockID tinyint(3) FK naar docks.ID
==> Wanneer je een content 'dragged' en in een 'dock' dropped (een dock is hier een locatie, lees * een beetje meer naar beneden)
vervang je de dockID van die content
==> bij het opbouwen van je pagina kan je dan alle contents -die bij het dock horen dat je op dat moment gaat weergeven - uit de db halen en ze netjes plaatsen.
Dan zitten we nog met het probleem dat je de volgorde wil bepalen, dit wordt een beetje moeilijker om te doen.
We voegen een column positions toe aan 'contents' genaamd:
De nieuwe tabel wordt dan:
Citaat:
ID int(4) primary key
dockID tinyint(3) FK naar docks.ID
position int(4);
Nu, de reden dat'k deze int(4) (en dus groter dan mathematisch nodig) maak is simpel.
een kort vb om het uit te leggen.
de contents met content ID 1-4 staan in dock 2 In die volgorde.
de tabel ziet er zo uit.
Op die manier moet je niet telkens de waarde van alle andere contentposities veranderen om er eentje tussen te wurmen, het volstaat om de content die je verschuifd alleen 'van positie te veranderen'
Wat je nu dus moet doen is.
bij het laden geef je net als de divs ook steeds een hidden input field mee waarin de position staat.
Als je een stukje dragged verander je zijn hidden input field.
daarvoor zijn er 2 mogelijkheden.
Ofwel maak je de waarde 1 waarde kleiner dan de waarde die de hidden input van het veld waar hij nu bovenstaat heeft.
Ofwel maak je de waarde 1 hoger dan de waarde die de hidden input van het veld waar hij nu onderstaat heeft.
Ik hoop dat je het snapt.
zelf ben'k niet thuis in Ajax/javascript, maar als jij dat wel bent moet je met mijn gedachtegang denk'k wel iets aan kunnen vangen.
* Ik kies er voor om contents in docks te plaatsen omdat het zo mogelijk wordt verschillende docks op een pagina te hebben, bv 1 in het linker menu, en 1 in het rechter
Ik snap je gedachtegang, maar zelf ben ik ook niet goed met JS en AJAX, met AJAX heb ik totaal geen ervaring zelfs, dus nu zoek ik nog iemand die het weet te realiseren tot een werkend project.
@hunterx7
Heb momenteel echt even weinig tijd. Maar zal zodra ik wat meer tijd heb zeker hier iets moois van gaan maken en met jou en evt de rest hier delen.
edit:
Vind het trouwens beetje nutteloze actie om iedere verandering live dmv AJAX op te slaan, kan wel... maar zie het nut er niet van in. Kan best (evt dmv AJAX) door uiteindelijk op een knop te klikken
edit2 (na beter lezen):
AJAX zou evt wel mooi zijn om live de nieuwe posities te updaten van de blokken. Anders zou je idd met die grote verschillen in posities moeten werken zodat het 'altijd' past.
Zonder AJAX zou het beter zijn door de bestaande posities in een array te stoppen en dan dmv een javascript functie de nieuwe posities berekenen
@Mad_Mike, ik hoop dat het je lukt, ik heb namelijk vrij snel een oplossing nodig .
En je hebt me dan erg blij gemaakt, en uiteraard mag je het geheel dan ook zelf gebruiken.
Het is natuurlijk een heel "web 2.0" achtig iets, submit het eindresultaat ook maar eens in de scriptdb, weet zeker dat mensen het handig zullen vinden.
Als het script klaar is, zal ik het zeker in de ScriptDB zetten, ik ben zelf al weken op zoek naar een script met die functionaliteit, kon telkens niet vinden wat ik precies nodig had, dus ik had zelf maar een begin gemaakt, dus als iemand kan helpen om het script af te krijgen, zal ik em zeker wel delen.
Deze week moet ik nog 2 tentamens maken / leren... En 2 projecten afronden. Daarna ben ik voor een half jaar klaar met school. Ga dan fulltime op afstudeerstage. Dan zal ik waarschijnlijk meer tijd hebben!
Hou je op de hoogte
dmn... wil ik net gaan beginnen met het maken van een admin systeem hiervoor. Zijn alle twee de links down. Iemand die het nog even kan hosten voor mij? Moet de bestanden nog hebben...
mooi werkt weer... was net dan ff tijdje down thnx!
roy - 17/02/2007 17:36 (laatste wijziging 19/02/2007 08:23)
PHP gevorderde
Hij slaat de posities niet op in het cookkie..
Is het ook mogelijk om een array van de posities te maken en die op te slaan in een sessie?
Waarna je de array uitleest en de modules/boxen op de juiste plaats zet?
Dit zou een leuke toegevoegde waarde hebben, omdat niet iedereen cookkies accepteerd.
Ik kijk uit naar een oplossing voor dit probleem,
Met vriendelijke groeten,
Roy de Kleijn
ps. hoe zou de aanpassing voor dit script er dan uitzien?