사용자가 이전 페이지의 양식에서 어떤 상자를 체크했는지에 대한 정보를받는 결과 페이지입니다. 이 정보는 사용자 이름의 선택에 따라 데이터베이스의 값과 정보를 가져옵니다. 나는 if/else if/else 문이 활성화되지 않은 상황에서 맨 아래에 문제가 발생했다. 내 논리 오류를 찾도록 도와 줄 수 있습니까?논리 오류를 찾을 수 없습니다. 테스트 할 조건이 참이 아닙니다.
그것은 결코 사실이다 라인
else if($iceli && !$icleiDB){
과 하단에 아래로 발생합니다. 해당 명령문이 true로 평가되면 새 행이 데이터베이스의 테이블에 삽입됩니다. 대신 $ iclei가 true이고 $ icleiDB가 false이면 (진술을 사실로 만들어야 함), $ iclei가 true이고 $ icleiDB가 true 인 경우에만 발생하는 것으로 간주되는 "iclei는 사실로 유지됩니다"라는 결과를 얻습니다 .
참고 : $ mySqlConnection-> doQuery() 또는 $ mySqlConnection-> doNonQuery()가 표시 될 때마다 데이터베이스 연결을 단순화하는 MySqlConnection.php라는 PHP 파일을 사용하고 있는데, 이는 데이터베이스에 대한 호출입니다. , 괄호 안에있는 것은 쿼리입니다.
<?php
require_once 'MySqlConnection.php';
$server = 'localhost';
$dataBase = 'ise_programs';
$userName = 'root';
$password = 'root';
$mySqlConnection = new MySqlConnection($server,
$dataBase,
$userName,
$password);
$townName = $_POST["townName"];
//$townName = addslashes($townName); //To pevent SQL Injection, but make sure magic quotes are off
$townidQuery = "SELECT townid
FROM tbltowns
WHERE townname = '$townName'";
$townidArray = $mySqlConnection->doQuery($townidQuery);
$townid = $townidArray[0][0];
//grab values the user selected in the form
$iclei = $_POST["ICLEI"];
$ccef = $_POST["CCEF"];
$ise = $_POST["ISE"];
$ceef = $_POST["CEEF"];
$epacc = $_POST["EPACC"];
$k12ise = $_POST["K12ISE"];
$kctc = $_POST["KCTC"];
$mbbpm = $_POST["MBBPM"];
$n2n = $_POST["N2N"];
$sbpm = $_POST["SBPM"];
?>
<html>
<body>
<p>HTML works.</p>
<p>
townName = <?php echo($townName) ?>
<br />
townid = <?php echo($townid) ?>
</p>
<p>Values selected by the user: </p>
<ul>
<li>ICLEI = <?php echo($iclei) ?></li>
<li>CCEF = <?php echo($ccef) ?></li>
<li>ISE = <?php echo($ise) ?></li>
<li>CEEF = <?php echo($ceef) ?></li>
<li>EPACC = <?php echo($epacc) ?></li>
<li>K12ISE = <?php echo($k12ise) ?></li>
<li>KCTC = <?php echo($kctc) ?></li>
<li>MBBPM = <?php echo($mbbpm) ?></li>
<li>N2N = <?php echo($n2n) ?></li>
<li>SBPM = <?php echo($sbpm) ?></li>
</ul>
<p>Values from the database:</p>
<?php
$enabledProjectsListQuery = "SELECT projectid
FROM tblenabledprojects
WHERE townid = $townid";
$enabledProjectsList = $mySqlConnection->doQuery($enabledProjectsListQuery);
//convert enabled projects list into an array of single values
$enabledProjects = array();
for($i = 0; $i < count($enabledProjectsList); $i++){
$enabledProjects[] = $enabledProjectsList[$i][0];
}
//print the values in the enabledProjects array
echo('enabledProjects = ');
foreach($enabledProjects as $i){
echo($i . ", ");
}
//declare variables outside if statements
$icleiDB = false;
$ccefDB = false;
$iseDB = false;
$ceefDB = false;
$epaccDB = false;
$k12iseDB = false;
$kctcDB = false;
$mbbpmDB = false;
$n2nDB = false;
$sbpmDB = false;
//determine whether values were enabled in the database (and print them)
echo("<p>");
if(in_array(1, $enabledProjects)){
echo "in first if 108 ".$icleiDB."<br>";
echo('iclei is ENABLED. <br />');
$icleiDB = true;
}
else{
echo "in else 113 ".$icleiDB."<br>";
echo('iclei is not enabled. <br />');
$icleiDB = false;
}
if(in_array(2, $enabledProjects)){
echo('ccef is ENABLED. <br />');
$ccefDB = true;
}
else{
echo('ccef is not enabled. <br />');
$ccefDB = false;
}
if(in_array(3, $enabledProjects)){
echo('ise is ENABLED. <br />');
$iseDB = true;
}
else{
echo('ise is not enabled. <br />');
$iseDB = false;
}
if(in_array(4, $enabledProjects)){
echo('ceef is ENABLED. <br />');
$ceefDB = true;
}
else{
echo('ceef is not enabled. <br />');
$ceefDB = false;
}
if(in_array(5, $enabledProjects)){
echo('epacc is ENABLED. <br />');
$epaccDB = true;
}
else{
echo('epacc is not enabled. <br />');
$epaccDB = false;
}
if(in_array(6, $enabledProjects)){
echo('k12ise is ENABLED. <br />');
$k12iseDB = true;
}
else{
echo('k12ise is not enabled. <br />');
$k12iseDB = false;
}
if(in_array(7, $enabledProjects)){
echo('kctc is ENABLED. <br />');
$kctcDB = true;
}
else{
echo('kctc is not enabled. <br />');
$kctcDB = false;
}
if(in_array(8, $enabledProjects)){
echo('mbbpm is ENABLED. <br />');
$mbbpmDB = true;
}
else{
echo('mbbpm is not enabled. <br />');
$mbbpmDB = false;
}
if(in_array(9, $enabledProjects)){
echo('n2n is ENABLED. <br />');
$n2nDB = true;
}
else{
echo('n2n is not enabled. <br />');
$n2nDB = false;
}
if(in_array(10, $enabledProjects)){
echo('sbpm is ENABLED. <br />');
$sbpmDB = true;
}
else{
echo('sbpm is not enabled. <br />');
$sbpmDB = false;
}
echo("</p>");
if($icleiDB){
echo "determined to be true 193 ".$icleiDB."<br>";
echo('icleiDB is true.');
}
elseif(!$icleiDB){
echo "determined to be false 197 ".$icleiDB."<br>";
echo('icleiDB is false.');
}
//compare selections with DB values and decide what needs to change
if(!$iclei && $icleiDB){ //user says iclei = false, DB says true. delete from DB
$mySqlConnection->doNonQuery(
"DELETE FROM tblenabledprojects
WHERE townid = '$townid' AND projectid = '1'"
);
echo("Values deleted from database: ICLEI true -> false");
}
//echo "******iceli = ".$iceli." and icleiDB = ".$icleiDB."******<br>";
else if($iceli && !$icleiDB){ //user says iceli = true, DB says false. add to DB
$mySqlConnection->doNonQuery(
"INSERT INTO tblenabledprojects
VALUES ('$townid', '1')"
);
echo("Value added to database: ICLEI false -> true");
}
else{
if($iclei){
echo("iclei remains true");
}
elseif(!$iclei){
echo('iclei remains false');
}
else{
echo('Who knows?');
}
}
?>
</body>
</html>
예. 지금 당장 눈에 띄는 것은 중첩 된 IF 문입니다. 대신 switch 문을 사용해야하며 오류가 발생할 확률은 적습니다. 나는 이미 두 곳에서'else if'에 공간이 없다고 봅니다. – Ally