meerdere variabelen uit 1 functie halen (noob vraag)
Pagina: « vorige 1 2 3 4 5 6 volgende »
Ivo P op 17/03/2020 13:53:36:
normaal kan een database rekenen, maar aangezien jij TEXT als kolomtype voor zo'n beetje alles hebt gebruikt.....
"Aantal" is een getal. Meestal een geheel getal. 1, 4, 100 of 65000
INTEGER is dan de aangewezen kolomsoort.
Aantal + 1 zou dan 2, 5, 101 of 65001 opleveren.
In jouw geval kun je zo'n 65000 tekens kwijt in de kolom Aantal.
Dus jouw database kan in Aantal opslaan "een stuk of vijf, maar het kunnen er ook 12 zijn"
Omdat je database er nu vanuit gaat dat het een string is, kan hij er niet meer mee rekenen.
Dat is: tekentafel.
Bouw een database op op basis van wat je er in nodig hebt.
Niet "TEXT" want dan werkt mijn insert-query.
Een database is de basis van je applicatie. Het is geen kladpapier.
Ik heb een opdracht gedaan bij een bedrijf waar ze echt van alles doen aan misbruik met de database "omdat het kan".
Zoals een * voor de naam om aan te gevan dat klant overleden is.
of een # erachter dat er een aflever opmerking is.
En je wilt niet weten wat voor ellende dat is na een paar jaar bagger in de db gooien. Daar komt geen fatsoenlijke rapportage meer uit.
Dus denk goed na over je database
dan pas over de query's en de code.
Nu heb je zogenaamd bewezen dat je beter bent dan de belastingdienst.
Maar dit gaat over een tijdje omvallen als er te veel data in gaat komen.
Toevoeging op 17/03/2020 13:56:59:
Je wilt hier je hele loonaangifte meer gaan regelen?
Dit topic klinkt steeds enger.
"Aantal" is een getal. Meestal een geheel getal. 1, 4, 100 of 65000
INTEGER is dan de aangewezen kolomsoort.
Aantal + 1 zou dan 2, 5, 101 of 65001 opleveren.
In jouw geval kun je zo'n 65000 tekens kwijt in de kolom Aantal.
Dus jouw database kan in Aantal opslaan "een stuk of vijf, maar het kunnen er ook 12 zijn"
Omdat je database er nu vanuit gaat dat het een string is, kan hij er niet meer mee rekenen.
Dat is: tekentafel.
Bouw een database op op basis van wat je er in nodig hebt.
Niet "TEXT" want dan werkt mijn insert-query.
Een database is de basis van je applicatie. Het is geen kladpapier.
Ik heb een opdracht gedaan bij een bedrijf waar ze echt van alles doen aan misbruik met de database "omdat het kan".
Zoals een * voor de naam om aan te gevan dat klant overleden is.
of een # erachter dat er een aflever opmerking is.
En je wilt niet weten wat voor ellende dat is na een paar jaar bagger in de db gooien. Daar komt geen fatsoenlijke rapportage meer uit.
Dus denk goed na over je database
dan pas over de query's en de code.
Nu heb je zogenaamd bewezen dat je beter bent dan de belastingdienst.
Maar dit gaat over een tijdje omvallen als er te veel data in gaat komen.
Toevoeging op 17/03/2020 13:56:59:
Je wilt hier je hele loonaangifte meer gaan regelen?
Dit topic klinkt steeds enger.
die text delen moeten inderdaad nog allemaal aangepast het is ooit allemaal met knip en plakwerk bijelkaar gekomen en er ziten nog heel veel dingen in die anders moeten
is mijn systeem perfect nee
is het goedgekeurd door belastingdienst ja
zijn alle bedragen nauwkerig ja
is aan alles gedacht kwa info naar visueel deel van een pagina ja
is het script een chaotisch geval ja
werkt het heel snel ja
worden hiermee loonaangiftes gedaan ja
wordt hiermee omzet en andere belasting aangiftes gedaan ja
heb je als je mijn systeem gebruikt een boekhouder nodig, nee
(echter raad ik dit wel altijd aan omdat ikzelf ook niet alles kan kwa potjes enz waar je recht op hebt)
wat ik nu dus probeer te doen is de achtergrond van de uitvoering aan te passen zodat alles nog beter en sneller werkt
en meer belangrijk, zodat het voor mij overzichterlijker is en voor eventuele scripters die ik in toekomst misschien kan inhuren enz
Het zal een groot project worden, maar dat verdient zich zeker terug. Met name in tijd, maar ook qua kosten....
Maar ik neem aan dat dat een bedrijf altijd een buffer heeft voor extra onverwachte kosten. Maar die discussie lijkt mij nu wel duidelijk ;-)
Gewijzigd op 17/03/2020 14:48:06 door - Ariën -
daar zit dus ook mijn probleem anders het ik wel iemand daarvan ingehuurd:)
ik ga mij zeker in toekomst meer verdiepen in een mvc model maar dit moet helaas nog even op zich wachten
, maar om even terug te komen op mijn testjes kwa functies enzo
ik heb net iets gemaakt dat werkt :)
maar of het goed is weet ik niet dus plaats ik het hieronder
graag hoor ik wat tips of kritiek :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function berekening_bemiddeling($datum,$accountid,$userid)
{
global $db, $accountid;
$sqlbemiddeling = "SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id_user='$userid' AND soort='tarieven' AND deel_dame <1 AND invoer_over='$datum' ORDER BY omschrijving DESC";
$resultaatbemiddeling = $db->sql_query($sqlbemiddeling) or die(mysqli_error());
$eindtotaalbemiddelingafgerond = '0';
$eindtotaalbemiddelingbtwafgerond = '0';
$eindtotaalbemiddelingexbtwafgerond = '0';
$eindtotaalminutenbemiddeling = '0';
while($omzetbemiddeling = mysqli_fetch_assoc($resultaatbemiddeling))
{
$btw = mysqli_fetch_array($db->sql_query("SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id_user='$userid' AND soort='belastingen' AND invoer_over='$datum';"));
$totaalbtwbemiddeling = $btw[btwhoog] + 100;
$minutenbemiddeling = $omzetbemiddeling[aantal] * $omzetbemiddeling[omschrijving];
//////////////////aangepast op 29-07-2018/////////////
$totaalbemiddelingafgerond = $omzetbemiddeling[aantal] * $omzetbemiddeling[bedrag];
$btwtotaalbemiddeling = $totaalbemiddelingafgerond / $totaalbtwbemiddeling * $btw[btwhoog];
$btwtotaalbemiddeling_3cijfers = round($btwtotaalbemiddeling, 3);
$btwtotaalbemiddelingafgerond = round($btwtotaalbemiddeling_3cijfers, 2);
//eind btw berekinging bemiddeling
$extotaalbemiddelingafgerond = $totaalbemiddelingafgerond - $btwtotaalbemiddelingafgerond;
$eindtotaalbemiddelingafgerond = $eindtotaalbemiddelingafgerond + $totaalbemiddelingafgerond;
$eindtotaalbemiddelingbtwafgerond = $eindtotaalbemiddelingbtwafgerond + $btwtotaalbemiddelingafgerond;
$eindtotaalbemiddelingexbtwafgerond = $eindtotaalbemiddelingexbtwafgerond + $extotaalbemiddelingafgerond;
$eindtotaalminutenbemiddeling = $eindtotaalminutenbemiddeling + $minutenbemiddeling;
}
$totalenbemiddeling = [
"eindtotaalbemiddelingafgerond" => $eindtotaalbemiddelingafgerond,
"eindtotaalbemiddelingbtwafgerond" => $eindtotaalbemiddelingbtwafgerond,
"eindtotaalbemiddelingexbtwafgerond" => $eindtotaalbemiddelingexbtwafgerond,
"eindtotaalminutenbemiddeling" => $eindtotaalminutenbemiddeling
];
return $totalenbemiddeling;
}
$datum = '2020-03-14';
$account = 43;
$userid = 37;
$bemiddeling = berekening_bemiddeling($datum,$account,$userid);
//print_r($dranken);
echo '-'.$bemiddeling['eindtotaalbemiddelingafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalbemiddelingbtwafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalbemiddelingexbtwafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalminutenbemiddeling'].'<br>';
{
global $db, $accountid;
$sqlbemiddeling = "SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id_user='$userid' AND soort='tarieven' AND deel_dame <1 AND invoer_over='$datum' ORDER BY omschrijving DESC";
$resultaatbemiddeling = $db->sql_query($sqlbemiddeling) or die(mysqli_error());
$eindtotaalbemiddelingafgerond = '0';
$eindtotaalbemiddelingbtwafgerond = '0';
$eindtotaalbemiddelingexbtwafgerond = '0';
$eindtotaalminutenbemiddeling = '0';
while($omzetbemiddeling = mysqli_fetch_assoc($resultaatbemiddeling))
{
$btw = mysqli_fetch_array($db->sql_query("SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id_user='$userid' AND soort='belastingen' AND invoer_over='$datum';"));
$totaalbtwbemiddeling = $btw[btwhoog] + 100;
$minutenbemiddeling = $omzetbemiddeling[aantal] * $omzetbemiddeling[omschrijving];
//////////////////aangepast op 29-07-2018/////////////
$totaalbemiddelingafgerond = $omzetbemiddeling[aantal] * $omzetbemiddeling[bedrag];
$btwtotaalbemiddeling = $totaalbemiddelingafgerond / $totaalbtwbemiddeling * $btw[btwhoog];
$btwtotaalbemiddeling_3cijfers = round($btwtotaalbemiddeling, 3);
$btwtotaalbemiddelingafgerond = round($btwtotaalbemiddeling_3cijfers, 2);
//eind btw berekinging bemiddeling
$extotaalbemiddelingafgerond = $totaalbemiddelingafgerond - $btwtotaalbemiddelingafgerond;
$eindtotaalbemiddelingafgerond = $eindtotaalbemiddelingafgerond + $totaalbemiddelingafgerond;
$eindtotaalbemiddelingbtwafgerond = $eindtotaalbemiddelingbtwafgerond + $btwtotaalbemiddelingafgerond;
$eindtotaalbemiddelingexbtwafgerond = $eindtotaalbemiddelingexbtwafgerond + $extotaalbemiddelingafgerond;
$eindtotaalminutenbemiddeling = $eindtotaalminutenbemiddeling + $minutenbemiddeling;
}
$totalenbemiddeling = [
"eindtotaalbemiddelingafgerond" => $eindtotaalbemiddelingafgerond,
"eindtotaalbemiddelingbtwafgerond" => $eindtotaalbemiddelingbtwafgerond,
"eindtotaalbemiddelingexbtwafgerond" => $eindtotaalbemiddelingexbtwafgerond,
"eindtotaalminutenbemiddeling" => $eindtotaalminutenbemiddeling
];
return $totalenbemiddeling;
}
$datum = '2020-03-14';
$account = 43;
$userid = 37;
$bemiddeling = berekening_bemiddeling($datum,$account,$userid);
//print_r($dranken);
echo '-'.$bemiddeling['eindtotaalbemiddelingafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalbemiddelingbtwafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalbemiddelingexbtwafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalminutenbemiddeling'].'<br>';
bedoeling is dus dat de functie straks in een functie pagina komt en deze wordt geinclude indien nodig
Zelf gebruik ik Moneybird, maar dat richt zich vooral op ZZP-ers en mist de salariscomponent volgens mij.
Er zijn zat andere te vinden
Maar dan heb je voor een paar tientjes per maand een pakket waar je niet hobbymatig uren aan moet besteden.
Want de belastingdienst heeft kennelijk ooit eens gezegd dat jouw pakket voldoet.
Maar na elke aanpassing van een functie, moet de controle eigenlijk opnieuw.
En zit elke wetsaanpassing ook in jouw pakket? Wat gebeurt er als de btw naar 22% gaat?
Zo'n pakket is duur vanwege de vele uren die erin zitten. Maar als een bedrijf partij zo'n pakket bouwt voor 1000 afnemers, dan verdeel je de kosten en is het per afnemer veel minder duur dan al jouw uren.
En al zegt de belastingdienst vandaag "aangifte is ok". Als ze je er volgend jaar uitpikken voor een grote controle en ze dan zeggen "oh nee, toch niet", dan betaal je mogelijk over x jaren aan loonheffing na.
En dat kan best eens duurder uitvallen.
Ja: boekhoudpakketje voor ZZP-er in elkaar klussen kan best. Bij 10 facturen per maand en een paar tankbonnetjes en dergelijke.
Nee: als het groot wordt, ga dan ook voor professioneel. Kosten voor een boekhoudpakket vallen best mee.
Het is deel van je bedrijfsvoering.
Een timmerman haalt de hamer ook niet uit de grabbelbak bij de Gamma of de kapper de scharen bij de Action.
Toevoeging op 17/03/2020 15:29:42:
"die text delen moeten inderdaad nog allemaal aangepast het is ooit allemaal met knip en plakwerk bijelkaar gekomen en er ziten nog heel veel dingen in die anders moeten"
Dat is bij zo veel topics op PHPhulp het geval.
Maar je database is het fundament.
Een kolom Aantal bevat geen tekst. Als jij er toch TEXT van maakt, dan zeg je eigenlijk al direct dat je de database niet functioneel wilt inzetten.
Ik gaf al eerder aan dat SELECT Aantal + 4 FROM tabel dus niet gaat.
Maar ook SELECT SUM(aantal) FROM tabel zal niet kunnen.
Dus al je rekenwerk ga je naar PHP halen. Zelfs het meest elementaire als "Tel even de omzet van alle dagen op"
Je bent nu al een eind op weg, waarbij je allerhande zaken hebt moeten doen om dergelijke gebreken van de database te omzeilen.
Waarschijnlijk ga je niet meer je functies nalopen, omdat je na het aanpassen van Aantal naar type Integer je ineens heel veel in de database kan doen.
En als je applicatie nu nog redelijk snel is: hoe werkt dat na 2 jaar administratie en 1 miljoen entry's?
Is php dan nog steeds snelgenoeg om
SELECT aantal FROM tabel WHERE YEAR(datum) = 2020;
op te tellen in een while lus?
klopt echter...!
mijn systeem heeft een geheel kassa pos systeem, agenda website en nog veeeeeeel meer
daarnaast werkt mijn systeem samen met een regeling genaamd opting-in
er bestaat hiervoor dus geen goed systeem
om deze reden ben ik ook goedgekeurd want ik heb iets gemaakt dat niet bestond en ook eigelijk bijna onmogelijk was te berekenen
ik heb met mijn systeem het tegendeel bewezen
daarnaast ben ik uitgebreider dan de meeste boekhoud softwares die er zijn en ook visueel veel mooier :)
en ik ben nog goedkoop omdat ik ook nog dingen erin heb die niet perfect zijn :(
En zit elke wetsaanpassing ook in jouw pakket? ..................
alle mogelijke aanpassingen van wetten en regels zitten ingebouwdt in mijn systeem
zelfs aow
werktijden wet
eventuele kortingen enz
alles maar dan ook alles zit erin, ik heb regelmatig gesprekken met belasting enz om het nog beter te maken
wat visueel gezien bijna niet kan
mijn systeem is op een halfe cent nauwkeurig
volgens de officeele 3 cijfers achter de komma regel van belastingdienst
En als je applicatie nu nog redelijk snel is: hoe werkt dat na 2 jaar administratie en 1 miljoen entry's?.............
mijn systeem moet 7 jaar bewaren van elke klant
in het ergste geval wordt er visueel maar 1 jaar opgevraagd van alles van een bedrijf
ik kom dus nooit hoger dan 500.000 tabelen
dit is in geval dat er geen cache aanwezig is nu ongeveer 30 seconden werk, om alle cache van elke dag per werknemer aan te maken en de uitkomst te tonen
indien cache er wel is duurt het 0,3 sec om te tonen
Gewijzigd op 17/03/2020 15:52:04 door sylvester vader
Ik kan me nu wel indenken waarom je overbodige caches aan het bouwen bent, als je echt extreem zware queries aan het draaien bent door je foute database-opzet. Nu kan het nog goed lopen, maar er komt ene moment dat je systeem plat kan gaan.
Als voorbeeld: Ik heb zelfs een voorbeeld gezien van een databaseopzet waarin er gekeken werd naar alle honderdtallen voor ID-nummers, die over meerdere tabellen verspreid werden. En daar stonden dus miljoenen records in. Uiteindelijk ging de site dus even plat toen die op verzoek alles moest doorlopen.
Als ik zo hoor moet je rekening houden dat je site elk moment zou kunnen omvallen, wat gevolgen kan hebben voor je klanten.
Stiekem ben ik wel benieuwd naar het geheugenverbruik nu....
Gewijzigd op 17/03/2020 16:29:01 door - Ariën -
gemiddeld 6 per werknemer per dag
er zijn ongeveer 15 mensen aanwezig
dus 15x365 x6 = 32.850
records waarmee gerekend wordt
alles is ingedekt kwa server plat, hoe gat ik nu allemaal niet uitleggen,
wel is het zo dat als mijn cache niet goed is ik dus heel veel rekenfouten heb.
dus zit er om die reden een kleine narekening in die een paar kleine tests uitvoeren
om het simpel te houden is dit de controle van het dubbel boekhouden
Credit en Debit moeten altijd op cent na hetzelfde zijn, ziet hier een verschil in dan wordt de gehele cache geleegd en opnieuw aangemaakt, tevens komt er een automatische notitie in mijn eigen logboek zodat ik kan kijken hoe en waarom die fout was ontstaan
daarnaast heb ik een uitgebreid backup systeem die alle invoeren van mijn pos systeem nauwkeurig per uur bijhoud en daar een backup van maakt in het aller ergste geval (hele server in de fik bv
dan mist de klant 1 uur van zijn invoeren
ik wil best voor degene die intresse hierin hebben een keer dit visueel ergens een keer te tonen
maar op dit moment ben ik bezig met het verbeteren van mijn wirwar mbt het tonen van gegevens en aanmaken van mijn cache
ik heb nu mijn eerste functie met meerdere outputs werkend, wat er al veel beter uitziet :D
de berekening wordt nu op een functies.php pagina gedaan in een functie en ik vraag deze op in een while loop wat volgens mij top draait
maar ik moet de rest nog gaan maken en testen dus hopen dat het allemaal lukt
Toevoeging op 17/03/2020 16:38:33:
ps: ik zal straks is even kijken wat ik aan geheugen verbruik
Als ik bijvoorbeeld naar de eerder geplaatste tabelstructuur kijk:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
CREATE TABLE `systeem_invoertotaal` (
`account` int(11) DEFAULT NULL,
`id` int(11) NOT NULL,
`id_user` int(11) DEFAULT NULL,
...
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
`account` int(11) DEFAULT NULL,
`id` int(11) NOT NULL,
`id_user` int(11) DEFAULT NULL,
...
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
En dan hebben we het (nog) niet (eens) over naamgeving of mogelijke koppeltabellen voor de ENUMs of wat dan ook.
De engine die wordt gebruikt is MyISAM. Dit houdt in dat het niet mogelijk is om echte koppelingen tussen tabellen te leggen (tenzij je dit via code probeert af te dwingen wat mij een heel slecht idee lijkt). Dit is dus geen echte relationele database - de tabellen in deze database hangen letterlijk als los zand aan elkaar. Wat je tot nu toe hebt beschreven klinkt sterk als een uitgebreid, en mogelijk ook complex, administratief systeem.
Bij applicaties waar het zeer belangrijk is dat alle informatie (onderling) klopt is een relationele database niet eens meer de gedoodverfde keuze, maar eigenlijk de énige keuze. Deze applicatie maakt echter gebruik van MyISAM, en niet van InnoDB, waar onderlinge relaties, databasetransacties et cetera wel mogelijk zijn, dit zijn voorzieningen die echt enorm belangrijk en enorm handig zijn om je data kloppend te houden.
Dus in zekere zin is wat mij betreft de database-opzet al letterlijk en figuurlijk fundamenteel verkeerd.
Okay, je hebt nu een werkende situatie en alles doet wat het zou moeten doen. Maar nu begint de schoen (toch echt) te wringen en komen de beperkingen van de huidige aanpak steeds duidelijker naar voren.
Mogelijk is de reden dat alles zo traag is is dat je misschien geen indexen hebt aangebracht op kolommen? Misschien heb je dit niet aangegeven in je CREATE TABLE statement, maar bestaan er ook queries in jouw systeem die andere tabellen aan systeem_invoertotaal koppelt met behulp van account of id_user? Als die kolommen namelijk niet geïndexeerd zijn (heeft systeem_invoertotaal uberhaupt een primaire sleutel?!) worden dat soort queries echt enorm traag...
Ook heb je nu al een aantal keren beschreven wat het systeem ongeveer doet. Als je dit nu eens wat verder uitwerkt dan heb je een complete functionele spec (volgens mij had ik dit al eens eerder voorgesteld?).
Dan is er nu al bijna twee pagina's een (sub)conversatie aan de gang over in feite arrays waarbij het onderscheid tussen:
en
Niet echt duidelijk lijkt.
Als een 'key' niet gedefinieerd is dan wordt een numerieke nummering aangehouden, startend op index 0, tenzij anders aangegeven. In het tweede geval bestaat $test['key'] (of $test['value'], for that matter) niet, maar is 'value' alleen bereikbaar via $test[0] (de waarde op element 0). Als je elementen wilt aanspreken via een (textuele) naam, dan zul je expliciet sleutels/keys moeten definiëren.
Ook begrijp ik niet helemaal waarom er totaal geen interpunctie in je reacties zit, tenzij je via een telefoon of tablet berichten aan het kloppen bent, maar ik zou het wel zo netjes vinden als je berichten en reacties op zijn minst een soort van uitstraling hebben die impliceert dat er wat zorg en aandacht wordt besteed aan de verwoorde gedachten.
Ik denk ook dat de consensus hier een beetje de volgende is: het is onverstandig om nog verder te bouwen (te "stapelen") in de huidige applicatie. Ik snap dat je code wilt refactoren (omschrijven naar iets beters) maar de vraag is of de huidige structuur op die manier echt te redden valt.
Dit is misschien niet wat je wilt horen, maar dit is denk ik het vriendelijkste advies wat wij je kunnen geven. Dit doen we niet om jouw applicatie de grond in te stampen ofzo, maar dit doen wij omdat wij zelf dit traject ook doorlopen hebben en uiteindelijk hebben moeten constateren, ook door ondertussen opgedane kennis etc, dat er andere en betere manieren zijn om dit aan te vliegen.
Wij kunnen niet verwachten dat je ineens het licht ziet, dit is een traject waarbij je dit zelf allemaal doorloopt, ervaring opdoet, eens wat oude code van jezelf bekijkt en denkt "ayaya dat kan anders" etc.. Of je moet zoiets hebben van "ik heb noch de tijd noch de inclinatie om mij hier in te verdiepen, tis mij allemaal Chinees" en dan heb je het voorgenoemde verhaal (functionele spec) waarmee je naar een bureau kunt stappen ofzo.
Maar wees vooral eerlijk tegenover jezelf, ik snap dat dit systeem jouw "kindje" is maar neem onze woorden ter harte, dit doen wij echt niet uit een soort van kwade wil of betweterigheid ofzo.
als je naast me zit zou je alles gelijk snappen :D
de huidige structuur werkt vlekkenloos ongeacht hoe en waarmee dit is gebouwd
ik kan niet alles aan kant schuiven en helemaal opnieuw beginnen daar heb ik simpelweg het geld niet voor en een tijd
mij persoonlijk interesseert het niet hoe iets eruitziet op achergrond, als het maar werkt.!
ik ben een noob in veel dingen met dit soort codes arrays bla bla functies, classes, foreach
al die dingen gebruik ik niet tenzij ik een bestaand mooi script heb gevonden met goede uitleg
die ik dan inbouw in mijn systeem
heel veel in mijn systeem zijn vaak delen van andere functies en deze heb ik dan uitgewerkt naar wat ik moet hebben
maar zelf zoiets schrijven heb ik moeite mee
3 jaar geleden was mijn script 3 keer zo groot en 20 keer langzamer, dit heb ik allemaal al verbeterd en sneller gemaakt
nu zit ik dus weer in zo'n fase
beste manier voor mij is iemand naast mij hebben met de goede kennis en die kunnen betalen voor zijn werk
helaas kan dat betalen niet en dus moet ik het zelf doen
en daarbij klaar .
het werkt allemaal helemaal goed en snel en mijn cache systeem is niet beter te maken en ga ik ook niet allemaal uitleggen
ik kom hier voor een oplossing voor mijn functies probleem
maar ik hoor alleen maar geld, lening, inhuren, systeem niet goed, database niet goed, enz enz
elke dag wordt mijn systeem beter en zolang ik geen hulp heb die niks kost duurt dit net zolang als ik nodig heb
op mijn manier moet ik nog 5 jaar ploeteren en dan heb ik een goed salaris hieruit
met hulp binnen een jaar
ik heb nu net vandaag mijn bestaande code voor een aantal delen om kunnen zetten naar functies
dit blijkt redelijk goed te werken
met hulp van volgens mij de eerste reply die gerelateerd was aan mijn vraag,
ik laat straks wel zien hoe dat is geworden, of het goed is weet ik niet want de opvraag van functie delen ziet er nu zo uit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
include('beheer/boekhouding/2020/functies.php');
$datum = '2020-03-14';
$account = 43;
$userid = 37;
$bemiddeling = berekening_bemiddeling($datum,$account,$userid);
$specialbemiddeling = berekening_specialbemiddeling($datum,$account,$userid);
$pin = berekening_pin($datum,$account,$userid);
$cc = berekening_cc($datum,$account,$userid);
//test pagina voor het ophalen van gegevens via functies van een enkele dag/user
echo '-'.$bemiddeling['eindtotaalbemiddelingafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalbemiddelingbtwafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalbemiddelingexbtwafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalminutenbemiddeling'].'<br>';
echo '-----<br>';
echo '-'.$pin['eindtotaalpin'].'<br>';
echo '-----<br>';
echo '-'.$cc['eindtotaalcc'].'<br>';
echo '-----<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingbtwafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingexbtwafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalminutenspecialbemiddeling'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingprovisiedameafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingprovisiedameexbtwafgerond'].'<br>';
$datum = '2020-03-14';
$account = 43;
$userid = 37;
$bemiddeling = berekening_bemiddeling($datum,$account,$userid);
$specialbemiddeling = berekening_specialbemiddeling($datum,$account,$userid);
$pin = berekening_pin($datum,$account,$userid);
$cc = berekening_cc($datum,$account,$userid);
//test pagina voor het ophalen van gegevens via functies van een enkele dag/user
echo '-'.$bemiddeling['eindtotaalbemiddelingafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalbemiddelingbtwafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalbemiddelingexbtwafgerond'].'<br>';
echo '-'.$bemiddeling['eindtotaalminutenbemiddeling'].'<br>';
echo '-----<br>';
echo '-'.$pin['eindtotaalpin'].'<br>';
echo '-----<br>';
echo '-'.$cc['eindtotaalcc'].'<br>';
echo '-----<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingbtwafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingexbtwafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalminutenspecialbemiddeling'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingprovisiedameafgerond'].'<br>';
echo '-'.$specialbemiddeling['eindtotaalspecialbemiddelingprovisiedameexbtwafgerond'].'<br>';
Sylvester vader op 17/03/2020 18:07:50:
haha klopt helemal wat je zegt en ik kan het ook moeilijk uitleggen allemaal
als je naast me zit zou je alles gelijk snappen :D
de huidige structuur werkt vlekkenloos ongeacht hoe en waarmee dit is gebouwd
als je naast me zit zou je alles gelijk snappen :D
de huidige structuur werkt vlekkenloos ongeacht hoe en waarmee dit is gebouwd
NOG wel....
Efficiënt is het zeker niet.
Quote:
ik kan niet alles aan kant schuiven en helemaal opnieuw beginnen daar heb ik simpelweg het geld niet voor en een tijd
Je zou minimaal kunnen beginnen met een nieuw ontwerp naast je huidige ontwerp. Alles meteen aan de kant schuiven kan uiteraard niet.
Quote:
mij persoonlijk interesseert het niet hoe iets eruitziet op achergrond, als het maar werkt.!
ik ben een noob in veel dingen met dit soort codes arrays bla bla functies, classes, foreach
ik ben een noob in veel dingen met dit soort codes arrays bla bla functies, classes, foreach
Alles valt te leren! En hoe het op de achtergrond werkt is JUIST van belang! Dus probeer de dreigende ramp voor te zijn, en maak een plan van aanpak. Ga desnoods kijken hoe je financieel extra developers in kan huren voordat je steeds verder onderuit gaat en dieper in de problemen zakt. Hier MOET wel een oplossing voor zijn waar je over na kan denken. Je hebt immers een bedrijf en inkomsten! Desnoods een lening of een extra potje opentrekken?
Quote:
al die dingen gebruik ik niet tenzij ik een bestaand mooi script heb gevonden met goede uitleg
die ik dan inbouw in mijn systeem
heel veel in mijn systeem zijn vaak delen van andere functies en deze heb ik dan uitgewerkt naar wat ik moet hebben
die ik dan inbouw in mijn systeem
heel veel in mijn systeem zijn vaak delen van andere functies en deze heb ik dan uitgewerkt naar wat ik moet hebben
Ik heb het idee dat je mijn bericht over frameworks nog niet hebt gelezen, of dat je je er niet eens in verdiept het.
Quote:
maar zelf zoiets schrijven heb ik moeite mee
3 jaar geleden was mijn script 3 keer zo groot en 20 keer langzamer, dit heb ik allemaal al verbeterd en sneller gemaakt
nu zit ik dus weer in zo'n fase
3 jaar geleden was mijn script 3 keer zo groot en 20 keer langzamer, dit heb ik allemaal al verbeterd en sneller gemaakt
nu zit ik dus weer in zo'n fase
Je bent dus aan het aanmodderen zonder dat je de bottleneck hebt gevonden, en de berg aan modder wordt nu steeds groter doordat je hier en daar allemaal pleisters aan het plakken bent zonder de oorzaak op te lossen.
Quote:
beste manier voor mij is iemand naast mij hebben met de goede kennis en die kunnen betalen voor zijn werk
helaas kan dat betalen niet en dus moet ik het zelf doen
en daarbij klaar .
helaas kan dat betalen niet en dus moet ik het zelf doen
en daarbij klaar .
Ik kan me niet indenken dat dit een issue is. Ik wil hier niet verder in discussie over gaan, maar ik vind dit niet echt een argument als je een bedrijf runt.
Quote:
het werkt allemaal helemaal goed en snel en mijn cache systeem is niet beter te maken en ga ik ook niet allemaal uitleggen
Dat cachen zou eigenlijk niet eens nodig moeten zijn, want dat is niet een magische manier om al je problemen te ontnemen.
Quote:
ik kom hier voor een oplossing voor mijn functies probleem
maar ik hoor alleen maar geld, lening, inhuren, systeem niet goed, database niet goed, enz enz
maar ik hoor alleen maar geld, lening, inhuren, systeem niet goed, database niet goed, enz enz
Dat zijn dus de valkuilen waarin je valt. We verwachten dat je een goede structuur hebt, en geven daar onze oplossingen op aan. We weten niet over je houtje-touwtje applicatie.
Quote:
ik heb nu net vandaag mijn bestaande code voor een aantal delen om kunnen zetten naar functies. Dit blijkt redelijk goed te werken.
Je bent al op de goede weg, maar het is een klein deel.
Mijn advies: Ga als de sodem**ter je PHP-kennis eens een swung geven, leer over classes, methods en MVC. En ga er iets simpels mee bouwen als test. En zodra je het snapt probeer je stapje bij beetje je applicatie in te bouwen, met nadruk op een goede databasestructuur.
En waarom een jaar als mapnaam? Ga je per jaar je hele PHP-applicatie verdubbelen ofzo?
Heb je deze tijd niet: Zorg dat je echt zo snel mogelijk iets concreets voor elkaar gaat krijgen om een developer in te huren. Op deze voet vrees ik hard dat je op termijn onderuit gaat, wat je klanten gaat kosten en misschien wel schulden op gaat leveren. Iets wat je zeker niet wilt in het bedrijfsleven.
Ik hoop echt dat deze 'emergency call' binnenkomt.
En nog één ding: Probeer met interpuncties te typen, niet voor elke regel een enter te gebruiken en wat concreter te zijn. Dat leest een stuk fijner dan een soort van gedicht. ;-)
Gewijzigd op 17/03/2020 18:36:26 door - Ariën -
Je hebt immers een bedrijf en inkomsten! Desnoods een lening of een extra potje opentrekken?
wel bedrijf maar dit bedrijf heeft nog geen winst en dus geen inkomsten
de inkomsten die ik heb dekken mijn kosten
door verleden ga ik nooit en tennimmer meer een lening aan
bestaande klanten raak ik niet kwijt want er is niks beters te vinden op dit moment en ik ben daar ook niet bang voor dat dit in toekomst er wel zou zijn, omdat niemand so gek is om dit te maken :P
het doel is inderdaad ook indien alles verder perfect visueel werkt er een systeem naast te bouwen die helemaal van begin tot eind goed is
echter zolang mijn systeem nog niet is hoe ik het wil, en mijn klanten soms nog kleine dingen willen
dan zorg ik eerst dat dat werkt voordat ik ernaast aan een beter systeem ga werken
5 jaar geleden had ik dat ook gedaan daar is dit uit ontstaan
toen had ik 5 klanten wet elk een eigen database en eigen wensen enz
ik werd helemaal gek
ik heb toen 1 dynamish systeem gemaakt zodat ik maar 1 plek hoefde te veranderen
eventuele aanpassingen voor specifieke klant doe ik doormiddel van apparte modules
ik ben ooit begonnen met alleen 1 pagina waar een uitbetalings overzicht op stond
dit is uitgegroeit tot dit
daar ben ik best trots op
zolang de developer die ik nodig heb duizenden euros kost doe ik het lekker zelf,
onderuitgaan kan ik niet ik zou hooguit over 10 jaar een sterkere server nodig hebben als ik op zelfde toer blijf
Doe me liever een lol, neem het serieus op, en maak een plan van aanpak.
Maar goed.... ik verlaat dit deel van de discussie maar, met de hoop dat het op termijn goed zal komen :-)
Als je belooft om hier wat minder enters en wat meer interpuncties te plaatsen, dan ben ik sowieso blij ;-)
Gewijzigd op 17/03/2020 18:46:16 door - Ariën -
en dat ik niet rijk ben om iemand in te huren waar iedereen steeds op terug komt
ik hou er niet van myzelf steeds te moeten herhalen.
ik ben niet rijk dus klaar hierover .!!!!!
ik leer door te zien
enige nuttige dat ik heb gezien waar ik nu op dit moment iets mee kan is van eerste reply
ik heb al aantal keren mijn aanpassingen/ vorderingen getoont, maar daar hoor ik niemand over
ik zal straks maar een nieuwe topic openen met andere titel misschien dat iemand dan wel iets over het onderwerp zegt
Toevoeging op 17/03/2020 18:53:53:
Quote:
Maar goed.... ik verlaat dit deel van de discussie maar, met de hoop dat het op termijn goed zal komen :-)
bedankt :)
Toevoeging op 17/03/2020 18:57:03:
Quote:
neem het serieus op, en maak een plan van aanpak.
dit doe ik zeker wel ik kan er alleen niks mee
plan van aanpak en dit is voor mij enigste manier,
maak script zo goed als ik kan met mijn kennis,
krijg klanten zodat ik geld heb en inkomsten
indien inkomsten goed, en indien dit nodig zal zijn, iemand inhuren die samen met mij versie 3 ontwikkelt
Toevoeging op 17/03/2020 22:32:03:
ik wou eigenlijk een nieuw topic maken omdat deze een beetje vol begint te lopen, maar ik zet het toch maar hier erbij.
Ik heb na aanleiding van wat tips en voorbeelden die ik in dit topic heb gevonden, het volgende gemaakt.
een functie pagina en op mijn uitvoer pagina een een while loop deze code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$bemiddeling = berekening_bemiddeling($page_dag_cache,$accountid,$row['id_dame']);
$specialbemiddeling = berekening_specialbemiddeling($page_dag_cache,$accountid,$row[id_dame]);
$diensten = berekening_diensten($page_dag_cache,$accountid,$row[id_dame]);
$pin = berekening_pin($page_dag_cache,$accountid,$row[id_dame]);
$cc = berekening_cc($page_dag_cache,$accountid,$row[id_dame]);
$eindtotaalpin = $pin['eindtotaalpin'];
$eindtotaalcc = $cc['eindtotaalcc'];
$eindtotaalbemiddelingafgerond = $bemiddeling['eindtotaalbemiddelingafgerond'];
$eindtotaalbemiddelingbtwafgerond = $bemiddeling['eindtotaalbemiddelingbtwafgerond'];
$eindtotaalbemiddelingexbtwafgerond = $bemiddeling['eindtotaalbemiddelingexbtwafgerond'];
$eindtotaalminutenbemiddeling = $bemiddeling['eindtotaalminutenbemiddeling'];
$eindtotaalspecialbemiddelingafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingafgerond'];
$eindtotaalspecialbemiddelingbtwafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingbtwafgerond'];
$eindtotaalspecialbemiddelingexbtwafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingexbtwafgerond'];
$eindtotaalspecialbemiddelingprovisieexploitantafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingprovisieexploitantafgerond'];
$eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond'];
$eindtotaalspecialbemiddelingprovisiedameafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingprovisiedameafgerond'];
$eindtotaalspecialbemiddelingprovisiedameexbtwafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingprovisiedameexbtwafgerond'];
$eindtotaalminutenspecialbemiddeling = $specialbemiddeling['eindtotaalminutenspecialbemiddeling'];
$eindtotaaldienstenafgerond = $diensten['eindtotaaldienstenafgerond'];
$eindtotaaldienstenbtwafgerond = $diensten['eindtotaaldienstenbtwafgerond'];
$eindtotaaldienstenexbtwafgerond = $diensten['eindtotaaldienstenexbtwafgerond'];
$specialbemiddeling = berekening_specialbemiddeling($page_dag_cache,$accountid,$row[id_dame]);
$diensten = berekening_diensten($page_dag_cache,$accountid,$row[id_dame]);
$pin = berekening_pin($page_dag_cache,$accountid,$row[id_dame]);
$cc = berekening_cc($page_dag_cache,$accountid,$row[id_dame]);
$eindtotaalpin = $pin['eindtotaalpin'];
$eindtotaalcc = $cc['eindtotaalcc'];
$eindtotaalbemiddelingafgerond = $bemiddeling['eindtotaalbemiddelingafgerond'];
$eindtotaalbemiddelingbtwafgerond = $bemiddeling['eindtotaalbemiddelingbtwafgerond'];
$eindtotaalbemiddelingexbtwafgerond = $bemiddeling['eindtotaalbemiddelingexbtwafgerond'];
$eindtotaalminutenbemiddeling = $bemiddeling['eindtotaalminutenbemiddeling'];
$eindtotaalspecialbemiddelingafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingafgerond'];
$eindtotaalspecialbemiddelingbtwafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingbtwafgerond'];
$eindtotaalspecialbemiddelingexbtwafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingexbtwafgerond'];
$eindtotaalspecialbemiddelingprovisieexploitantafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingprovisieexploitantafgerond'];
$eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond'];
$eindtotaalspecialbemiddelingprovisiedameafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingprovisiedameafgerond'];
$eindtotaalspecialbemiddelingprovisiedameexbtwafgerond = $specialbemiddeling['eindtotaalspecialbemiddelingprovisiedameexbtwafgerond'];
$eindtotaalminutenspecialbemiddeling = $specialbemiddeling['eindtotaalminutenspecialbemiddeling'];
$eindtotaaldienstenafgerond = $diensten['eindtotaaldienstenafgerond'];
$eindtotaaldienstenbtwafgerond = $diensten['eindtotaaldienstenbtwafgerond'];
$eindtotaaldienstenexbtwafgerond = $diensten['eindtotaaldienstenexbtwafgerond'];
waarom die dubbele codes?
Omdat mijn bestaande code die enorm groot is deze variabelen op dit moment nog zoekt.
Dit wordt uiteraard allemaal indien alles goed werkt verbeterd zodat die onnodige delen er niet in hoeven.
wat ik mij afvroeg is of ik het zo goed had gedaan?
want ik vond ($page_dag_cache,$accountid,$row[id_dame]); overal een beetje overbodig maar weet even niet zo snel hoe ik dit kan verbeteren
Gewijzigd op 17/03/2020 18:55:42 door - Ariën -
Gewijzigd op 17/03/2020 22:46:46 door - Ariën -
en voor gebruiker wordt doormiddel van een while verschillende id's opgehaald
de $page_dag_cache wordt gehaald uit een functie die ervoor zorgt dat ik alle dagen van een hele maand krijg
de accountid is een global dan denk ik
deze is al veel eerder opgehaald uit andere geladen functies
dit is het accountnummer van het bedrijf waar de berekeningen voor zijn
staat volgens mij ook ergens in een session maar dan zou ik deze zeker in de functie bij een global moeten zetten net zoals ik nu heb moeten doen om mijn database te krijgen
global $db;
dit zou dan worden
global $db, $accountid;
zit ik zo een beetje goed?
En dan niet eentje die stopt na uitleg hoe je substr() en echo gebruikt, maar een die in elk geval classes aanstipt.
Die kun je online zelfs vinden. En dat hoeft niet veel te kosten.
En stel dat die cursus je iets leert dat je oplevert dat je een dag of 2 minder hoeft te knoeien aan je code, dan heb je die cursus misschien al terugverdiend.
Je klinkt nu als iemand die een week lang "elektriciteit" heeft gehad bij het vak techniek op de middelbare school en nu de energievoorziening in een fabriek aanlegt.
Je code is doorspekt van rare constructies.
En ik vraag me af of je query's verder komen dan SELECT * FROM 1tabel.
Gebruik je joins?
Gebruik je functies als SUM() of COUNT() in de query's.
Ik heb namelijk het idee dat gebrek aan kennis nu opgelost wordt met 100-en regels php code, om iets dat een slimme query had kunnen doen in 1 keer.
Een beetje extra kennis kan geen kwaad.
haha je zit er niet ver naast
ja ik gebruik joins en counts indien ik dat kan gebruiken in hetgeen dat ik moet hebben
echter op deze specifieke pagina moet ik echt elk deeltje los pakken om 100% garantie te hebben dat alle bedragen perfect berekent zijn volgens belasting regels
met het doel dat ik alle bedragen per dag per gebruiker in een cache bestand kan opslaan
in deze cache staan dan dezelfde, al voor berekende variabelen
in de functie die mijn cache maakt staat zoiets als if cache aanwezig, include cache
else
open gehele berekening en maak cache
ik had in het begin allemaal kleine stukjes code om berekeningen te maken
maar in mijn grootste som stonden meestal ook alle kleine bedragen
dus waren voor mij die kleine scriptjes eigenlijk overbodig want hij moest het toch bijna allemaal inladen
om deze reden lijkt het dus heel veel maar kleiner kan niet vanwege de complexiteit van het berekenen
delen die ik los kan trekken heb ik uiteraard los staan
ik wil ook een aantal cursusen volgen
ik heb er zelfs al een paar via udemy
maar meeste hiervan heb ik niet veel aan
en voor een echte goede cursus heb ik geen geld
en dus moet dat even wachten :'(
Edit:
het is niet nodig om voorgaande berichten integraal te quoten.
Gewijzigd op 17/03/2020 23:52:45 door - Ariën -
Als je concreet vertelt wat er aan schort, dan kunnen we gerichter advies geven.
maar de cursus die ik toen had, hadden niet hetgeen dat ik zoek
er blijkt dus geen betere manier te zijn voor die enorme berekening die ik nodig hebt
dus als het nieuwe iets niet kan dan blijf je bij het oude
tuurlijk leren die cursussen je ook andere dingen die je nodig zou kunnen hebben enz
en deze ga ik ook zeker leren
maar aangezien ik niet veel tijd heb en mijn scripts, wilt verbeteren
ga ik niet dingen leren waar ik nu even niets aan hebt
dit gaat wel gebeuren als alles werkt en ik me ga verdiepen in een mogelijke v3
Waar was je dan specifiek naar op zoek, wat de cursus niet aanbood?