Ik heb de volgende code.:

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


$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

$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
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.:
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.
&&|| gaat niet werken. het is AND (&&) of OF ( || )
Er is ook een AND-OR, maar dan heet het xor.
maar nothing of notnothing bestaat zoiets in php?

[size=xsmall]Toevoeging op 17/09/2018 21:09:35:[/size]

Kan dit?

if ($row['RColorLUnit'] == "L" && $row['RColorL'] > 0 || $row['RColorLUnit'] == "L" && $row['RColorLMin'] > 0 || $row['RColorLUnit'] == "L" && $row['RColorLMax'] > 0)

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).
Dus zo dan.:?


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.

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.
Doe even een print_r($row), kopieer+plak die hier, en geef dan aan wat je had verwacht (wel/geen waarde).
Als je met dit ...

<?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:

<?php

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

?>
Uiteindelijk denk ik dat je zoiets als dit zoekt:

<?php

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

// doe iets

}

?>
bij nul waarde laat hij ze ook zien.

Dus.:

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

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";
} ?>
Als er letterlijk het getal 0 in de database staat, dan zul je inderdaad > 0 moeten gebruiken.

Probleem opgelost dus?

Reageren