Hallo allemaal,

Voor een medicijn kan alleen een USD- of een IQD-valuta ingevoerd en opgeslagen worden. En, elke valuta heeft een eigen field in het kolom purchaseprice.
En ik heb het invoer formulier zo gemaakt dat wanneer het input filed van IQD wat waarde bevat, dan wordt het USD input field d.m.v. javascript automatisch uitgeschakeld en visa versa.

En voor het verzenden van het formulier controleer ik zowel dmv een veriabel of een USD of een IQD bestaat met de volgende code:
En toch krijg ik bij elke keer gegevens invoer een mailtje met daarin undefined variable for purchasepriceDi of purchasepriceDo.
En dit vind ik erg vervelend.

Alvast bedankt voor het meedenken.

<?php if (isset($_POST['purchasepriceDi'])){
			@$purchasepriceDi = mysqli_real_escape_string ($dbc, $trimmed['purchasepriceDi']);
	}
	if (isset($_POST['purchasepriceDo'])){
			@$purchasepriceDo = mysqli_real_escape_string ($dbc, $trimmed['purchasepriceDo']);
	}
?>
Dan zou ik de foutmeldingen zeker niet 'afplakken' met een @. Want daarmee verhelp je niks, en verberg je het probleem alleen maar.

De enige beste oplossing is het gebruik van isset() op de juiste manier.
Yup. Gewoon je code repareren, die foutmeldingen krijg je omdat je codepaden volgt die afhankelijk zijn van het bestaan van bepaalde waarden. Ze zijn dus terecht als je die waarden niet gevuld hebt in die codepaden. Gewoon mbv isset() kijken wat gevuld is en wat niet.
Waar komt $trimmed['purchasepriceDi'] vandaan?
"Undefined variable meldingen niet meer ontvangen"

Klinkt als: ik wil niet weten wanneer er fouten in mijn code zitten.

Allesbehalve een goed idee.
In een if definieer je nu $purchasepriceDi óf $purchasepriceDo, maar nooit beide tegelijk. Kennelijk gebruikt je code verderop wél ergens $purchasepriceDi en $purchasepriceDo tegelijk.
Misschien handig om wat achtergrond info te geven over de 2 kolommen, nl:
PurchasepriceDi
PurchasepriceDo.
Beide zijn van het type decimal, eentje met waarde 15,4 en 13,2.
Zie URL: http://hawarco.co/img/printscreen_purchaseprice.png

En, eigenlijk is mijn probleem heel simpel, maar mijn vermoeden is dat mysql niet accepteert dat een kolom van het type decimal geen waarde bevat. En, daarom krijg ik telkens een Undefined variable wanneer bijv de variabel: $purchasepriceDi of $purchasepriceDo geen waarde bevat of het kan zijn dat de bovenstaande isset doet het niet wat het moet doen...
Want eigenlijk hoeft een gebruiker geen purchase price op te geven tijdens het invoeren van een medicijn. Het is dus geen vereiste en daarom laat ik geen bericht zien wanneer het geen waarde bevat.

Hopelijk is nu mijn vraag/probleem duidelijk ;-)
tuurlijk accepteert Mysql dat wel. Mits jij niet "NOT NULL" in de definitie van de kolom gebruikt.

Er zit trouwens verschil in "$_POST['xyz'] bestaat niet" en "$_POST['xyz'] is leeg"

isset() controleert op het bestaan van het veld.
verwijder jij (met bijvoorbeeld disabled) het element uit je form, of verberg je hem alleen maar?
Hallo Ivo,

Als je naar het plaatje: http://hawarco.co/img/printscreen_purchaseprice.png wil kijken, dan zie je volgens mij dat dat ik beide kolommen niet gedefinieerd zijn als not null.

Betekent dat ik in in de if statement ook !empty moet gebruiken ipv isset?

Nee, er wordt niets verwijderd of verborgen in het formulier.
Betreffende input field wordt enkel uitgeschakeld, dus helemaal grijs dat er niets ingevuld kan worden. En, dit gebeurt enkel wanneer andere input field wat waarde heeft...
"dus helemaal grijs dat er niets ingevuld kan worden"

middels "disabled"? of zelf met de kleur gespeeld en readonly gemaakt? In dat laatste geval is hij wel geset, maar eventueel wel leeg.

-
en jouw screenshot lees ik als "mag hij null zijn? NO"
zeker aangezien er ook NO staat bij de kolom "id" die zeker niet null mag zijn...

[size=xsmall]Toevoeging op 09/10/2017 14:14:37:[/size]

btw: quantity klinkt als een hoeveelheid. VARCHAR lijkt me daar niet numeriek genoeg voor.

En wat is sellingprice, als dat een varchar is?
Het decimale scheidingsteken is nog altijd een punt, en geen komma. Misvormde getallen voeren aan een kolom voor een numeriek type gaat hoogstwaarschijnlijk niet goed.

Overigens: waarom niet één dropdownveld voor een valuta, en één invulveld voor een bedrag? Tegelijkertijd heb je dan ook maar één kolom voor een bedrag nodig in je database? :/

Reageren