Reputation: 400
I've run into an issue displaying data on my canvas
. I have multiple if
, else if
statements that I wanted evaluated to determine which text to display based on user input.
If I create the condition where a single if
statement is true, the text that should be displayed does. However when I add additional else if
statements or if the single if
statement evaluates as false, the canvas
goes completely blank. Examples below:
if((<?php echo empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("", 705, 175);
}
This works only if it is the only condition evaluated and the condition evaluates as true. If it evaluates as false, it causes my canvas
to go blank.
Also if I add additional else if
statements to handle other cases I want evaluated, the canvas
always stays blank....
if((<?php echo empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("", 705, 175);
}
else if((<?php echo !empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 705, 175);
}
else if((<?php echo !empty($row['civ1']);?>) &&
(<?php echo !empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ2']);?>", 760, 195);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 215);
}
Does this have something to do with how I use the empty
statement in php
or am I missing something else? I use code similar to this in other places of my canvas
and it works as expected.
[edit]
Here's the full set of javascript I use to evaluate if the user has input values or if they are blank and then what text I want displayed based on those inputs.
if((<?php echo empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("", 705, 175);
}
else if((<?php echo !empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 705, 175);
}
else if((<?php echo !empty($row['civ1']);?>) &&
(<?php echo !empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ2']);?>", 760, 195);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 215);
}
else if((<?php echo !empty($row['civ1']);?>) &&
(<?php echo !empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ2']);?>", 760, 195);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 215);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 235);
}
else if((<?php echo empty($row['civ1']);?>) &&
(<?php echo !empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ2']);?>", 760, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 195);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 215);
}
else if((<?php echo empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ3']);?>", 760, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 195);
}
else if((<?php echo empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ4']);?>", 760, 175);
}
else if((<?php echo !empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 195);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 215);
}
else if((<?php echo !empty($row['civ1']);?>) &&
(<?php echo !empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ2']);?>", 760, 195);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 215);
}
else if((<?php echo !empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 195);
}
else if((<?php echo empty($row['civ1']);?>) &&
(<?php echo !empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ2']);?>", 650, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 195);
}
else if(((<?php echo empty($row['civ1']);?>) &&
(<?php echo !empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ2']);?>", 650, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 195);
}
else if((<?php echo empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo !empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ3']);?>", 760, 175);
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 195);
}
else if((<?php echo empty($row['civ1']);?>) &&
(<?php echo empty($row['civ2']);?>) &&
(<?php echo !empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ3']);?>", 760, 175);
}
else if((<?php echo empty($row['civ1']);?>) &&
(<?php echo !empty($row['civ2']);?>) &&
(<?php echo empty($row['civ3']);?>) &&
(<?php echo empty($row['civ4']);?>)){
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
ctx2.fillText("Civilian Goal: <?php echo ($row['civ2']);?>", 760, 175);
}
Upvotes: 0
Views: 36
Reputation: 2537
This code is a liitle bit... ugly. Here is a solution to make it better and treat the change of the context in the right way using json. It's also better to debug.
var rowObj = <?=json_encode($row);?>;
// the following settings are the same for all conditions:
ctx2.font = "16px Arial";
ctx2.fillStyle = "green";
ctx2.textAlign = "left";
if(!rowObj.civ1 && !rowObj.civ2 && !rowObj.civ3 && !rowObj.civ4){
ctx2.fillText("", 705, 175);
} else if(rowObj.civ1 && !rowObj.civ2 && !rowObj.civ3 && !rowObj.civ4){
ctx2.fillText("Civilian Goal: "+rowObj.civ1, 705, 175);
} else if(rowObj.civ1 && rowObj.civ2 && rowObj.civ3 && !rowObj.civ4){
ctx2.fillText("Civilian Goal: "+rowObj.civ1, 650, 175);
ctx2.fillText(rowObj.civ2, 760, 195);
ctx2.fillText(rowObj.civ3, 760, 215);
} else {
alert('None of the conditions are met!');
}
Upvotes: 1