Logische hulp nodig voor "next step"
ooit leerde ik wat werken met PHP waardoor ik onlangs besloot om een project te aanvaarden voor een vriend.
Het project gaat over het ontwikkelen van een tool om een hoop berekeningen te maken gebaseerd op een hele hoop variabelen en voorwaarden.
Helaas heb ik het geheel serieus onderschat, waardoor ik op dit moment een beetje vast zit in de ontwikkeling. Op dit moment ben ik vooreerst op zoek naar wat logische hulp over wat ik nodig heb om verder te gaan na het stuk dat ik al geschreven heb.
Het is moeilijk om goed in detail te beschrijven, maar ik probeer het toch :
1. De gebruiker kan op dit moment verschillende zaken (materialen, soorten, prijzen,...) aanmaken, openen, editeren,... Alles zit al in tabellen.
2. Op het moment dat alle data is ingegeven, openen ze een "start berekening" pagina.
3. Op deze pagina, kiezen ze eerst 1 soort/type van berekening die ze willen maken.
4. Gebaseerd op die selectie wordt een nieuwe pagina geopend waarop alle mogelijke combinaties getoond worden die bij de vorige selectie gemaakt werd. Deze data komt uit een tabel en toont de naam en een numeriek veld (met spinners voor meer en minder).
5. De gebruiker kan nu de numerieke velden aanpassen (minder/meer), items toevoegen aan de lijst of items verwijderen uit de lijst. Alles wordt via een soort "cart" bijgehouden via $_SESSION variables.
Tot hier gaat het nog vrij goed. Maar nu ben ik vast geraakt :
6. Eens alle items zijn geselecteerd, zou er een volgend scherm moeten komen die alle geselecteerde items toont maar met een hele hoop extra gegevens voor dat item die op dat moment uit de tabel worden gehaald. Hier moet de gebruiker extra data kunnen kiezen : bv materiaal van het item (uit een andere tabel), maten (hoogte/breedte), aantallen, checkboxes,... Nadat dit allemaal is gebeurd, zouden ze in een routine moeten komen die gebaseerd op die velden een hele hoop berekeningen gaat maken die dan in een volgend scherm getoond moeten worden.
Waarom zit ik vast ? Omdat ik niet goed weet wat de beste manier is om verder te gaan vanaf stap 6.
* Moet ik blijven werken met een "cart" ? Zo ja, hoe kan ik daar het makkelijkst alle extra data aan toevoegen ?
* Moet ik gaan werken met classes ?
* Of alle data eerst uit de tabel gaan halen en in objecten steken ?
* Of misschien nog een andere (betere) manier ?
Ik zit echt vast omdat ik de volgende stap niet snap. Ik hoopte er op om hier wat hulp te vinden. En niet geprobeerd is altijd mis ! :-)
Ik zou zeer dankbaar zijn als ik het probleem met iemand in detail zou kunnen bespreken. Of elke tip is ook welkom. Of gewoon een goede schouderklop kan ook helpen... :-)
Alvast bedankt bij voorbaat !
Vriendelijke groeten,
Davy
Niemand die tijd/zin heeft om me wat verder te helpen ?
Davy Carmans op 03/05/2013 08:41:14:
Helaas heb ik het geheel serieus onderschat, waardoor ik op dit moment een beetje vast zit in de ontwikkeling. Op dit moment ben ik vooreerst op zoek naar wat logische hulp over wat ik nodig heb om verder te gaan na het stuk dat ik al geschreven heb.
....
1. De gebruiker kan op dit moment verschillende zaken (materialen, soorten, prijzen,...) aanmaken, openen, editeren,... Alles zit al in tabellen.
....
1. De gebruiker kan op dit moment verschillende zaken (materialen, soorten, prijzen,...) aanmaken, openen, editeren,... Alles zit al in tabellen.
Met andere woorden, 'je hebt maar iets gebouwd'. Als je halverwege vastzit en niet meer weet hoe je verder moet dan ben je gewoon verkeerd begonnen. Je hebt niet alles in kaart gebracht, geen goede structuur bedacht en geen goed ontwerp. Je kan geen datastructuur opzetten als je niet weet wat je ermee wilt gaan doen, als je niet weet hoe je het uiteindelijk weer op moet halen en bewerken. Dan is alles wat je nu doet plijsters plakken.
Enige juiste advies wat mij betreft: gooi weg wat je hebt en begin opnieuw, maar dan wel met een goed uitgewerkt ontwerp.
Een goed begin is het halve werk. Een goed begin bij een applicatie realiseren is het ontwerpen ervan. Alles moet van tevoren op papier hoe en wat. Als je lukraak begint met het schrijven van een applicatie kom je later in de problemen te zitten over hoe je een bepaald iets wilde doen.
Hetgeen jullie schrijven is niet helemaal waar.
Ik ben wel degelijk gestart met een goede analyse van het probleem en heb heel wat dingen op papier staan.
Het probleem waar ik tegenaan loop, is technisch. Nl dat ik niet goed weet hoe ik technisch een bepaald stuk van het probleem nu kan oplossen. Het probleem is bekend, de uitwerking (nog) niet.
Ik zie de verschillende oplossingen al voor me, alleen is de PHP kennis niet genoeg op dit moment om ze daadwerkelijk in code om te zetten.
Dat is al een heel andere insteek dan jullie beschrijven !
Vriendelijke groeten,
Davy
Je kan hier denk ik het beste werken met SESSIES, alle items die je hebt geselecteerd in de vorige pagina gooi je in een sessie en deze haal je weer op in de volgende pagina voor elk sessie haal je tevens op welke materialen er toegevoegd kunnen worden. Nu vraag ik me wel af. heb je een goed genormaliseerde database?
Op dit moment doe ik het idd via een Sessie. Maar op een moment komen er zoveel gegevens op je af, dat ik het beter zou willen samenvoegen en eventueel ook al opslaan als tijdelijk item zodat er niks verloren kan gaan.
Volgens mij zijn de tabellen op dit moment al goed genormaliseerd. Er zijn verwijzingen en geen dubbele data.
Davy Carmans op 07/05/2013 09:58:46:
Het probleem waar ik tegenaan loop, is technisch. Nl dat ik niet goed weet hoe ik technisch een bepaald stuk van het probleem nu kan oplossen. Het probleem is bekend, de uitwerking (nog) niet.
Dan heb je dus nog steeds een ontwerp probleem. Dit probleem had je moeten tackelen in de ontwerp fase, niet als je de helft al gebouwd hebt. Even terug naar je eerste post:
Davy Carmans op 03/05/2013 08:41:14:
Waarom zit ik vast ? Omdat ik niet goed weet wat de beste manier is om verder te gaan vanaf stap 6.
* Moet ik blijven werken met een "cart" ? Zo ja, hoe kan ik daar het makkelijkst alle extra data aan toevoegen ?
* Moet ik gaan werken met classes ?
* Of alle data eerst uit de tabel gaan halen en in objecten steken ?
* Of misschien nog een andere (betere) manier ?
* Moet ik blijven werken met een "cart" ? Zo ja, hoe kan ik daar het makkelijkst alle extra data aan toevoegen ?
* Moet ik gaan werken met classes ?
* Of alle data eerst uit de tabel gaan halen en in objecten steken ?
* Of misschien nog een andere (betere) manier ?
Dit zijn geen vragen die je halfverwege stelt. Je gaat niet halverwege over naar het gebruikern van classes. Dat doe je, of doe je niet.
Het probleem wat je hebt is een 'strategisch' probleem, niet een 'tactisch' probleem. Mijn eerdere advies is nog steeds het beste advies dat ik je kan geven. Hoe langer je blijft doormodderen, hoe erger het probleem gaat worden.
Maar dan nog blijf ik met dezelfde vraag zitten, zelfs al zou ik opnieuw beginnen.
Ik heb het idee dat je nu enorme lappen code hebt gemaakt die activiteiten die je op andere plaatsen ook al doet. Het is dus niet generiek (is overigens ook best lastig). Misschien is het voor die dingen handig om functies te schrijven en aan te roepen.
Verder zou je inderdaad het beste kunnen werken met sessies of cookies (let op: sessie verlopen bij sluiten van de browser, cookies niet (maar daar zit weer een wet aan vast)).
Wat bij mij nog wel eens helpt als ik zo vast zit is een tekening te maken. Klinkt heel onprofessioneel, maar gewoon een A4'tje (of indien een hele grote applicatie A3, etc..). En te tekenen welke velden ik wil onthouden en wat mee wil gaan doen. Bij bedrijven maak je vaak voor dat je een website maakt een functioneel en technisch ontwerp. Vaak doen mensen dit niet als het een 'projectje' is, vaak loop je daardoor vast omdat je geen referentie materiaal hebt hoe je iets wilt hebben.
In het bedrijfsleven gebeurd er nog wel eens dit (bij velen hier op het forum wel bekend). Maar uiteindelijk is het ook als je zelf iets maakt een heel mooi beeld in een gedachte, maar de uitvoering is altijd iets anders. En dan moet ik toch altijd weer denken aan dat plaatje. Daarom teken en documenteer ik altijd alles.
ook al voel ik me niet direct heel goed met de antwoorden hierboven, toch wil ik graag ook met negatieve kritiek aan de slag. En dus ben ik alvast begonnen mijn documentatie op orde te brengen. Meestal doe je dat éénmaal en wordt het daarna nooit meer bekeken.
Sowieso heeft dit op "orde brengen" me alvast een geniale ingeving bezorgd in het nog extra optimaliseren van de databases. Waarvoor reeds dank om me er op te focussen.
Anyway, qua code, tja, het zijn al een heleboel pagina's. Dus één stukje code kiezen is niet veel waard. Misschien kan ik op één of andere manier het hele project delen, maar ik zal eerst uitzoeken hoe ik dit het beste doe.
Vriendelijke groeten,
Davy