inkorten van php delen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Sylvester vader

sylvester vader

19/03/2020 11:00:07
Quote Anchor link
hi uhm ik heb een deel uit mijn script waar ik zeker van weet dat dit kleiner moet kunnen
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)
PHP script in nieuw venster Selecteer het PHP script
1
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, ',', '').'';
   }
            


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
 
PHP hulp

PHP hulp

26/04/2024 08:30:06
 
- Ariën  -
Beheerder

- Ariën -

19/03/2020 11:20:31
Quote Anchor link
Wat versta jij onder een wildmark?
Gewijzigd op 19/03/2020 11:20:45 door - Ariën -
 
Sylvester vader

sylvester vader

19/03/2020 11:22:59
Quote Anchor link
iets in richting van

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
 
- Ariën  -
Beheerder

- Ariën -

19/03/2020 11:27:34
Quote Anchor link
Zo werkt PHP normaliter niet, misschien via eval() maar daar zou ik zeker niet aan beginnen.
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.
 
Sylvester vader

sylvester vader

19/03/2020 11:34:56
Quote Anchor link
ik snap dat php zo niet werkt daarom ben ik ook op zoek naar iets

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
 
- Ariën  -
Beheerder

- Ariën -

19/03/2020 11:41:24
Quote Anchor link
Dan dwing je in de functie af welke berekening hij moet gebruiken?
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 -
 
Sylvester vader

sylvester vader

19/03/2020 11:51:37
Quote Anchor link
ik denk dat je wat door elkaar haald
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 -
 
- Ariën  -
Beheerder

- Ariën -

19/03/2020 12:12:26
Quote Anchor link
En dat het berekende variabelen zijn kan ik dus niet opmaken uit je script. ;-)
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 -
 
- SanThe -

- SanThe -

19/03/2020 12:14:26
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function maaktext($var)
{
    if($var == 0)    return '-';
    else        return '&euro;'.number_format($var, 2, ',', '');
}


$maandtotaalnettoinkastext = maaktext($maandtotaalnettoinkas);
$maandtotaalnettoinkasminbanktext = maaktext($maandtotaalnettoinkasminbank);
?>
 
Sylvester vader

sylvester vader

19/03/2020 12:21:28
Quote Anchor link
wow, nou daar heb ik iets aan :)

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
 
- SanThe -

- SanThe -

19/03/2020 12:43:06
Quote Anchor link
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


Kan uiteraard ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo maaktext($maandtotaalnettoinkas);
?>
 
Sylvester vader

sylvester vader

19/03/2020 12:54:17
Quote Anchor link
ja zo dus :P
ik had net ff gekeken en het scheeld al 500 regels in mijn oude code
ben nog niet eens klaar met aanpassen
 
- SanThe -

- SanThe -

19/03/2020 12:56:06
Quote Anchor link
Je kan ook gewoon getallen gebruiken indien nodig.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo maaktext(1234);
?>


Misschien is maakEuro() mooier dan maaktext().
Gewijzigd op 19/03/2020 12:57:19 door - SanThe -
 
Bart V B

Bart V B

19/03/2020 12:56:28
Quote Anchor link
Als je hier het licht van hebt gezien, dan snap je misschien ook wat wij zoals we gisteren al aangegeven hadden dat dingen stukken simpeler zijn/worden als je het in classes doet.

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.
 
- SanThe -

- SanThe -

19/03/2020 13:01:22
Quote Anchor link
@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.
Gewijzigd op 19/03/2020 13:03:11 door - SanThe -
 
Sylvester vader

sylvester vader

19/03/2020 13:08:58
Quote Anchor link
@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

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.


nou precies dat dus
voor mij geldt precies hetzelfde alleen heb ik iets minder kennis

maar dat komt vanzelf
 
- Ariën  -
Beheerder

- Ariën -

19/03/2020 13:16:43
Quote Anchor link
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

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.
 
Thomas van den Heuvel

Thomas van den Heuvel

19/03/2020 13:26:08
Quote Anchor link
- 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.


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
 
Sylvester vader

sylvester vader

19/03/2020 14:00:22
Quote Anchor link
haha ja ok, ik kan inderdaad ook 0 zo laten

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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/03/2020 17:10:10
Quote Anchor link
>> ik ben letterlijk rondjes aan het springen hier :D

Eindelijk... bovenstaande bracht mij op een aardig voorbeeldje voor een functie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 = '&euro; ';
    }

    
    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
 
Sylvester vader

sylvester vader

19/03/2020 17:37:07
Quote Anchor link
die is wel cool ja maar dan draai ik die liever persoonlijk om dus standaard met een € en if false dan zonder teken
want bijna alles in mijn script is visueel met € en met een uitzondering zonder
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.