ik heb ooit een keer een heel mooi boekhoudscript gemaakt en deze moet nu een beetje aangepast worden
eigelijk heel veel

het is van jaren allemaal hardcoded in elkaar gezet en eigenlijk bijna geen gebruik van functies

ik heb dus op heel veel paginas 1 en dezelfde code staan die eigenlijk gewoon in een functie zouden moeten

maar op 1 of andere manier weet ik niet meer hoe ik meerdere outputs krijg

input is datum, accountid, userid

output is een hele waslijst
die ik dus individueel moet kunnen opvragen indien dit zou kunnen met een functie
ik zal hier ff een voorbeeld geven van 1 van de codes die er nu in staan





$sqldranken = "SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id_user='$userid' AND soort='dranken' AND invoer_over='$datum' ORDER BY id ASC";
$resultaatdranken = $db->sql_query($sqldranken) or die(mysqli_error());
							

$eindtotaaldrankenbtwlaagafgerond = '0';
$eindtotaaldrankenbtwhoogafgerond = '0';

while($omzetdranken = mysqli_fetch_assoc($resultaatdranken)){
$btwsoort = ''.$omzetdranken['btwhoogte'].'';	
															
if($btwsoort == btwlaag) {
$omzetdrankenbtwlaag = mysqli_fetch_array($db->sql_query("SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id='$omzetdranken[id]' AND id_dame='$userid' AND soort='dranken' AND btwhoogte='btwlaag' AND invoer_over='$datum';"));

$totaaldrankenbtwlaagafgerond = $omzetdrankenbtwlaag[aantal] * $omzetdrankenbtwlaag[bedrag];												$totaaldrankenbtwhoogafgerond = '0';
												
}
elseif($btwsoort == btwhoog) {
$omzetdrankenbtwhoog = mysqli_fetch_array($db->sql_query("SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id='$omzetdranken[id]' AND id_dame='$userid' AND soort='dranken' AND btwhoogte='btwhoog' AND invoer_over='$datum';"));

$totaaldrankenbtwhoogafgerond = $omzetdrankenbtwhoog[aantal] * $omzetdrankenbtwhoog[bedrag];
$totaaldrankenbtwlaagafgerond = '0';
}
else {
$totaaldrankenbtwlaagafgerond = '0';
$totaaldrankenbtwhoogafgerond = '0';
		
}

$eindtotaaldrankenbtwlaagafgerond = $eindtotaaldrankenbtwlaagafgerond + $totaaldrankenbtwlaagafgerond;
$eindtotaaldrankenbtwhoogafgerond = $eindtotaaldrankenbtwhoogafgerond + $totaaldrankenbtwhoogafgerond;							
}




dit is maar een klein stukje maar ik moet gewoon weer ff snappen hoe ik 2 outputs uit een functie krijg
of meerdere

:)

mag ook iets anders zijn als ik het maar op verschillende plekken kan gebruiken
Ikzelf heb ook een paar testdomeintjes aangeschaft, om een één-op-één kopie van mijn site te kunnen draaien.
- Ariën - op 15/03/2020 16:52:55

Ikzelf heb ook een paar testdomeintjes aangeschaft, om een één-op-één kopie van mijn site te kunnen draaien.


Ik gebruik gewoon subdomeinen voor elk project dus heb ik aan één domeinnaam genoeg.
Gegevens overzetten als al mogelijk, heeft geen zin
Database alleen al is meer dan 500mb
Er zitten heel veel beveiligingen in dit systeem vanwege boekhouding en AVG wet

Ik moet dus constant nieuwe info krijgen
Zeker met het deel dat ik nu dus herschrijf

Ik wil best indien je interesse hebt een keer ergens langskomen dan kan ik het je laten
Zien
Dan snap je wat ik bedoel en wat ik nodig hebt
Over wat voor beveiligingen hebben we het dan wel? En wat is het probleem met 500 mb? Dat dump je in een minuutje over. Een database in een testomgeving zal tevens behoorlijk kleiner zijn omdat deze praktisch bijna niet actief gebruikt wordt.

500 is ingepakt volgens mij, ik kan in iedergeval niet gewoon even een backup overzetten via bv phpmyadmin dan crashed de backup
Ik moet het altijd deeltje voor deeltje doen.
Ik heb gelukkig een hele goede acronis backup eraan gelinkt die dit automatisch doet

het gehele systeem checkt naar gegevens en naar datums, ontbreekt er een datum of een invoer dan wordt het gehele systeem autmatisch on-hold gezet tot ik het gefixt heb meestal fixed het systeem indien mogelijk zichzelf

en indien ik zelf dingen aanpas om dit tegen te gaan op een test omgeving dan kloppen de bedragen enz niet meer
(ja ik heb zoveel mogelijk zo gemaakt dat het script in meeste gevallen zichzelf kan herstellen)
ik kan dus niet een deeltje van mijn systeem appart trekken om er dan mee te werken in een test omgeving

ik moet dus in feiten snachts een gehele backup maken en overzetten naar een 2de domein

20+ paginas die hardcoded gelinkt staan aan de bestaande site aanpassen naar de nieuwe domein
minimaal 1 extra domein erbij voor een enventuele testklant
dit moet in sql toegevoegd worden

(allemaal veiligheids redenen)

en er moet iets geschreven worden die automatish de nieuwe invoeren die zijn gedaan in bestaande systeem doorstuurd naar de sql van de nieuwe omgeving

aangezien ik meestal simpele aanpassingen doe heeft dat in bijna alle gevallen geen zin of duurt te lang


enige goede manier om dit te doen in theorie
is een geheel nieuw systeem maken vanaf grond
deze helemaal tot in de puntjes uitwerken, hierbij gebruik maken van de nieuwste technieken
(die ik dus niet beheers )
dan vervolgens een script maken die de gehele oude database omzet en importeert naar nieuwe omgeving
dit moet hierna dus minimaal een week worden getest op heel veel eventuele errors en mogelijkheden

en als alles dan met de volle 100% perfect werkt omzetten naar systeem, dit moet gegarandeerd voor 8 uur perfect werken
klant mag hier niet veel tot niets van merken

dit is een dus bijna onmogelijke opgaven

om deze reden doe ik het dus ook stapje voor stapje op een live omgeving
hierdoor kan ik gebruik maken van bestaande gegevens zonder hiermee een fout te maken want de pagina die ik maak is afgeschermd van van klanten

hun zullen de fouten die ik maak dus niet zien

ps: mijn systeem gebruikt dynamische domeinnamen en subdomeinen, ze hebben dus geen fisieke map alle domeinene of subdomeinen gebruiken de zelfde map en files

alleen krijgen klanten wel een eigen style map zodat ik per klant een eigen design en mogelijkheden kan toevoegen

maar volgens mij dwalen we helemaal af van het geen dat ik zoek, en dat is meer kennis krijgen met het gebruik van bv functies

ik zal in mijn noob manier even uitleggen wat ik wil
ik heb 20 verschilende hele grote SQL SELECT delen met een while erin
soms zelfs een while in een while

we noemen dit even voor het gemak "scriptjes"

de output van all deze apparte scriptjes worden op meer dan 20 paginas gebruikt
deze scriptjes heb ik vanwege domheid en niet logies nadenken op al die paginas appart geschreven

waarom.... omdat op 1 of andere manier het anders niet snel genoeg goed werkte
en moest het als nood dus knippen en plakken en een beetje tweaken zodat het wel goed was

elk van deze paginas heeft een eigen cache aanmaak script die alle outputs per dag per gebruiker in een cache file toevoegt

in deze cachefile worden meer dan 100 verschillende variabelen opgeslagen die dus zijn berekent via deze scriptjes

elke pagina check vooraf of er een cachefile is, zoja pakt hij cachefile
zoniet dan gaat het script rekenen, en maakt zelf deze variabelen aan, welke gelijk weer worden opgeslagen in een cache zodat het niet een 2dekeer hoeft

ik kan dus zonder problemen gehele cache legen want systeem repareert zichzelf

is het allemaal 1 groot zooitje .... JA
werkt het ... JA

echter nu ik een aantal dingen wil uitbreiden loop ik tegen bomen aan in mijn bos
reden, ik heb teveel verschillende plekken met verschillende scriptjes die eigelijk hetzelfde allemaal moeten doen

wat wil ik...
ik wil 1 script, functie of pagina of meerdere scripts, functies of paginas
die per gebruiker/dag gegevens opvraagt en daar een cache van maakt
dit script moet ook in een while of foreach gebruikt kunnen worden
per dag,maand,jaar, gebruiker enz enz

de gegevens moeten van alle while of foreach optelbaar zijn en berekenbaar (om deze reden dus 100 variabelen)
en in geval er niks is automatisch 0 terug geeft

de berekeningen moeten op de cent nauwkeurig kloppen

enz enz







Sylvester vader op 16/03/2020 01:08:43

500 is ingepakt volgens mij, ik kan in iedergeval niet gewoon even een backup overzetten via bv phpmyadmin dan crashed de backup.

Ik moet het altijd deeltje voor deeltje doen.


Zulks doe je dan via de CLI. PuTTY via SSH. En je hebt geen enkele (PHP-)limiet en het gaat veel sneller!!!


en indien ik zelf dingen aanpas om dit tegen te gaan op een test omgeving dan kloppen de bedragen enz niet meer
(ja ik heb zoveel mogelijk zo gemaakt dat het script in meeste gevallen zichzelf kan herstellen)
ik kan dus niet een deeltje van mijn systeem appart trekken om er dan mee te werken in een test omgeving

Dan houd het het toch zo? Ik zou dan minimaal de namen even fictief maken, en eventueel wat records wissen voor een minimale werkende test-database.



enige goede manier om dit te doen in theorie
is een geheel nieuw systeem maken vanaf grond
deze helemaal tot in de puntjes uitwerken, hierbij gebruik maken van de nieuwste technieken
(die ik dus niet beheers )
dan vervolgens een script maken die de gehele oude database omzet en importeert naar nieuwe omgeving
dit moet hierna dus minimaal een week worden getest op heel veel eventuele errors en mogelijkheden.

Zorg dus voor een goed verdienmodel en dat je iemand in kan huren.


en als alles dan met de volle 100% perfect werkt omzetten naar systeem, dit moet gegarandeerd voor 8 uur perfect werken
klant mag hier niet veel tot niets van merken

dit is een dus bijna onmogelijke opgaven

Kwestie van testen, en alle zeilen bijzetten.


om deze reden doe ik het dus ook stapje voor stapje op een live omgeving
hierdoor kan ik gebruik maken van bestaande gegevens zonder hiermee een fout te maken want de pagina die ik maak is afgeschermd van van klanten

hun zullen de fouten die ik maak dus niet zien

Dus is het een testomgeving? In Live hoor je NOOIT te ontwikkelen!!!!!
haha ja het is een test omgeving in een live omgeving ik hoef met dit alleen maar cache aan te maken van de all bestaande
gegevens en deze hierna te gebruiken

en de gehele cache map heb ik voor deze test pagina tijderlijk aangepast
maar ik gebruik dus wel de live gegevens van mijn klanten om te testen
Na alles wat ik heb kunnen lezen lijkt het dus tijd voor een goed MVC-model, gebaseerd op een framework, denkende aan Symfony, Laravel of CakePHP, om maar wat op te noemen. Het heeft een leercurve, maar het gebruik ervan verdient zich zeker terug.
aaaaaaaa geen bestaande troep aub (sorry dat ik dat troep noem)
al moet ik toegeven dat veel van die scripts enz best goed eruit zien

ik heb in het verleden naar heel veel mogelijkheden gezocht maar kon nooit iets vinden dat bij mij paste
vaak kon net hetgene niet, dat ik zocht en moest ik evengoed dus zelf iets ernaast schrijven dat dan weer samenwerkte met het bestaande model
dus had ik jaren al besloten om geheel van grond zelf iets te maken, dit script is in 8 jaar tijd heel erg gegroeid
en heeft precies alles dat ik nodig heb
alleen is het meeste dus hardcoded erin gescript en is het 1 grote wirwar
maaaaaaaaar het werkt.!!!

daarnaast is het zo dat ik veel met persoonsgegevens bezig ben en uit ervaring merk ik dat bestaande dingen, het eerste is dat gehacked wordt of een poging tot.

Omdat online staat precies hoe het gehele model in elkaar zit en hoe het dus misschien gehacked kan worden

ik heb hier verder geen verstand van maar omdat ik er zelf dus geen controle op heb gebruik ik niks van andere

daarnaast heb ik geen tijd om mij volledig in zoiets te gaan verdiepen


Sylvester vader op 16/03/2020 12:58:05

aaaaaaaa geen bestaande troep aub (sorry dat ik dat troep noem)
al moet ik toegeven dat veel van die scripts enz best goed eruit zien

Dus je vindt liever het wiel opnieuw uit, terwijl grote sites zoals Tweakers, en hoogstwaarschijnlijk ook veel andere grote sites, ook een bestaand framework gebruiken? Je schiet naar mijn idee welk een beetje in de paniekstand, heb ik het idee. ;-)

ik heb in het verleden naar heel veel mogelijkheden gezocht maar kon nooit iets vinden dat bij mij paste
vaak kon net hetgene niet, dat ik zocht en moest ik evengoed dus zelf iets ernaast schrijven dat dan weer samenwerkte met het bestaande model.

Dat ga je niet snel vinden. Je kan ook je oude code in je framework gebruiken, een deze steeds verder optimaliseren.

Als voorbeeld: Tweakers is vrij 'open' over de implementatie van het Symfony Framework in hun codebase, en in hun iteratie-artikelen geven ze een kijkje in de keuken over hoe zij hun oude code overhevelen naar de MVC-structuur van Symfony. Lees vooral vanaf
https://tweakers.net/plan/600/development-round-up-iteratie-8.html een de daaropvolgende 'iteratie' artikelen.


dus had ik jaren al besloten om geheel van grond zelf iets te maken, dit script is in 8 jaar tijd heel erg gegroeid
en heeft precies alles dat ik nodig heb
alleen is het meeste dus hardcoded erin gescript en is het 1 grote wirwar
maaaaaaaaar het werkt.!!!

Maar onderhoud is nu vast zeer tijdrovend.


daarnaast is het zo dat ik veel met persoonsgegevens bezig ben en uit ervaring merk ik dat bestaande dingen, het eerste is dat gehacked wordt of een poging tot.

Omdat online staat precies hoe het gehele model in elkaar zit en hoe het dus misschien gehacked kan worden.

ik heb hier verder geen verstand van maar omdat ik er zelf dus geen controle op heb gebruik ik niks van andere

daarnaast heb ik geen tijd om mij volledig in zoiets te gaan verdiepen


Als je niemand vertrouwd, dan kom je niet ver. Zorg in ieder geval voor externe audits.

Reageren