2017-09-24 1 views
0

J'ai rencontré un problème d'affichage des données sur mon canvas. J'ai plusieurs instructions if, else if que je voulais évaluer pour déterminer quel texte afficher en fonction de l'entrée de l'utilisateur.Le canevas devient vide lorsque mes conditions if sont fausses

Si je crée la condition où une seule instruction if est vraie, le texte qui doit être affiché le fait. Toutefois, lorsque j'ajoute des instructions else if supplémentaires ou si l'instruction if est évaluée comme étant fausse, le canvas est complètement vide. Exemples ci-dessous:

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); 
} 

Ceci fonctionne uniquement si c'est la seule condition évaluée et la condition est évaluée comme vraie. Si elle est évaluée comme fausse, mon canvas devient vide.

Aussi, si j'ajoute else if supplémentaires déclarations pour gérer d'autres cas, je veux évaluer, le canvas reste toujours vide ....

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); 
} 

Est-ce que cela a quelque chose à voir avec la façon dont j'utiliser la déclaration empty dans php ou est-ce que je manque quelque chose d'autre? J'utilise le code similaire à cela dans d'autres endroits de mon canvas et cela fonctionne comme prévu.

[modifier]

est ici l'ensemble de javascript j'utiliser pour évaluer si l'utilisateur a des valeurs d'entrée ou si elles sont vides et ce texte que je veux afficher en fonction de ces entrées.

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); 

}

+0

vous ne traitez pas le changement de contexte! –

+0

S'il reste vide. S'il vous plaît jeter un oeil à la console des outils de développement s'il y a une erreur. –

+0

Si le seul évalue comme faux, il ne tire sûrement rien. Par conséquent serait vide lol (son une chaîne vide aussi serait encore "vide") Et le reste, pouvez-vous coller le javascript final qui est créé ... peut-être que PHP crache des erreurs et le ruine. – Epirocks

Répondre

1

Ce code est un peu liitle ... laid. Voici une solution pour le rendre meilleur et traiter le changement du contexte de la bonne manière en utilisant json. Il est également préférable de déboguer.

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!'); 
} 
+0

Merci ... Je fais un essai. Je suis descendu la route "variable" précédemment (pas exactement comme la vôtre) et j'ai toujours le même problème ... Je suis suivi de votre syntaxe et enverra une mise à jour sous peu. – airider74

+0

Joshua K ... cela fonctionne comme un champion .... a dû corriger un petit bug dans votre code et nous sommes bien rangée 9: changer + row.civ1 à + rowObj.civ1 – airider74

+0

@ airider74 fixe. Merci d'avoir fait remarquer cela. –