Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Тесты, парсинг xml


Автор: Dewi1 19.5.2014, 09:38
Где-то я запутался, не могу доделать программу. Это обычный тест и его нужно считать с xml документа, а затем отправить данные на другую страницу, где выводится результат.

1)Главная страница и собственно код парсинга.

Код

<?php
    header('Powered: test');
    header('Content-Type: text/html; charset=utf-8');
?>
<html>
<body>
<font size='5' face='Arial_Black'>
    <?php
    echo "<form  method='post' action='results.php'>";
    $questions = simplexml_load_file('S:\home\test\www\questions.xml');
    foreach($questions as $id => $question)
    {
        echo $question->title."<br>";
        foreach($question->answers->answer as $answerId => $k)
        {
            echo "<input type='radio' name='question_$id' value='$answerId'>";
            echo $k."<br>";
        }
    }
    echo "<br><br>"."<input type='submit' value='Отправить'></form>";
    ?>
</font>
</body>
</html>


P.S. Преподователь подсказал, что нужно использовать массив, вместо "foreach".

2)Страница куда отправляются данные, в данном случае результаты теста.

Код

<?php
header('Powered: test');
header('Content-Type: text/html; charset=utf-8');
?>
<html>
<body>
<?php
 
echo "<pre>";
echo "<font size=5 face=Arial_Black>";
 
if(1==1){
echo "Ваш результат:";
echo "<br><br>    ";
$x==3;
printf("Правильных ответов: %d", $x);
echo "<br>    ";
printf("Не правильных ответов: %d", $y);
}
 
echo "</pre>";
echo "</font>";
 
?>
</body>
</html>


3)Сам xml документ

Код

<?xml version="1.0" encoding="UTF-8"?>
<questions>
    <question id="1">
        <title>Какой формы планета Земля?</title>
        <answers>
            <answer>Квадратная</answer>
            <answer correct="true">Круглая</answer>
            <answer>Треугольная</answer>
        </answers>
    </question>
    <question id="2">
        <title>Какой самый маленький континент?</title>
        <answers>
            <answer correct="true">Австралия</answer>
            <answer>Антарктида</answer>
            <answer>Африка</answer>
        </answers>
    </question>
    <question id="3">
        <title>Сколько ног у сороконожки?</title>
        <answers>
            <answer>Сорок</answer>
            <answer correct="true">До семиста пятидесяти</answer>
            <answer>Двадцать</answer>
        </answers>
    </question>
    <question id="4">
        <title>Как звали русского богатыря Муромца?</title>
        <answers>
            <answer>Алёша</answer>
            <answer>Добрыня</answer>
            <answer correct="true">Илья</answer>
        </answers>
    </question>
</questions>


Автор: s1lver 19.5.2014, 18:53
Пологаю, первая часть вашего задания должна выглядить как-то так

Код

header('Content-Type: text/html; charset=utf-8');
$xml = simplexml_load_file("test.xml");
?>
<form action="answer.php" method="post">
<?
foreach($xml->question as $xml_data){
    echo $xml_data->title."<br>";
    for ($i = 0; $i <= count($xml_data->answers->answer); $i++)
    {
        echo "<label><input type=\"radio\" name=\"".$xml_data['id']."\" value=\"".$xml_data->answers->answer[$i]['correct']."\">".$xml_data->answers->answer[$i]."</label><br>";
    }
    echo "<br>";
}
?>
    <input type="submit" value="Ответить">
</form>


answer.php
Код

header('Content-Type: text/html; charset=utf-8');
if($_POST['1']!="true"){
    echo "Ответ не верен.<br>";
}else echo "Ответ верен.<br>";
if($_POST['2']!="true"){
    echo "Ответ не верен.<br>";
}else echo "Ответ верен.<br>";
if($_POST['3']!="true"){
    echo "Ответ не верен.<br>";
}else echo "Ответ верен.<br>";
if($_POST['4']!="true"){
    echo "Ответ не верен.<br>";
}else echo "Ответ верен.<br>";

Автор: Dewi1 19.5.2014, 20:25
Цитата

Пологаю, первая часть вашего задания должна выглядить как-то так


Спасибо большое =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)