[PHP MYSQL HTML] treeview

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

voor een nog te bouwen online diagnose systeem (dus met 'ja' en 'nee' vragen bij een antwoord komen) moet ik een onderhoudssysteem bedenken.
Dus men moet vragen en antwoorden kunnen toevoegen, aanpassen, verplaatsen, verwijderen e.d.
Ik weet nog niet of dit via slepen gaat gebeuren (zoals in windowsverkenner) of doormiddel van tekstvakjes en knoppen. Ik ben vrij in deze keuze en zou graag willen weten wat jullie zouden doen.

Ik had in gedachten om dit door middel van een treeview te doen, omdat je nooit weet hoeveel lagen het verhaal diep gaat worden.
Men kan na 3 vragen bij het antwoord zijn, maar ook pas na 30 of mss zelfs 300.

Ik heb nu enkele treeviews bekeken:
http://www.mschopman.demon.nl/treeview_v1.6/treeview.html
http://www.treeview.net

De eerste is leuk, maar helaas werkt het verschuiven niet helemaal goed.
De tweede is meer voor menu's e.d. en dus niet aanpasbaar.

Tevens zit ik met het probleem dat ik de vragen en antwoorden uit een database moet halen en ze er na de aanpassing weer in moet doen.
Deze database regel had ik ingedachten:
tabel vragen:
ID, vraag, kindJaID, kindNeeID, antwoordID, ouderID

dus of de beide kinderen zijn gevuld of antwoordID

tabel antwoord:
ID, antwoord

De database is in werkelijkheid nog ietwat groter (taalcodes e.d.), maar dat is nu niet belangrijk.

Hoe zouden jullie zoiets aanpakken?
Is een treeview wel een goed idee en ziet mijn database er wel goed uit??
Ik hoef dus geen technisch uitgewerkte verhalen (mag natuurlijk wel ;) ), maar meer even wat gebrainstorm.
Misschien wat linkjes oid.
Want ik loop hier een beetje op vast.

Bvd.

Acties:
  • 0 Henk 'm!

  • cannibal
  • Registratie: Maart 2001
  • Nu online
deze is wel aardig:

http://www.scbr.com/docs/products/dhtmlxTree/


ook is het wel te doen om het zelf te schrijven, ben je iets flexibeler, maar kost natuurlijk toch wel wat tijd om alle specifieke opslag zaken enzo goed uit te werken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Kijk, dat lijkt erop, bedankt.
Documentatie erbij, voorbeelden met PHP en MySQL erbij.

Ik denk dat ik hier wel een aardig eindje mee kan komen.

Maar andere tips 'n tricks zijn natuurlijk ook altijd welkom.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Klein schopje.
Misschien weet iemand nog iets?
Die dhtmlxTree ziet er goed uit, redelijk overzichtelijk geprogrammeerd en je kunt er met php en mysql makkelijk wijzigingen in de database mee maken.

Maar misschien is er nog iets veel beters te bedenken? _/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

Van die eerste schijnt er al een nieuwe versie te zijn, waarbij de drag & drop geen conflict meer heeft met de rename functionaliteit. O-)

[ Voor 40% gewijzigd door Verwijderd op 07-09-2005 14:54 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De ontwerper hem / haar zelf erbij, altijd leuk.
Ik heb hier 1.6 aangewezen omdat er daar voorbeelden bijzaten en het zag er zonder rode boxen beter uit.

Hoe zit het met de database en php functies in jouw tree?
En ik heb ergens op GoT gelezen dat je met de documentatie bezig zou, helaas kon ik dat niet vinden op je website.

Acties:
  • 0 Henk 'm!

Verwijderd

Wat voor functies heb je het over? Ik bied alleen de mogelijkheden om die treeviews iets te laten doen, of iets terug te geven. Je kunt de treeview voeden met calls naar de methods of met xml, of met static scripts, etc. Code om bijvoorbeeld de treeview een directory te tonen moet je zelf maken, jij moet zorgen dat er xml komt of static javascript code voor de creatie van de treeview structuur.

[ Voor 54% gewijzigd door Verwijderd op 07-09-2005 16:57 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik bedoel meer, is het mogelijk om dat erin te implementeren zonder de hele structuur opnieuw te schrijven?

Bij de boom die cannibal74 aanwijst, zit het php en database gebeuren er standaard bij, dat maakt het natuurlijk wel makkelijk. Ook zijn alle functies goed gedocumenteerd.
Bij jouw boom zal ik de structuur eerst moeten ontdekken, dit gaat volgens mij veel tijd kosten.
Mocht het wel lukken, kun jij het misschien het php stuk ook nog gebruiken.

Maar ik houd het eerst op de dhtmlxTree, zou dat niets worden, kan ik kijken hoever ik met jouw boom kom. Als ik die van jouw gebruik zal ik na de tijd het php en database stukje wel naar je toesturen, dan kun je kijken of jij er wat mee kunt.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zie het hele probleem niet :) Je genereert met php een xml file alla

<tree label="node">
<tree label="childnode" />
<tree label="childnode" />
</tree>

Qua documentatie is die andere gewoon veel beter dan die van mij, period. :)

  • cannibal
  • Registratie: Maart 2001
  • Nu online
Mijn zelf geschreven tree (waarvan ik helaas geen voorbeeld heb, zonder dat je moet inloggen) heeft het zelfde probleem ja als die van Gordijnstok, documentatie..... al staan er natuurlijk wel wat comments in de code.
Maar met goede documentatie schrijven verdubbelt je ontwikkeltijd.

Maar heb in een dag of 2 geschreven wat ik nu had,
php om de div-tree te schrijven en js om het open klappen te makken en het verplaatsen en cq op volgorde zetten van nodes. En groot gedeelte van de tijd gaat dan ook nog zitten in het schrijven van crossbrowser-css....

Verwijderd

Het drag and drop verhaal zoals het trouwens bij mij er nu staat is gebaseerd op het feit dat er na een drop een reload zou moeten worden uitgevoerd. Er wordt nu dus alleen een drag en delete gedaan van de node.

Het is vervolgens aan de gebruiker zelf om de

function onNodeDragStart(draggingNode){}
function onNodeDragEnd(targetNode){}

In te vullen door bijvoorbeeld de draggingNode in de targetNode te plaatsen, of in mijn geval de draggingNode te verwijderen van de treeview, en op de targetNode een reload() uit te voeren. Het kan namelijk zijn dat de data die in het XML bestand voor de opbouw van je item terugkomt zaken zitten die je clientside niet zomaar kunt verplaatsen, zoals bijvoorbeeld een parentId van een database record.

Kortom, er worden echt bouwstenen geboden :)

  • cannibal
  • Registratie: Maart 2001
  • Nu online
heb toch eens een demo stukje aangemaakt op mijn testserver.

http://thuis.drikvanherk.nl/yourlinks/bookmarktreeview.php

inloggen:
test
test

ophalen van gegevens (details) werkt via een ajax-like oplossing.
dat scheelt me het reloaden van de boom.

Toevoegen van nodes werkt ongeveer gelijk, wordt allemaal met js gedaan.
ook de wijzigingen in database uitvoeren en in boom gaat via ajax en js.

Verwijderd

Topicstarter
Ik ben er even mee bezig geweest, ik hoop dat er niets verkeerd is gegaan in jouw database ;) .

Het viel me op dat je royaal bent met de foutmelding: "Er is een fout opgetreden", terwijl het voor het oog goed ging. Dat gebeurt als ik een map wil verplaatsen, wat zo te zien wel goed gaat.

Het ziet er goed uit, de bediening moet even wennen, maar werkt dan ook goed (even precies die lijn laten zien voordat je het neerzet).
Ook heb jij een duidelijke scheiding tussen map en leaf, dit zou voor mij ook makkelijk zijn, want er is een verschil tussen vraag (eigenlijk een map) en antwoord (een leaf).

De verwijderfunctie werkt nog niet zie ik, of heb je die voor mij geblokkeerd?

Helaas ben ik niet bekend met ajax, is dat makkelijk te leren voor zo'n project of kan ik het beter bij php en mysql houden (iets dat ik beter / goed beheers).
Kun je ajax op elke webserver draaien of heb je iets speciaals nodig, net zoals bij PHP, ASP e.d.
of is het client-side?

  • cannibal
  • Registratie: Maart 2001
  • Nu online
waar had je nog fouten?
tis natuurlijk allemaal ontwikkeling daar, dus dat kan gebeuren, maar dan weet ik ze graag. Had hier de foutmelding iig nog niet gezien.. (denk ik)

database is verder gewoon ook een testdatabase, had er ook al wat persoonlijkere links uit gegooid.

Ajax is redelijk simpel en kun je overal op internet voorbeelden over vinden. Al zijn sommige voorbeelden heel uitgebreid en algemeen, daar moet je even door heen kijken.

Verwijderd

Topicstarter
Als je een map verplaats onder een andere map, dan kreeg ik wat fouten.
Het kan ook zijn dat ik de map binnen de zelfde map wou verplaatsen, dat weet ik niet meer precies.

Ook was het geen echte fout, ik kreeg alleen maar een foutmelding. Maar het zag er wel goed uit als ik refreshde. Dus ik kon de fout niet zien in het grafische gedeelte.
Alleen de verwijderfunctie werkte niet, maar dat zul jij ook wel weten.

Maar moet ik nu een speciale serversoftware voor Ajax hebben of kan het gewoon net zoals js?

  • cannibal
  • Registratie: Maart 2001
  • Nu online
Verwijder functie weet ik, geeft toch ook een melding "nog te implementeren"?

Heb trouwens de foutmeldingen gevonden, het gaat fout als je probeert op het hoogste niveau (onder bookmarks) een map probeert te verplaatsen naar de rootnode (bookmarks). Hij voert deze actie dan verder ook niet echt uit... (moet ik nog even verder debuggen).

Ajax werkt gewoon op de meeste browsers, is gewoon het ophalen van een pagina via het xmlhttp-object (in js) en het resultaat van deze pagina (wat xml, tekst of html kan zijn) te verwerken (met js weer) in de pagina.
Pagina: 1