voorwaarde accoord indien row een waarde heeft?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pascal Schuffelers

Pascal Schuffelers

17/09/2018 18:40:39
Quote Anchor link
Ik heb de volgende code.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php if ($row['RColorLUnit'] = "L") {
print "waarde gevonden";
}
else {
print "geen waarde";
}
?>


Er word een regel opgehaald uit een database.
Er word gekeken of $row['RColorLUnit'] een L bevat, maar er zijn nog 3 die een waarde kan bevatten op die L namelijk RColorL, RColorLMin en RColorLMax.

Nu wil ik dus die If-Functie uitbreiden als hij bij minimaal 1 van de drie een waarde ziet dat hij dan verder gaat.
Hoe moet ik dat dan doen?
 
PHP hulp

PHP hulp

22/08/2019 18:42:56
 
Rob Doemaarwat

Rob Doemaarwat

17/09/2018 18:48:31
Quote Anchor link
1) Je kijkT niet of ie een "L" bevat, maar je geefT $row['RColorLUnit'] de waarde "L". Met een "==" vergelijk je twee waarden met elkaar. Met een "=" ken je een waarde toe.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$x = 5; $y = 6;
var_dump($x == $y); //false
var_dump($x = $y); //6 ($x is nu gelijk aan $y, dus ook 6)


2) Ik krijg het idee dat je "of" bedoelT, in het Engels "or", en in PHP-land meestal geschreven als "||". Lees dit anders even: https://secure.php.net/manual/en/language.operators.logical.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$x = 5;
var_dump(($x == 4) || ($x == 5) || ($x == 6)); //true, want $x == 5 is waar
var_dump(($x == 4) && ($x == 5) && ($x == 6)); //false, want $x == 5 is wel waar, maar de rest niet
Gewijzigd op 17/09/2018 18:53:36 door Rob Doemaarwat
 
Pascal Schuffelers

Pascal Schuffelers

17/09/2018 20:33:40
Quote Anchor link
In principe beide, maar jij kent een waarde toe, ik wil dus als hij een waarde ziet, die in de database niet zijn ingevuld hebben geen waarde = dus leeg.

Dus even grof geformuleerd.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($row['RColorLUnit'] == "L" &&|| $row['RColorL'] == nothing)

De code zal grandioos fout zijn, maar wat ik bedoel.:

Als RColorLUnit = L en RColorL waarde is groter als niks
of
Als RColorLUnit = L en RColorL waarde is niks en RColorLMin is groter als niks
of
Als RColorLUnit = L en RColorL waarde is groter als niks en RColorLMin is groter als niks
og
Als RColorLUnit = L en RColorL waarde is groter als niks en RColorLMin is groter als niks en RColorLMax is groter als niks
enz...

Hij moet dus van RColorL, RColorLMin en RColorLMax iets vinden bij 1 van de 3 anders mag hij niet doorgaan.
Gewijzigd op 17/09/2018 20:34:17 door Pascal Schuffelers
 
- Ariën -
Beheerder

- Ariën -

17/09/2018 20:44:39
Quote Anchor link
&&|| gaat niet werken. het is AND (&&) of OF ( || )
Er is ook een AND-OR, maar dan heet het xor.
 
Pascal Schuffelers

Pascal Schuffelers

17/09/2018 20:48:52
Quote Anchor link
maar nothing of notnothing bestaat zoiets in php?

Toevoeging op 17/09/2018 21:09:35:

Kan dit?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($row['RColorLUnit'] == "L" && $row['RColorL'] > 0 || $row['RColorLUnit'] == "L" && $row['RColorLMin'] > 0 || $row['RColorLUnit'] == "L" && $row['RColorLMax'] > 0)
 
Rob Doemaarwat

Rob Doemaarwat

17/09/2018 21:14:15
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(($row['RColorLUnit'] == "L") && ($row['RColorL'] || $row['RColorMin'] || $row['RColorMax'])) ...

Omdat je van de laatste 3 alleen wilt weten of het iets of niets is hoef je niet echt ergens mee te vergelijken in PHP (die interpreteert de waarde dan direct als een boolean - null, "", en "0" zijn dan allemaal false).
 
Pascal Schuffelers

Pascal Schuffelers

17/09/2018 21:17:14
Quote Anchor link
Dus zo dan.:?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if ($row['RColorLUnit'] == "L") && ($row['RColorL'] || $row['RColorMin'] || $row['RColorMax']) > 0){
print "waarde gevonden";
}else {
print "geen waarde";
} ?>


Maar in deze situatie werkt het niet, zie niks verschijnen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if ($row['RColorLUnit'] == "L" && $row['RColorL'] || $row['RColorMin'] || $row['RColorMax']){
print "waarde gevonden";
}else {
print "geen waarde";
} ?>

werkt wel maar hij zegt steeds geen waarde.
Gewijzigd op 17/09/2018 21:30:06 door Pascal Schuffelers
 
Rob Doemaarwat

Rob Doemaarwat

17/09/2018 21:42:01
Quote Anchor link
Doe even een print_r($row), kopieer+plak die hier, en geef dan aan wat je had verwacht (wel/geen waarde).
 
Ozzie PHP

Ozzie PHP

17/09/2018 21:47:42
Quote Anchor link
Als je met dit ...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$row
['RColorL'] || $row['RColorMin'] || $row['RColorMax']) > 0
?>


... bedoelt dat 1 van die variabelen groter dan nul moet zijn, dan moet je de controle per variabele doen:

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

if ($row['RColorL'] > 0 || $row['RColorMin'] > 0 || $row['RColorMax'] > 0) {
  // doe iets
}

?>

Uiteindelijk denk ik dat je zoiets als dit zoekt:

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

if ($row['RColorLUnit'] === 'L' && (!empty($row['RColorL']) || !empty($row['RColorMin']) || !empty($row['RColorMax']))) {

  // doe iets

}

?>
Gewijzigd op 17/09/2018 21:48:37 door Ozzie PHP
 
Pascal Schuffelers

Pascal Schuffelers

18/09/2018 07:04:52
Quote Anchor link
bij nul waarde laat hij ze ook zien.

Dus.:
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
if ($row['RColorLUnit'] === 'L' && (!empty($row['RColorL']) || !empty($row['RColorLMin']) || !empty($row['RColorLMax']))) {


print "".$row['RColorL']."</br>";
print "".$row['RColorLMin']."</br>";
print "".$row['RColorLMax']."</br>";

print "waarde gevonden";
}else {  //print_r($row);
print "".$row['RColorL']."</br>";
print "".$row['RColorLMin']."</br>";
print "".$row['RColorLMax']."</br>";
print "geen waarde";
} ?>


Laat hij als ze nul zijn dit ook zien.:
0.0
0.0
0.0
waarde gevonden

zo lijkt het wel te werken.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
if ($row['RColorLUnit'] === 'L' && (($row['RColorL']>0) || !empty($row['RColorLMin']>0) || !empty($row['RColorLMax']>0))) {
print "".$row['RColorL']."</br>";
print "".$row['RColorLMin']."</br>";
print "".$row['RColorLMax']."</br>";

print "waarde gevonden";
}else {  //print_r($row);
print "".$row['RColorL']."</br>";
print "".$row['RColorLMin']."</br>";
print "".$row['RColorLMax']."</br>";
print "geen waarde";
} ?>
Gewijzigd op 18/09/2018 07:28:23 door Pascal Schuffelers
 
Ozzie PHP

Ozzie PHP

18/09/2018 07:40:11
Quote Anchor link
Als er letterlijk het getal 0 in de database staat, dan zul je inderdaad > 0 moeten gebruiken.

Probleem opgelost dus?
 
Thomas van den Heuvel

Thomas van den Heuvel

18/09/2018 14:44:22
Quote Anchor link
Als die kolommen slechts af en toe een waarde hebben, maar in andere gevallen niet, loont het misschien de moeite om toe te staan dat de speciale waarde NULL opgeslagen mag worden in die kolom zodat je onderscheid kunt maken tussen "een" of "geen" waarde in de kolom.

Daarnaast zul je ook gewoon je datahuishouding op orde moeten maken zodat alles ook netjes in de database zit. Waarbij je dus geen dummywaarden zoals 0, of 0.0 of wat dan ook invult als je eigenlijk "geen waarde" bedoelt.

Vervolgens kun je dan alle bovenstaande code verwijderen uit je applicatie, omdat deze enkel voor ruis zorgt. Vooral als je niet annoteert waarom die code nodig zou zijn...

Dit soort code maakt alles waarschijnlijk alleen maar complexer, het is zaak dat je het (achterliggende) probleem op de juiste plek oplost. Een zwik vage code als doekje voor het bloeden lijkt mij niet de oplossing.

EDIT: en vervolgens kun je dus heel eenvoudig nagaan of iets een waarde heeft of niet, door te vergelijken met NULL. In MySQL doe je dat met <kolom> IS (NOT) NULL.
Gewijzigd op 18/09/2018 14:46:34 door Thomas van den Heuvel
 
Pascal Schuffelers

Pascal Schuffelers

18/09/2018 19:17:08
Quote Anchor link
Als ik meer als 3 ga gebruiken van waarde gebeurd er niets meer.
Moet het nu (($row['RColorL']>0) zijn of !empty($row['RColorLMin']>0 als het 0 waarde ?

Vergeet aub mijn vraag, tijdens copy paste zijn er diverse dingen mis gegaan, werkt nu.
Gewijzigd op 18/09/2018 19:36:43 door Pascal Schuffelers
 



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.