inkorten van php delen
echter kan ik geen goed voorbeeld vinden van hoe dit moet
ik dacht zelf iets in een richting van een foreach met wildcards ofzo
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if($maandtotaalnettoinkas == 0)
{
$maandtotaalnettoinkastext = '-';
}
else
{
$maandtotaalnettoinkastext = '€'.number_format($maandtotaalnettoinkas, 2, ',', '').'';
}
if($maandtotaalnettoinkasminbank == 0)
{
$maandtotaalnettoinkasminbanktext = '-';
}
else
{
$maandtotaalnettoinkasminbanktext = '€'.number_format($maandtotaalnettoinkasminbank, 2, ',', '').'';
}
{
$maandtotaalnettoinkastext = '-';
}
else
{
$maandtotaalnettoinkastext = '€'.number_format($maandtotaalnettoinkas, 2, ',', '').'';
}
if($maandtotaalnettoinkasminbank == 0)
{
$maandtotaalnettoinkasminbanktext = '-';
}
else
{
$maandtotaalnettoinkasminbanktext = '€'.number_format($maandtotaalnettoinkasminbank, 2, ',', '').'';
}
als er hier een betere manier voor is hoor ik het graag
ik heb ongeveer 20 van deze delen onder elkaar
allemaal beginnen ze in principe met $maand.............
Gewijzigd op 19/03/2020 11:24:31 door Sylvester vader
Gewijzigd op 19/03/2020 11:20:45 door - Ariën -
foreach ($maand* as $var) {
}
Toevoeging op 19/03/2020 11:23:48:
- Ariën - op 19/03/2020 11:20:31:
Wat versta jij onder een wildmark?
wildcards
dus dat het van alles kan zijn
Het verschil in de berekening is dat je bij de laatste 'minbank' gebruikt.
Je kan een functie schrijven waarin je in de parameter kan afdwingen dat in je berekening gebruik moet worden gemaakt van $maandtotaalnettoinkasminbank of anders $maandtotaalnettoinkas.
ik heb nu zeg maar 20 variabelen met zoiets als
$maand1
$maand2
$maand3
$maand4
$maand5
deze zijn er dus all
nu geeft deze aan mij een waarde terug van 0 of een hoger bedrag
als ik 0 krijg, dan moet er een - komen als output
is het een bedrag dan dus het bedrag
maar het viel mij op dat ik best lange code daarvoor gebruik
en alle 20 zijn bijna hetzelfde
ik zal kijken of iets met een functie kan
maar ik moet nogsteeds dan dus een wildcard meesturen
Gewijzigd op 19/03/2020 11:35:39 door sylvester vader
Je kan dan dit doen:
echo maandtotaalnettoinkas(42); // Bereken $maandtotaalnettoinkas
echo maandtotaalnettoinkas(42,true); // Bereken $maandtotaalnettoinkasminbank
Dan moet je enkel in je functie even zorgen dat de tweede parameter $maandtotaalnettoinkasminbank afdwingt (if-else), en de gekozen waarde return je dan.
Geen wildcard voor nodig, en dat moet je ook niet. Variabelen kan je immers ook niet delen. Het is een gehele naamgeving.
Waarom zelf je maanden nummeren, terwijl je praktisch met date("n") al de juiste maand-nummer naar voren kan toveren? In een foreach tot 12 kan je dan alles al doorlopen.
Gewijzigd op 19/03/2020 11:47:19 door - Ariën -
het zijn geen nummers, Het zijn variabelen van berekende bedragen
indien ik dus een functie zou doen nu zonder wildcard dan
zou ik dus 20 keer die functie moeten opvragen waardoor ik dus juist meer code krijg dan nu
met exact zelfde resultaat als ik nu al heb
ik zoek eigelijk zoiets als
foreach($_POST as $k=>$v) $$k=$v;
deze doet bijna exact hetzelfde met alle post outputs
1 regel om 100 _post een eigen var te geven
Toevoeging op 19/03/2020 12:08:08:
bestaat er zoiets als een lijst met variabelen zetten in een array, maar dat wel nog de bestaande variabelen blijven werken?
Gewijzigd op 19/03/2020 12:12:48 door - Ariën -
Dit kan je prima in een array teruggeven, dan ben je niet hardcoded verbonden aan een vast aantal.
Als je 20 keer een functie opvraagt heb je uiteraard MINDER code, want je hebt één stuk code waarin je zelf bepaalt via argumenten bepaalt welke weg het moet lopen.
En waarom zou je elke $_POST een eigen variabele willen geven? Die hebben al een global (werkt ook in functies/methods), en ook bij POST kan je prima met multidimensionale array's werken.
Om als voorbeeld te geven: Ik heb ooit een rechtensysteem geschreven waarin de velden bijvoorbeeld als volgt waren:
$_POST['rights'][42]['nieuws']['wijzig']
In een soortgelijke boom kon ik dus met enkele foreaches de hele boomstructuur aan rechten uitlezen.
Nu zijn de rechten voor jouw niet van toepassing in deze issue, maar het toont wel het nut aan van een multidimensionale array.
Gewijzigd op 19/03/2020 12:14:37 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
function maaktext($var)
{ if($var == 0) return '-';
else return '€'.number_format($var, 2, ',', '');
}
$maandtotaalnettoinkastext = maaktext($maandtotaalnettoinkas);
$maandtotaalnettoinkasminbanktext = maaktext($maandtotaalnettoinkasminbank);
?>
function maaktext($var)
{ if($var == 0) return '-';
else return '€'.number_format($var, 2, ',', '');
}
$maandtotaalnettoinkastext = maaktext($maandtotaalnettoinkas);
$maandtotaalnettoinkasminbanktext = maaktext($maandtotaalnettoinkasminbank);
?>
ik denk dat ik zelfs de functie output rechtstreeks in de delen ga naarzetten waar ik het nodig heb
dan hoef ik die extra variablen ook niet te doen
so simpel eigelijk :)
hier zie ik heel veel extra mogelijkhheden mee :)
Gewijzigd op 19/03/2020 12:35:35 door sylvester vader
Sylvester vader op 19/03/2020 12:21:28:
ik denk dat ik zelfs de functie output rechtstreeks in de delen ga naarzetten waar ik het nodig heb
dan hoef ik die extra variablen ook niet te doen
dan hoef ik die extra variablen ook niet te doen
Kan uiteraard ook:
ik had net ff gekeken en het scheeld al 500 regels in mijn oude code
ben nog niet eens klaar met aanpassen
Het probleem waar jij tegenaan loopt is dat je sec naar het resultaat kijkt en niet naar de opbouw.
Terwijl je eigenlijk daar wel mee bezig bent.
Hoewel je nu al hier een verbetering in ziet. Wat we je gisteren probeerde duidelijk te maken is dat het snelst met een framework. Dan hoef je niet met nul te beginnen, dingen die je nodig hebt zoals routes, controllers, models, en views maakt dat je code overzichtelijk word. Denk jij nou werkelijk dat jij die dingen in je eentje zit te pruttelen in die hele kleine stukjes beter/veiliger zijn dan die bestaande frameworks?
Het is en blijft gewoon php. Alleen die gasten zitten met een heel team bugs te fixen.
Dus als ze wat vinden dat niet klopt onveilig is, dan is dat binnen no time gefixt.
Laravel, Codeigniter, Zend zijn echt wel systemen die veilig zijn.
Er zijn tegenwoordig veel mensen die zonder framework en jQuery niets kunnen maken.
Gewijzigd op 19/03/2020 13:03:11 door - SanThe -
ja klopt maar ik kan nu niet in korte termijn hier les in gaan volgen
en heb hier ook geen geld voor
met het oude werkt het en daarmee weet ik wat ik redelijk doe
ook al is het ouderwets en rommelig
ik heb weinig tot geen verstand van complexe classes of functies
indien ik voorbeelden heb dan snap ik het vaak wel en kan deze dan compleet zelf aanpassen naar mijn wensen
ik wil dolgraag indien ik alles weer goed heb overgaan naar een framework
echter kan ik dit nu op korte termijn niet werkent krijgen en dus ben ik genoodzaakt
mijn oude scripts in de, zo goed mogelijke manier met mijn eigen kennis aan te passen
Toevoeging op 19/03/2020 13:10:30:
- SanThe - op 19/03/2020 13:01:22:
@Bart: Voor mij geldt onafhankelijk zijn. Dus ik maak alles zelf. Dus geen jQuery en frameworks.
Er zijn tegenwoordig veel mensen die zonder framework en jQuery niets kunnen maken.
Er zijn tegenwoordig veel mensen die zonder framework en jQuery niets kunnen maken.
nou precies dat dus
voor mij geldt precies hetzelfde alleen heb ik iets minder kennis
maar dat komt vanzelf
Sylvester vader op 19/03/2020 13:08:58:
@Bart V B
ja klopt maar ik kan nu niet in korte termijn hier les in gaan volgen
en heb hier ook geen geld voor
met het oude werkt het en daarmee weet ik wat ik redelijk doe
ook al is het ouderwets en rommelig
ja klopt maar ik kan nu niet in korte termijn hier les in gaan volgen
en heb hier ook geen geld voor
met het oude werkt het en daarmee weet ik wat ik redelijk doe
ook al is het ouderwets en rommelig
Stukje bij beetje leer je toch bij? Daar hoef je echt geen úren of dágen vrij voor te nemen om cursussen te doen, en het mooie is dat je deze op eigen tempo ook thuis kan doen. Zat gratis cursussen.
- SanThe - op 19/03/2020 13:01:22:
@Bart: Voor mij geldt onafhankelijk zijn. Dus ik maak alles zelf. Dus geen jQuery en frameworks.
Er zijn tegenwoordig veel mensen die zonder framework en jQuery niets kunnen maken.
Er zijn tegenwoordig veel mensen die zonder framework en jQuery niets kunnen maken.
Ik ben blij met tools als jQuery, het tilt JavaScript naar een hoger niveau (letterlijk "write less, do more" hun motto geloof ik) waarbij het gros aan alle miniscule cross browser verschillen onder water vlot worden getrokken. Fix jij liever bugs in jouw native JavaScript code die in browser A wel werken en in browser B niet? Veel plezier.
Misschien is het "onafhankelijk zijn" iets te ver doorgeschoten naar de principiële hoek, waarbij het praktische aspect buiten beeld is geraakt?
Anyhow. Misschien valt er ook iets voor te zeggen om puur voor het formatteren van een bedrag ook een aparte functie te maken, die je dan in bovenstaande functie opneemt, of de rest gewoon uitschrijft ofzo. Ik weet niet of ik dit zo allemaal in de huidige vorm in een functie zou stoppen. Waarom zou je "0" omschrijven naar een "-"?
En wat als je straks met andere valuta's gaat werken? Misschien nu nog geen ding, maar als je dit straks op de bovenstaande wijze allemaal hebt ingericht kun je hier wéér met de schop doorheen. Het kan nooit kwaad om een beetje defensief te programmeren.
EDIT: doet ook de vraag rijzen of een bedrag van 0 euro relevant is.
Zoja: dan zou het logisch zijn om deze als een 0 voor te stellen, en niet een streepje.
Zonee: waarom is daar dan uberhaupt een record van / informatie over?
Gewijzigd op 19/03/2020 13:30:07 door Thomas van den Heuvel
echter mensen houden van mooie plaatjes en detail
en daarbij geeft php niet standaart een euro teken bij valuta,
daar zijn echter wel mogelijkheden voor maar dan ronden ze het weer af op hun eigen manier
maar even los daarvan. Beeld je een visuele pagina voor
een soort excel sheet
ik heb op deze lijst 31 rijen (alle dagen van een hele maand)
en 40 kolommen
elke cel moet een bedrag laten zien
normaal komt er dus automatisch 0 in als er niks is
dit ziet er echt heel lelijk uit en als je dit dan ook nog wilt printen is het niet overzichtelijk
dus die 0 moet weg
maar niks er neerzetten is niet professioneel.
In een boekhoud software zetten ze ook meestal - neer
is ff iets netter
Toevoeging op 19/03/2020 16:16:00:
- SanThe -
nogmaals bedankt :P
ik heb mijn grootste reken pagina nu ingekort met 1500 regels :P
ik ben nu me hele boekhoud script een het omgooien zodat bijna alles via functies gaat
ik ben tegelijkertijd aan het kijken of ik functies in functies kan doen op een goede manier
ik ben letterlijk rondjes aan het springen hier :D
Eindelijk... bovenstaande bracht mij op een aardig voorbeeldje voor een functie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function getAmount($amount, $showEuroSymbol = false) {
$prefix = '';
if($showEuroSymbol) {
$prefix = '€ ';
}
if(strlen(substr(strrchr($amount, "."), 1)) === 0) {
return $prefix . number_format($amount, 0 , ',', '.') . ',--';
}
return $prefix . number_format($amount, 2 , ',', '.');
}
echo getAmount(1000); // 1.000,--
echo getAmount(1100.2, false); // 1.100,20
echo getAmount(1200.35, true); // € 1.200,35
?>
function getAmount($amount, $showEuroSymbol = false) {
$prefix = '';
if($showEuroSymbol) {
$prefix = '€ ';
}
if(strlen(substr(strrchr($amount, "."), 1)) === 0) {
return $prefix . number_format($amount, 0 , ',', '.') . ',--';
}
return $prefix . number_format($amount, 2 , ',', '.');
}
echo getAmount(1000); // 1.000,--
echo getAmount(1100.2, false); // 1.100,20
echo getAmount(1200.35, true); // € 1.200,35
?>
Gewijzigd op 19/03/2020 17:12:36 door Frank Nietbelangrijk
want bijna alles in mijn script is visueel met € en met een uitzondering zonder