Undefined variable meldingen niet meer ontvangen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mohamed nvt

Mohamed nvt

08/10/2017 21:50:41
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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']);
    }

?>
 
PHP hulp

PHP hulp

02/10/2022 08:55:02
 
- Ariën  -
Beheerder

- Ariën -

08/10/2017 22:07:48
Quote Anchor link
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.
 
Ben van Velzen

Ben van Velzen

08/10/2017 22:40:41
Quote Anchor link
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.
 
- SanThe -

- SanThe -

09/10/2017 00:11:46
Quote Anchor link
Waar komt $trimmed['purchasepriceDi'] vandaan?
 
Ozzie PHP

Ozzie PHP

09/10/2017 07:21:45
Quote Anchor link
"Undefined variable meldingen niet meer ontvangen"

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

Allesbehalve een goed idee.
 
Ward van der Put
Moderator

Ward van der Put

09/10/2017 07:50:47
Quote Anchor link
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.
 
Mohamed nvt

Mohamed nvt

09/10/2017 09:16:18
Quote Anchor link
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 ;-)
 
Ivo P

Ivo P

09/10/2017 10:20:02
Quote Anchor link
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?
Gewijzigd op 09/10/2017 10:36:03 door Ivo P
 
Mohamed nvt

Mohamed nvt

09/10/2017 13:59:12
Quote Anchor link
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...
 
Ivo P

Ivo P

09/10/2017 14:13:10
Quote Anchor link
"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...

Toevoeging op 09/10/2017 14:14:37:

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

En wat is sellingprice, als dat een varchar is?
 
Thomas van den Heuvel

Thomas van den Heuvel

09/10/2017 14:27:52
Quote Anchor link
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? :/
 
Mohamed nvt

Mohamed nvt

10/10/2017 19:32:56
Quote Anchor link
Hallo Ivo,

Nope, gewoon met een Javascriptje die de input helemaal grijs maakt/uitschakelt. Als je het wil, dan wil ik hem wel delen hoor ;-)
OKe, thanks voor uitleg over NULL ;-)
Eigenlijk heb je daar gelijk in dat quantity en sellingprice ook een nummer moeten zijn, maar dan eerst wil ik het probleem van purchase price oplossen en wellicht kan ik hetzelfde concept ook gebruiken voor sellingprice ;-)

Toevoeging op 11/10/2017 15:41:01:

Update:

Het wil op geen enkel manier lukken en accepteren dat purchase price geen waarde heeft.
Eigenlijk ben ik helemaal nu radeloos en hopelijk heeft iemand nog een idee.

Ik heb het volgende reeds uitgevoerd:
1. Bij kolom purchase price staat null op yes en default is null
2. bij FK currency_id staat null op yes en default is null
3. De relatie van medicines to currency heb ik on delete en on update op set null gezet.

In PHP heb ik de code als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

if (isset($trimmed['purchaseprice']) && !empty($trimmed['purchaseprice'])){
            $purchaseprice = mysqli_real_escape_string ($dbc, $trimmed['purchaseprice']);
    }
else {
        echo 'fuck you!';
    }

?>


In de foutafhandeling krijg ik de volgende foutmelding:

An error occurred in script '/med_insert.php' on line 117: Undefined variable: purchaseprice
An error occurred in script '/med_insert.php' on line 118: Query: INSERT INTO medicines
(medicinename, genericname,expiredate,quantity,sellingprice,purchaseprice, medicineregistration, userid, medicinetype_id,currency_id)
VALUES
('test1','test','2017-11-11','100','','', NOW(), '3', '19', ''????
<br />MySQL Error: Cannot add or update a child row: a foreign key constraint fails (`DB2681116`.`medicines`, CONSTRAINT `medicines_ibfk_3` FOREIGN KEY (`currency_id`) REFERENCES `currency` (`id`) ON DELETE SET NULL ON UPDATE SET NULL)

Blijkbaar mag een decimaal kolom niet leeg zijn of zo...
 
Mohamed nvt

Mohamed nvt

12/10/2017 12:00:14
Quote Anchor link
Update:

Het probleem heb ik zelf opgelost door een work-around ;-)

Allemaal bedankt voor het meedenken ;-)
 
Ivo P

Ivo P

12/10/2017 12:23:11
Quote Anchor link
MySQL Error: Cannot add or update a child row: a foreign key constraint fails (`DB2681116`.`medicines`, CONSTRAINT `medicines_ibfk_3` FOREIGN KEY (`currency_id`) REFERENCES `currency` (`id`

dit zegt dat je in de tabel medicines de kolom currency_id moet vullen met een waarde die ook in de tabel currency staat in de kolom id.


btw:
is het niet wat raar dat je per medicijn kennelijk al opslaat welke prijs en valuta gebruikt werd? Kun je die een week later niet opnieuw kopen in een andere land voor een andere prijs?
 
Ben van Velzen

Ben van Velzen

12/10/2017 12:46:45
Quote Anchor link
Correct. Al werk je met distributeurs, hun prijzen wijzigen praktisch iedere seconde.
 
Mohamed nvt

Mohamed nvt

12/10/2017 13:42:27
Quote Anchor link
Hallo Ivo,


Ik was ook erachter gekomen dat de currency_id kolom in de medicines tabel een waarde moet hebben diezelfde waarde is als kolom id in de currency tabel.
Maar wat ik niet begrijp is hoe ik dit kan realiseren. Op het net heb ik verschillende artikelen gelezen dat een FK leeg mag zijn en daarom heb ik bij de relatie tussen medicines tabel en currey de set null gezet op update en delete. Helaas mocht dit allemaal niet baten.
Als je hier een idee/oplossing voor hebt, dan hoor ik dat graag.

Wat prijs betreft voor een medicijn, ben ik eigenlijk van het volgende uitgegaan:
Maandelijks worden medicijnen ingekocht en de prijs kan per maand verschillen. Maar als de medicijnen dagelijks of wekelijks worden ingekocht, tjah hier heb ik geen rekening mee gehouden. En, ik zou niet weten hoe ik dit moet aanpakken op database niveau.
Hoe zou je dit aanpakken en zou je bijv de prijs per medicijn opslaan of beter gezegd wat stel je voor eigenlijk?
Gewijzigd op 12/10/2017 14:24:57 door Mohamed nvt
 
Mohamed nvt

Mohamed nvt

14/10/2017 20:31:55
Quote Anchor link
Hallo Ivo & Ben,

Wat is het probleem volgens jullie wanneer ik de prijs per medicijn invoer?
 



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.