Changed at 12 March 09 / 17:19
Ik heb al een paar uur gezocht op het forum en in de manual maar ik heb niet gevinden wat ik zocht.
Ik wil met een paar knoppen de volgende bewerkingen op een record in de database uitvoeren. Standaardmode is "ViewMode=true" ook nadat een record met succes is gewijzigd of is toegevoegd. Ik kom tot de volgende knoppen:
- bewerken (switchen van Viewmode=false naar Viewmode=true)
- annuleren (terug naar het scherm voordat bewerken of toevoegen is aangeklikt in Viewmode=true)
- toevoegen
De knoppen worden alleen getoond (of enable=true) als dit van toepassing is:
- bewerken alleen als er een record wordt getoond in Viewmode=true
- toevoegen idem
- annuleren: alleen als Viewmode=false
Hoe realiseer ik dit met het FormHandler. Ik heb nergens op dit vlak voorbeelden kunnen vinden.
Kunnen jullie mij met een link naar een voorbeeld of een topic op weg helpen?
Je kunt toch gewoon een if statement maken met de view mode en dan de knoppen wel of niet tonen?
Met de knop kun je een variable mee geven die je bij de opbouw van je formulier de viewmode laat zetten.
dus bij.
<?php
if( isset( $_GET['cmd'] ) AND $_GET['cmd'] == 'edit' )
{
// zet de viewmode uit
// toon cancel button
}
else
{
// zet viewmode aan
// toon edit button, deze heeft iets als ?cmd=edit&id=n
// toon toevoeg button deze heeft iets als ?cmd=edit
Hoe knoop ik dan deze commando's (bijv "?msg=edit") aan de submit button. Want deze voert de action uit die in formhandler is gespecificeerd en daar kan ik zonder javascript niet bij.
Ik ben er bijna.
Ik gebruik nu alleen gewone buttons en daarmee swicht het programma nu tussen de verschillende modi.
Ik heb alleen een probleem. De gewijzigde gegevens worden nu niet opgeslagen, blijkbaar heb ik toch een submit-button nodig.
Maar als ik daar javascript in de on-click plaats krijg ik allerlei onverklaarbare effecten en het java-script wordt niet uitgevoerd.
Ja, maar hoe regel ik dan dat met zo'n submit-button niet alleen de gegevens worden gevalideerd en opgeslagen en bij succes tegelijkertijd ook de modus wordt omgezet?
Als ik een onclick methode toevoeg gaat hij die uitvoeren en worden er geen gegevens gevalideerd en opgeslagen.
, maar dat gaat niet werken, omdat ik de form van FormHandler via een "include" heb opgenomen in een div-element. Dus er is al uitvoer naar de browser gegenereerd en de functie header werkt dan niet meer.
Kan ik ook een "hidden" variabele meegeven in het $data array, die niet wordt opgeslagen in de database?
Of zijn er nog andere mogelijkheden om dit aan het werk te krijgen?
Changed at 15 March 09 / 14:46
Hallo Johan,
Ik heb het nu aan de praat en het ziet er fantastisch uit.
Maar omdat ik het form in een div heb geplaatst in een groter scherm met een hoop andere info wordt de form en de onclick van de button pas verwerkt/gevalideerd/opgeslagen enz als een deel van het scherm al naar de browser is gestuurd. Dat betekent dat in bijna alle gevallen er een complete refresh van het hele scherm (via javascript in de doRun) moet plaatsvinden.
Ik heb bedacht dat dit ook zou moeten kunnen met Ajax (evt samen met jQuery of Prototype), die alleen de formdata via een post naar de betreffende include (met formhandler) stuurt, die de betreffende div aanmaakt en deze genereert dan de gewenste info (een complete nieuwe form) die door het javascript clientside weer in de div wordt geplaatst.
Daarmee wordt de hele applicatie een stuk sneller.
Hebben jullie hiermee ervaring en eventueel voorbeelden van?
Heb ik het trouwens goed begrepen dat de AjaxValidator niet werkt in combinatie met de dbFormHandler of heb ik iets over het hoofd gezien (zeer waarschijnlijk)?
Eigenlijk zou ik hier een nieuw topic van moeten maken.