Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2014, 10:39   #1
Dewi1
 
Регистрация: 19.05.2014
Сообщений: 5
По умолчанию Парсинг xml

Где-то я запутался, не могу доделать программу. Это обычный тест и его нужно считать с 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\w ww\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>
Dewi1 вне форума Ответить с цитированием
Старый 19.05.2014, 12:00   #2
der90
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 73
По умолчанию

попробуйте так...
PHP код:
   
     
for($i 0$i count($questions->question); $i++)
      {
            
$xmlArray[$i]['title'] = $questions->question[i]->title;
           for(
$j 0$j count($questions->question[i]->answers); $j++)
                
$xmlArray[$i]['answer'] = array_push(questions->question[i]->answers[$j]->answer);
       } 
der90 вне форума Ответить с цитированием
Старый 19.05.2014, 12:38   #3
Dewi1
 
Регистрация: 19.05.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от der90 Посмотреть сообщение
попробуйте так...
PHP код:
   
     
for($i 0$i count($questions->question); $i++)
      {
            
$xmlArray[$i]['title'] = $questions->question[i]->title;
           for(
$j 0$j count($questions->question[i]->answers); $j++)
                
$xmlArray[$i]['answer'] = array_push(questions->question[i]->answers[$j]->answer);
       } 
Спасибо, сейчас проверю
Dewi1 вне форума Ответить с цитированием
Старый 19.05.2014, 12:46   #4
Dewi1
 
Регистрация: 19.05.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от der90 Посмотреть сообщение
PHP код:
$xmlArray[$i]['answer'] = array_push(questions->question[i]->answers[$j]->answer); 
В этой строке ошибка.
Dewi1 вне форума Ответить с цитированием
Старый 19.05.2014, 14:24   #5
der90
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 73
По умолчанию

попробуйте так
PHP код:
  $xmlArray[$i]['answer'] =  array();
 for(
$j 0$j count($questions->question[i]->answers); $j++) 
                
$xmlArray[$i]['answer'] = array_push(questions->question[i]->answers[$j]->answer); 
der90 вне форума Ответить с цитированием
Старый 19.05.2014, 14:43   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Dewi1 Посмотреть сообщение
PHP код:
$xmlArray[$i]['answer'] = array_push(questions->question[i]->answers[$j]->answer); 
В этой строке ошибка.
Цитата:
Сообщение от der90 Посмотреть сообщение
попробуйте так
PHP код:
  $xmlArray[$i]['answer'] =  array();
 for(
$j 0$j count($questions->question[i]->answers); $j++) 
                
$xmlArray[$i]['answer'] = array_push(questions->question[i]->answers[$j]->answer); 
Поставьте уже кто-нибудь символ $ в этом месте – и ошибка пропадёт:
Цитата:
array_push($questions->question[i]->answers[$j]->answer);
Andkorol вне форума Ответить с цитированием
Старый 19.05.2014, 15:20   #7
der90
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Поставьте уже кто-нибудь символ $ в этом месте – и ошибка пропадёт:
ОЙ, не заметил)
der90 вне форума Ответить с цитированием
Старый 19.05.2014, 15:30   #8
Dewi1
 
Регистрация: 19.05.2014
Сообщений: 5
По умолчанию

Всё исправил, но текст из xml не грузит: пустая страница и кнопка "отправить", вот код, что у меня получился после всех исправлений:
PHP код:
<?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');

    for(
$i 0$i count($questions->question); $i++) 
    { 
        
$xmlArray[$i]['title'] = $questions->question[i]->title
        for(
$j 0$j count($questions->question[i]->answers); $j++) 
            
$xmlArray[$i]['answer'] =  array(); 
            for(
$j 0$j count($questions->question[i]->answers); $j++)  
                
$xmlArray[$i]['answer'] = 

                
array_push($questions->question[i]->answers[$j]->answer);
    }  

    echo 
"<br><br>"."<input type='submit' value='Отправить'></form>";
    
?>
</font>
</body>
</html>
Dewi1 вне форума Ответить с цитированием
Старый 19.05.2014, 17:21   #9
der90
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Dewi1 Посмотреть сообщение
Всё исправил, но текст из xml не грузит: пустая страница и кнопка "отправить"
Вы сохранили все в переменную и все...что бы вывести теперь нужно сделать по аналогии только теперь пройтись по массиву... http://www.php.su/articles/?cat=vars&page=014

ну или сразу выводить

Код:
<?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');

    for($i = 0; $i < count($questions->question); $i++) 
    { 
        echo "{$i}) ". $questions->question[i]->title."<br/>";
               
            for($j = 0; $j < count($questions->question[i]->answers->answer[$j]); $j++)  
             {
                 if( $questions->question[i]->answers->answer[$j]->correct == 'true')//тут не уверен проверте
                       echo "этот ответ правильный";
                echo "{$j}) ".$questions->question[i]->answers->answer[$j]."<br>";
              }
    }  

    echo "<br><br>"."<input type='submit' value='Отправить'></form>";
    ?>
</font>
</body>
</html>

Последний раз редактировалось der90; 19.05.2014 в 17:43.
der90 вне форума Ответить с цитированием
Старый 19.05.2014, 21:26   #10
Dewi1
 
Регистрация: 19.05.2014
Сообщений: 5
По умолчанию

Спасибо, большое.
Dewi1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C#. Парсинг XML-файла с использованием библиотеки System.xml.linq Gift020 Помощь студентам 5 04.04.2013 13:44
Парсинг xml C# Dominatorsha Помощь студентам 5 19.02.2013 14:53
xml парсинг Letnab Работа с сетью в Delphi 0 07.01.2012 12:56
Парсинг XML Aleskandr PHP 1 24.08.2011 14:32
Парсинг XML [Smarik] Общие вопросы Delphi 6 13.03.2010 17:38