Итак, у меня есть приложение, которое я пишу, и оно, по большей части, работает хорошо.
Однако есть непредвиденное поведение, которое я не могу, на всю жизнь, понять, почему оно так себя ведет.
Код создает представление из таблицы MySQL, а затем задан ряд вопросов. Это простые вопросы да / нет, и (в зависимости от результата) истинные флаги устанавливаются в ложь. Когда остается только один истинный флаг, он загружает страницу, которая должна отображать карточку с информацией о оставленном символе.
Да / нет выполняет итерацию представления и изменяет флаги так, как должно , Однако, когда остается один символ, он сбрасывает все флаги обратно в true и отображает все символы вместо одного. Это должно быть как-то связано с MySQL, но я не вижу, что это может быть.
Ниже приведен класс results.class. php, в котором находится метод finalResult.
<?php
class result
{
protected $Conn;
public function __construct($Conn)
{
$this->Conn = $Conn;
}
public function dropResult()
{
$drop = "DROP VIEW if EXISTS result;";
$stmt = $this->Conn->prepare($drop);
$stmt->execute(array());
}
public function createResult()
{
$view = "CREATE VIEW result AS SELECT id, flag, name, image, quote FROM person;";
$stmt = $this->Conn->prepare($view);
$stmt->execute(array());
return $view;
}
public function resetFlag()
{
$update = "UPDATE person SET flag = true";
$stmt = $this->Conn->prepare($update);
$stmt->execute(array());
}
public function selectResult()
{
$select= "SELECT id, flag from result";
$stmt = $this->Conn->prepare($select);
$stmt->execute(array());
$select = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $select;
}
Public function iterateResult($id)
{
$changeFlag = "UPDATE result SET flag = false WHERE id= :id";
$stmt = $this->Conn->prepare($changeFlag);
$stmt->execute(array(':id' => $id));
}
public function countResult()
{
$flag = "SELECT flag from result WHERE flag = true";
$stmt = $this->Conn->prepare($flag);
$stmt->execute(array());
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function finalResult()
{
$characterResult = "SELECT name, image, quote FROM result WHERE flag = true;";
$stmt = $this->Conn->prepare($characterResult);
$stmt->execute(array());
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
?>
И вот результаты. php код
<?php
$result = new result($Conn);
$dropResult = $result->dropResult();
$createResult = $result->createResult();
$resetFlag = $result ->resetFlag();
$finalCharacter = $result->finalResult();
$smarty->assign('result', $finalCharacter);
?>
Я уверен, что это что-то действительно простое, но я просто не вижу здесь дерево для деревьев , Любые советы?
PS ... Изначально у меня был метод selectResult в качестве метода, который вызывался для $ finalCharacter, поэтому я создал новый метод из чистого отчаяния !!!