Hoe pak ik de volgende workflow het beste aan ?
ben nog niet zo lang bezig met PHP, maar heb ondertussen een vrij grote tool gemaakt in PHP. Het feit nagelaten dat de code waarschijnlijk zeer veel kan geoptimaliseerd worden, zou ik graag weten hoe ik het volgende probleem het beste kan aanpakken :
1. Ik heb een pagina "nieuwe offerte" waarin ik een aantal globale gegevens van de offerte ingeef. Als ik submit, dan springt hij naar een nieuwe pagina waarin ik voor 1 groot object te bouwen een heleboel gegevens ingeef.
2. Als ik die tweede pagina submit, dan krijg ik een lange berekeningspagina. Alle binnenkomende POST gegevens, gaan in een class. Als ik op deze pagina akkoord ga met de berekening, wil ik via een button "akkoord en verder gaan" de gegevens van de tweede pagina opslaan in een database om deze later in de offerte opnieuw op te kunnen roepen en te gebruiken.
Dus eigenlijk als volgt :
pagina nieuwe_offerte.php -> Submit -> bouwobject.php -> Submit -> berekenobject.php -> Submit -> Opslaan van de gegevens op pagina bouwobject.php
Natuurlijk heb ik in de pagina "berekenobject.php" niet meer de originele gegevens die op de pagina bouwobject.php zijn ingegeven. Ze zijn,weliswaar met veel extra overheid berekeningen, in de class bijgehouden.
Hoe pak ik dit nu programmatorisch het beste aan om de gegevens van de pagina "bouwobject.php" bij te houden voor latere aanpassingen en hergebruik ?
Een gebruiker zou, als hij niet akkoord gaat met de berekening, moeten kunnen teruggaan van de pagina "berekenobject.php" naar de pagina "bouwobject.php".
Alvast bedankt voor enige tip of hint of volledige hulp !
Vriendelijke groeten,
Davy
tab 1: nieuwe_offerte.php
-> submit (controleren of gegevens kloppen en gegevens in een sessie plaatsen)
tab 2: bouwobject.php
-> submit (controleren of gegevens kloppen en gegevens in een sessie plaatsen)
tab 3: berekenobject.php
-> submit (controleren of gegevens kloppen en gegevens in een sessie plaatsen)
-> vervolgens opslaan naar de database.
Ik weet niet of mijn mede phphulpers dit op dezelfde manier zouden doen. Maar het voordeel wat ik hierin zie is dat als er fouten tussentijds worden geconstateerd de andere gegevens in sessies staan. Er direct wordt gecontroleerd of gegevens kloppen. Als er aan het eind wat fout gaat om het in de database te stoppen de gegevens nog in een sessie staan. En dat als iemand na tab 2 bedenkt niet verder te gaan er geen ongebruikte gegevens in je database staan.
2) Of je plaatst de gegevens in een session (waarbij je wel even moet nadenken over de situatie waarin 1 gebruiker met meerdere formulieren tegelijkertijd bezig kan zijn).
3) Of je serialized het object waarin je de gegevens hebt staan en plaatst dat object in de sessie. Dan houd je dus ook alle tussentijdse gegevens. (zelfde session opmerking als hierboven overigens)
4) je slaat alles direct in de database op na elk form. Dan krijg je alleen een eventueel probleem als iemand halverwege moet kunnen cancelen en je dus een bepaalde situatie moet kunnen terugdraaien.
bedankt.
Als je met tabjes werkt, blijven de gegevens dan vanzelf in een sessie, of is het nog alsof je van pagina wisselt ?
De gebruiker zou best niet met meerdere formulieren bezig zijn. Kan wel zijn dat een andere gebruiker op hetzelfde moment dezelfde form aanmaakt, maar die niks met de andere te maken heeft.
Een "sessie" lijkt me een goed idee, maar het gaat over 45 velden die zouden moeten bijgehouden worden.
Ik heb de class al met serialize bewerkt, dat blijkt te werken, maar in de class zitten veel overbodige zaken die ik niet in de database nodig heb. En ik weet niet of je van een pagina met velden een serialize kan doen ?
Opslaan bij elke form maakt het volgens mij nog moeilijker want dan moet je altijd weten of je in een bestaande form zit of niet.
Groetjes,
Davy
Davy Carmans op 05/08/2013 21:03:48:
Als je met tabjes werkt, blijven de gegevens dan vanzelf in een sessie, of is het nog alsof je van pagina wisselt ?
Nee de gegevens in een sessie opslaan doe je op de server. je zult altijd de gegevens die de gebruikers invoeren in hun browser eerst naar de server toe moeten halen, of het nu is om ze in een sessie op te slaan of in de database dat maakt niet uit. Overigens kun je tabs maken van snelkoppelingen die naar een andere pagina wijzen of van elementen waar javascript op reageert en zodoende een deel van de html verbergt en een ander deel zichtbaar maakt. op die laatste manier staat alles op één pagina. je kunt het dan zo maken dat er helemaal niets naar de server wordt verstuurd maar dat alles door javascript berekent wordt. of je kan het zo maken dat alles pas bij de laatste tab in één keer naar de server gestuurd wordt. Legio mogelijkheden dus.
Besef wel dat alles wat (nog) niet naar de server verstuurd is en in de database is opgeslagen weg is als de browser per ongeluk wordt afgesloten.
Leg jezelf eerst de vraag voor wat er in database moet en wat niet. en vraag je af of de gebruiker de gegevens later moet kunnen wijzigen. of misschien een deel van het formulier voor een ander project hergebruikt kan worden.
Gewijzigd op 06/08/2013 00:31:40 door Frank Nietbelangrijk
ik was idd vergeten te werken met SESSIE variabelen. Ik had het voordien al eens gebruikt, maar nu komen ze me echt van pas. Ik ga het systeem aanpassen zodat ik via die sessie variabelen ook pagina's kan hergebruiken.
Vriendelijk bedankt om me in de goede richting te sturen !
Davy