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
Sylvester vader op 18/03/2020 16:26:10

omg daar gaan we weer .
ga er meespelen... omdat niemand mij dit zelf kan uitleggen .

Meen je dit?!? Ik leg het zelfs uit? Ik geef een link met een index van array-functies? Wat wil je nu nog meer?


bouw hardcoded je array en ga optel sommetjes maken ...
ik moet optellen delen, min percentages , bedragen die ik daarmee heb gekregen bewaren en dan weer gebruiken enz enz

Ga je gang !


ik probeer me al jaren te verdiepen in betere code maar at ik zoek kan er niet mee
tenminste niet dat ik kan vinden en niemand kan mij ook een voorbeeld geven

idee is goed
in praktijk kan het echter tot op heden nog niet

Niet totdat je ermee experimenteert! Je moet het zelf leren!
En nee, het komt niet automatisch in je hoofd via aardstraling ofzo.


en niemand bewijst mij het tegendeel
ik hoor alleen maar met ... manier zou het moeten kunnen
maar een goede uitleg geven ho maar


:X

Ik wens je verder succes, want als de discussie zo gevoerd wordt, dan kan ik mijn tijd beter aan andere dingen besteden.

Je mag best wat proberen, en terug komen als je vragen hebt, maar het komt nu echt meer uit op: "Ik wil het liever laten doen." Prima, maar dan lijkt een vacature topic een beter idee. Maar ik geloof dat je al verteld had dat dat ook geen optie is.

Dus tijd om knopen voor je door te hakken! Die scenario's zijn je al gegeven in dit topic!

Good luck!
het beste wat ik heb gekregen waar ik nu echt iets aan heb gehad was eerste reply

ik wil het zelf juist graag doen maar
die functies doen niet alles wat ik will

ja ok, wacht, dat doen ze wel echter wordt mijn code veeeeeeel groter
met deze manier en niet makkelijk voor mij te begrijpen als ik moet aanpassen


ik heb heel veel delen in mijn script, en ik heb 1 deel die heel makkelijk is
ik heb dit al vaker getoont

maar ik zal even een deel tonen die ook het visuele deel laat zien op bv het loonstrookje

als er iemand is die dit in nieuwe verbeterde code kan maken zoals er steeds wordt voorgesteld,
dan zal ik deze persoon inhuren mits de prijs een beetje normaal is uiteraard

iemand die dit kan en intresse heeft mag mij een pm sturen.

ps: onderstaande code maakt nog geen gebruik van functies enz
dus leef je uit!

sql database deel:


CREATE TABLE `systeem_invoertotaal` (
  `account` int(11) DEFAULT NULL,
  `id` int(11) NOT NULL,
  `id_user` int(11) DEFAULT NULL,
  `naam` varchar(64) NOT NULL,
  `onbelaste_onkosten` text,
  `facilitaire_diensten` text,
  `percentage` text,
  `btwhoog` text,
  `btwlaag` text,
  `loonbelasting` text,
  `zfwpremie` text,
  `geforceerd` enum('-','yes','no') NOT NULL DEFAULT '-',
  `soort` enum('belastingen','facilitaire_diensten','dagdeel','heffing','zvw','tarieven','diensten','baden','dranken','entree') NOT NULL,
  `omschrijving` text,
  `aantal` text,
  `bedrag` text,
  `btwhoogte` enum('-','btwhoog','btwlaag') NOT NULL DEFAULT '-',
  `deel_user` text,
  `titel` text,
  `datum_invoer` datetime DEFAULT NULL,
  `invoer_over` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;




INSERT INTO `systeem_invoertotaal` (`account`, `id`, `id_user`, `werknaam`, `onbelaste_onkosten`, `facilitaire_diensten`, `percentage`, `btwhoog`, `btwlaag`, `loonbelasting`, `zfwpremie`, `geforceerd`, `soort`, `omschrijving`, `aantal`, `bedrag`, `btwhoogte`, `deel_user`, `titel`, `datum_invoer`, `invoer_over`) VALUES
(43, 162348, 26, 'naam2', '20', '', '40', '21', '9', '8', '5.70', '-', 'belastingen', '-', '-', '-', '-', '-', NULL, '2020-03-14 01:24:03', '2020-03-13'),
(43, 162349, 26, 'naam2', '-', '-', '-', '-', '-', '-', '-', '-', 'tarieven', '30', '1', '70', 'btwhoog', '-', '', '2020-03-14 01:24:03', '2020-03-13'),
(43, 162350, 26, 'naam2', '-', '-', '-', '-', '-', '-', '-', '-', 'tarieven', '45', '1', '100', 'btwhoog', '-', '', '2020-03-14 01:24:03', '2020-03-13'),
(43, 162351, 26, 'naam2', '-', '-', '-', '-', '-', '-', '-', '-', 'tarieven', '60', '1', '120', 'btwhoog', '-', '', '2020-03-14 01:24:03', '2020-03-13');







het deel van een pagina



$sql = "SELECT * FROM systeem_invoertotaal WHERE account='$member[group_account]' AND id_user='$id' AND soort='tarieven' AND deel_user <1 AND invoer_over='$_GET[datum]' ORDER BY omschrijving DESC";
												
$resultaatbemiddeling = $db->sql_query($sql) or die(mysqli_error());


//Deze 0 bedragen zijn de totale optellingen die later ook naar de cache worden gestuurd//
$eindtotaalbemiddelingafgerond = '0';
$eindtotaalbemiddelingbtwafgerond = '0';
$eindtotaalbemiddelingexbtwafgerond = '0';
$eindtotaalminutenbemiddeling = '0';
//Deze 0 bedragen zijn de totale optellingen die later naar de cache worden gestuurd//

while($omzetbemiddeling = mysqli_fetch_assoc($resultaatbemiddeling)) 
{ 
$btw = mysqli_fetch_array($db->sql_query("SELECT * FROM systeem_invoertotaal WHERE account='$member[group_account]' AND id_user='$id' AND soort='belastingen'  AND invoer_over='$_GET[datum]';"));

$totaalbtwbemiddeling = $btw[btwhoog] + 100;
$minutenbemiddeling = $omzetbemiddeling[aantal] * $omzetbemiddeling[omschrijving];
$totaalbemiddelingafgerond = $omzetbemiddeling[aantal] * $omzetbemiddeling[bedrag];
$btwtotaalbemiddeling = $totaalbemiddelingafgerond / $totaalbtwbemiddeling * $btw[btwhoog];
$btwtotaalbemiddeling_3cijfers = round($btwtotaalbemiddeling, 3);
$btwtotaalbemiddelingafgerond = round($btwtotaalbemiddeling_3cijfers, 2);	
$extotaalbemiddelingafgerond = $totaalbemiddelingafgerond - $btwtotaalbemiddelingafgerond;
$eindtotaalbemiddelingafgerond = $eindtotaalbemiddelingafgerond + $totaalbemiddelingafgerond;
$eindtotaalbemiddelingbtwafgerond = $eindtotaalbemiddelingbtwafgerond + $btwtotaalbemiddelingafgerond;
$eindtotaalbemiddelingexbtwafgerond = $eindtotaalbemiddelingexbtwafgerond + $extotaalbemiddelingafgerond;
$eindtotaalminutenbemiddeling = $eindtotaalminutenbemiddeling + $minutenbemiddeling;



$bemiddelinglinks  .= '<tr>
<td align="left" valign="top" width="220"><font color="#000000" >Omzet standaard dienst '.$omzetbemiddeling[omschrijving].' min</font></td>
<td align="right" valign="top" width="85"><font color="#000000"  >&euro;'.number_format($totaalbemiddelingafgerond, 2, ',', '').'</font></td>
<td valign="top" width="60">&nbsp;</td>
</tr>';


// dit bemiddelingrechts deel wordt ergens ander op de pagina opgevraagd
$bemiddelingrechts  .= '<tr>
<td style="border-collapse: collapse; border:1px solid #666666;"><font  color="#000000">'.$omzetbemiddeling[aantal].'</font></td>
<td style="border-collapse: collapse; border:1px solid #666666;"><font  color="#000000">'.$omzetbemiddeling[omschrijving].' minuten</font></td>
<td align="right" style="border-collapse: collapse; border:1px solid #666666;"><font  color="#000000">&euro;'.number_format($omzetbemiddeling[bedrag], 2, ',', '').'</font></td>
<td align="right" style="border-collapse: collapse; border:1px solid #666666;"><font  color="#000000">&euro;'.number_format($totaalbemiddelingafgerond, 2, ',', '').'</font></td>
<td align="right" style="border-collapse: collapse; border:1px solid #666666;"><font  color="#000000">&euro;'.number_format($btwtotaalbemiddelingafgerond, 2, ',', '').'</font></td>
<td align="right" style="border-collapse: collapse; border:1px solid #666666;"><font  color="#000000">&euro;'.number_format($extotaalbemiddelingafgerond, 2, ',', '').'</font></td>
</tr>';

}
}
											
if ($eindtotaalbemiddelingafgerond	!= 0) {			
echo '<tr style="border-collapse: collapse; border:1px solid #000000;">
<td class="kleur" align="left" valign="middle" height="" style="border-collapse: collapse; background-color: #99ff33" colspan="3"><font style="font-weight: bold" color="#000000">Omzet dienstverlening incl</font></td></tr>';		

echo ''.htmlspecialchars_decode($bemiddelinglinks).'';

echo '<tr>
<td  align="left" valign="top" width="220">
<font color="#000000" ><b>Subtotaal standaard diensten</b></font></td>
<td valign="top" width="85" align="right" style="border-color: #000000; border-top-style: solid; border-top-width: 1px"><font color="#000000"  ><b>&euro;'.number_format($eindtotaalbemiddelingafgerond, 2, ',', '').'</b></font></td>
<td valign="top" width="60"  align="right"><font color="#000000" ><b>&euro;'.number_format($eindtotaalbemiddelingafgerond, 2, ',', '').'</font></b></td>
</tr>
<tr>
<td valign="top" width="220">&nbsp;</td>
<td valign="top">&nbsp;</td>
<td valign="top" width="60"  align="right">&nbsp;</td>
</tr>';
									}





Wat houdt je tegen om het eens droog te proberen, en niet meteen lastig gaan doen door dit in jouw code te gieten?

<?php
$bedrag = [];
$bedrag['eindtotaal']['bemiddelingprovisie']['Janssen BV'] = 86;
$bedrag['eindtotaal']['bemiddelingprovisie']['ACME BV'] = 72;
$bedrag['eindtotaal']['bemiddelingprovisie']['Bla Bla NV'] = 82;

$totaal = array_sum($bedrag['eindtotaal']['bemiddelingprovisie']);
echo $totaal;
?>


tja
als je straks vanzelf 3000 netto per maand gaat binnen krijgen, dan moet je er ook wat voor doen.

Helaas gaat dat waarschijnlijk niet lukken met de benadering "ik wil niet zelf wat leren maar als iemand mij gratis letter voor letter voordoet wat ik moet typen, dan komt het vanzelf goed."

Maar bouw lekker verder aan je flatgebouw, ook al roept iedereen dat je fundament niet goed is.
Beetje cache tegen het beton smeren en dan kunnen er wel wat verdiepingen bij.

Nogmaals (en laatstmaals) laat het huidige systeem doorpruttelen en begin opnieuw ernaast met een goede opbouw.
Als dat opweg is, converteer je bestaande data en klanten naar een nieuw platform.

(en nog een tip: is zie hierboven dat je rekent met afronde bedragen: dat afronden doe je pas in de allerlaatste stap en niet afgerond1 x afgerond2. Dat levert je verschillen op aan het einde van de rit.)

over en uit.
Ik ga met Ivo mee, en ben zelf nu ook wel een beetje klaar met deze discussie, en ik hoop dat Sylvester nu het licht gaan zien, en of hij door heeft hoe multidimensionale array's werken. Veel succes verder met het project.
Ariën
kijk daar heb ik iets aan.!
niet voor alles, Maar op manier hoe jij dat nu neerzet zou ik mijn eindtotalen op deze manier kunnen doen, ik zal google even verder uitpluizen enz en die linken die je me gaf, met dit goede voorbeeld als basis

Ivo P
mijn systeem wordt langzaam geupdate en ik zal ook zekker heel veel gaan bijleren
maar ik moet soms snel dingen doen
ik heb nu dus even niet de kennis om dit hele script te herschrijven
en als ik het geld heb zal ik ook zeker iemand erbij nemen met de nodige kennis

afronden doe je pas in de allerlaatste stap ...
ja dat kan echter zijn mijn berekeningen iets complexer en belasting heeft mij gevraagd het over andere tak te gooien waardoor het op cent na klopt

hoe en waarom ge ik niet uitleggen
kan je vinden op afrondingsverschillen van belastingdienst.nl



[size=xsmall]Toevoeging op 18/03/2020 18:33:55:[/size]

- Ariën - op 18/03/2020 17:10:08

<?php
$bedrag = [];
$bedrag['eindtotaal']['bemiddelingprovisie']['Janssen BV'] = 86;
$bedrag['eindtotaal']['bemiddelingprovisie']['ACME BV'] = 72;
$bedrag['eindtotaal']['bemiddelingprovisie']['Bla Bla NV'] = 82;

$totaal = array_sum($bedrag['eindtotaal']['bemiddelingprovisie']);
echo $totaal;
?>


ik was hier net mee aan het klooien en ook al zal het heel simpel zijn deze noob snapt het natuurlijk niet :P

maar zoals jij het hebt gedaan is ongeveer zoiets als
$bedrag = [];
$bedrag['eindtotaal'] = 86;
$bedrag['eindtotaal'] = 72;
$bedrag['eindtotaal'] = 82;

$totaal = array_sum($bedrag['eindtotaal']);
echo $totaal;

die multi kon ik niet veel mee in mijn berekeningen

en ik heb
$totaal = '0';
$bedrag = 86;
$bedrag = 72;
$bedrag = 82;
//bedragen staan in een while loop

$totaal += $bedrag;
echo $totaal;

dus ik zie geen voordeel of echt een groot verschil
maar misschien zie ik het gewoon niet.
Allereerst sta je in jouw voorbeeld nu steeds bedrag te overschrijven, dus kom je uit op 82.
Je kan zoals ik al eerder uitlegde hele samenstellingen van gegroepeerde data benaderen, en dat kan niet (eenvoudig) met normale variabelen.

Maar als je zulks voorbeeld nog fout maakt, dan hoop ik eigenlijk van harte dat jouw belastingzaken goed kloppen en dat je het dubbel gecontroleerd hebt. Ook snap ik niet waarom 0 opeens een string is?

Ik denk dat je misschien even goed de basics van PHP moet leren voor een goede swung.
uhm

//bedragen staan in een while loop


het antwoordt is dus alles bij elkaar opgeteld net zoals bij jouw code

die 0 moet ik doen om ervoor te zorgen dat er bij een volgende dag in een kalender functie
geen bedragen worden meegenomen

in praktijk, en dit zou jij moeten weten,
moet je voor een loop eerst 0 zetten. Als je met nieuwe bedragen wilt beginnen
In de loop de code / berekening.
En erna een optelling van de gehele loop met dus als start, die 0

indien er niks een dag erna te berekenen valt komt er 0 enz enz
doe ik die 0 niet dan komt het laatste berekende bedrag steeds weer terug waar door ik dus hele foute optel sommen krijg



Dat snap ik, maar het ging om het feit waarom je dat opeens als een string behandelt, en niet als integer? Nu is PHP best 'dom' op dit gebied, maar andere programmeertalen zijn er veel stricter in. Als je dit bijvoorbeeld in Java zou vertalen, of uiteindelijk naar andere systemen zou exporteren, zou dit betekenen dat je applicatie de meest rare berekeningen maakt.
bedoel je die '' ?

exuses dat had inderdaad niet gehoeven

[size=xsmall]Toevoeging op 18/03/2020 19:18:18:[/size]

ik heb soms nog wel eens de neiging quotes te gebruiken in mijn codes waar dit niet nodig is
dit komt omdat ik jaren heb gewerk met oude php versies en er toen niet zo op werd gelet

Reageren