Hallo allemaal,

Voor elk medicijn kan er een USD- of een IQD-valuta ingevoerd en opgeslagen worden. Elk valuta heeft een eigen kolom nl, purchasepriceDi of purchasepriceDo.
En nu probeer ik het valuta voor elk medicijn weer te geven in een tabel/td.
En hiervoor gebruik ik onderstaande code.
Maar jullie raden het al; nu worden beide valuta's weergegeven in een tabel/td voor alle medicijnen i.p.v. enkel wat bij een medicijn hoort.

Alvast bedankt voor jullie suggesties.



<?php
$currencyDi = $row['purchasepriceDi'];
$currencyDo = $row['purchasepriceDo'];
		if(!empty($currencyDi) OR ($currencyDo)){
			echo number_format($currencyDi);
			setlocale(LC_MONETARY,"en_US");
			echo money_format("%i", $currencyDo);
			}


?>
Ik snap niet helemaal waarom je je beperkt tot deze valuta. Zo werkt de medicijnahandel niet. Ook niet in Irak. Medicijnen worden verhandeld in hun bronvaluta. Afhankelijk uit welk land een medicijn afkomstig is kan dit dus andere valuta zijn.

Tip: leer eerst eens wat over wat software voor apotheken doet en waarom het doet wat het doet. En begin dan opnieuw, want het gaat echt van kwaad tot erger.
Omdat alleen deze valuta's van belang zijn voor degene die de applicatie zullen gebruiken.
En deze gebruikers zijn lokale apothekeres, en kopen hun medicijnen van een importeur/"lokale" tussenhandelaar en er zal betaald worden alleen in USD of in IQD.

En, eigenlijk moet je deze applicatie heel eenvoudig zien en niet als een gewone apotheek software, die zware eisen en functies heeft ;-)
Als currencydi niet leeg is
OF
als currencydo een waarde bevat
DAN....

dus als een van de de 2 een waarde bevat, of beide dan...

En DAN:
print je ook inderdaad beide waarden.

Mogelijk mis je ergens een ELSE in je code?
En daarbij is de hele voorwaarde ook wat vaag.

btw:
is het nu handig om beide valuta in een aparte kolom te plaatsen?
Het lijkt mij verstandiger om het bedrag in 1 kolom te zetten, en daarnaast een kolom die aangeeft of het om USD of IQD gaat.
Dan kun je namelijk heel eenvoudig omschakelen als er een 3e currency bij komt. Nu kun je wel roepen dat het er 2 zijn en altijd 2 blijven, maar de praktijk altijd anders. Kost je nu mogelijk een middag extra om te snappen hoe je het op die manier doet, maar mochten ze ineens toch op het idee komen om Euro's, Yens of Sjekels nodig te hebben, dan moet jij je hele applicatie opnieuw bouwen. (of je bent in 15 minuten klaar door currency en weergave formaat op te nemen)
Hallo Ivo,

Dus als ik het goed begrijp, dan moet ik het op de volgende manier aanpakken:

1. In de medicines tabel 1x kolom aanmaken voor de waarde van verschillende valuta
1. Een aparte tabel aanmaken voor verschillende valuta met als kolomen; id, name
3. In de medicines tabel een foreign key opnemen die linkt naar valuta tabel
4. Het invoer formulier wijzigen als volgt; huidige input fields voor valuta verwijderen. een dropdown lijst die weergeeft uit welke valuta een gebruiker kan kiezen. Naast dit een input field beschikbaar maken voor het invoeren van de waarde van valute?
5. Tijdens het weergeven van welk valuta bij elk medicijn hoort, controleren welk id van valuta hoort bij een medicijn?

Zijn deze gedachtegang correct?
ja.

en dan kun je in die nieuwe tabel ook iets opnemen over het gewenste formaat van weergeven (decimaal tekens, aantal cijfers achter de komma etc)
Door het huidige ontwerp van je database moet je nu ook noodgedwongen een rare spagaat maken in je code. Wanneer je je database beter structureert zal dit ook een positief effect hebben op de code die hiermee moet werken.
Ivo P op 09/10/2017 14:21:21

ja.

en dan kun je in die nieuwe tabel ook iets opnemen over het gewenste formaat van weergeven (decimaal tekens, aantal cijfers achter de komma etc)


Tnx!
Dat doe ik toch in de medicines tabel door een kolom aan te maken voor de waarde van een valuta met bijbehorende type voor kolom? En tijdens het weergeven van een valuta gebruik ik dan number_format om het valuta netjes/correct weer te geven?

Of bedoel je dat ik een extra kolom moet aanmaken in het valuta tabel voor decimaal tekens, aantal cijfers? Maar betekent dit dat ik number_format straks niet nodig heb?
number_format() gebruik je dan zeker wel, maar de parameters die je nodig hebt (decimaal teken, aantal cijfers) haal je uit die tabel
Ivo P op 09/10/2017 15:27:56

number_format() gebruik je dan zeker wel, maar de parameters die je nodig hebt (decimaal teken, aantal cijfers) haal je uit die tabel


Sorry, het is niet duidelijk voor me. Heb je misschien een voorbeeld/tutorial voor me?
in de table valuta

id  name  symbol decsep thousep decimals  
 1   USD    $       '.'   ','        2
 2   IQD    ®       ','   ','        3
 3   GBP    £       '.'   ','        2


als je dan een query uitvoert, met een join naar deze tabel

dan krijg je bijvoorbeeld je resultaat in $row als een array.

<?= number_format($row['amount'], $row['decimals'], $row['decsep'], $row['thousep']); ?>

---
al is even de vraag of het number format nu afhankelijk is van de currency of van de taal van de lezer.

Als ik schrijf dat iets $4,95 kost, dan is dat voor heel Nederland duidelijk.
Maar een hoop Amerikanen zullen € 4.467,95 er weer raar vinden uitzien. En dat is dus afhankelijk van de lezer, niet van de valuta.

--
check ook eens http://php.net/numberformatter

Reageren