Несколько операторов if с GET не выводятся правильно в PHP с XPath - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь получить общее количество редактирований или соавторов книг двумя авторами. (Они выбираются пользователем с помощью флажков, поэтому я использовал GET, чтобы проверить, установлен ли флажок).

Я даю перекрестные ссылки авторам 'a' (mj) и 'b' (мс) из 'a's' (mj) xml do c, который содержит всю информацию об их публикации.

В настоящее время у меня есть это:

if ($_GET['author'] == 'mj55'){

                $getMj = new DOMDocument();
                $getMj->load("Margret-Jane.xml");
                $mjxpath = new DOMXpath($getMj);

                $mjAuth = $mjxpath->query("////author[@id = 'mj55']")->length;
                $mjEdit = $mjxpath->query("////editor[@id = 'mj55']")->length;
                $mjResult = ($mjAuth + $mjEdit);




                if ($_GET['author'] == 'ms10' ) {

                    $mjmsA = $mjxpath->query("////author[@id = 'ms10']")->length;
                    $mjmsE = $mjxpath->query("////editor[@id = 'ms10']")->length;
                    $mjmsTotal = ($mjmsA + $mjmsE);
                    echo $mjmsTotal;
                }
            }

, если я помещаю echo $ mjResult в конец первого оператора if, я получаю правильный вывод. Но я не получаю никакого вывода из echo $ mjmsTotal

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

вы использовали вложенный if, и поэтому вы получаете результат только first if ... попробуйте использовать оба оператора if полностью независимыми друг от друга. Вот пример -

$getMj = new DOMDocument();
$getMj->load("Margret-Jane.xml");
$mjxpath = new DOMXpath($getMj);
if ($_GET['author'] == 'mj55'){
                $mjAuth = $mjxpath->query("////author[@id = 'mj55']")->length;
                $mjEdit = $mjxpath->query("////editor[@id = 'mj55']")->length;
                $mjResult = ($mjAuth + $mjEdit);
            }
 if ($_GET['author'] == 'ms10' ) {
                    $mjmsA = $mjxpath->query("////author[@id = 'ms10']")->length;
                    $mjmsE = $mjxpath->query("////editor[@id = 'ms10']")->length;
                    $mjmsTotal = ($mjmsA + $mjmsE);
                    echo $mjmsTotal;
                }
0 голосов
/ 28 апреля 2020

Вы можете свести это к одному условию, это избавит от необходимости жестко кодировать всех разных авторов / редакторов.

Сначала проверьте, установлен ли автор, а затем включите это значение в выражения XPath ...

if ( !empty($_GET['author'])) {
    $getMj = new DOMDocument();
    $getMj->load("Margret-Jane.xml");
    $mjxpath = new DOMXpath($getMj);

    $mjAuth = $mjxpath->query("//author[@id = '{$_GET['author']}']")->length;
    $mjEdit = $mjxpath->query("//editor[@id = '{$_GET['author']}']")->length;
    $mjResult = ($mjAuth + $mjEdit);
    echo $mjResult;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...