Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 09.11.2020
Сообщений: 20

Файлы xml

30.11.2020, 13:35. Показов 2017. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день!
Не могу разобраться с файлами xml,буду рада любой помощи)
Условие задачи:
Создать html форму с полями: название учебной группы, ФИО студента, адрес проживания студента, дата рождения (студентов в группе может быть до 25 человек). Написать скрипт, который сохраняет введенную информацию в файл на сервере в папке "Students" в формате xml. На отдельной странице реализовать чтение файла в отформатированном виде.

Моя html форма:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
    <head>
        <meta charset="utf-8">
        <title>Задание9</title>
    </head>
        <body>
            <form action="script_write.php" method="POST">
                <a href="show_xml"> Просмотр файла</a>
                <p> Название учебной группы </p> <input name="name"> <br>
                <p> ФИО студента </p> <input name="namestudents"> <br>
                <p> Адрес проживания студента </p> <input name="address"> <br>
                <p> Дата рождения </p> <input name="date"> <br>
                <input type="submit">
            </form> 
    
        </body> 
 
</html>
1 файл:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?
$gruyppa =     isset($_POST['gryppa']) ? $_POST['gryppa'] : null;
$student =     isset($_POST['student']) ? $_POST['student'] : null;
$adress =  isset($_POST['adress']) ? $_POST['adress'] : null;
$data =    isset($_POST['data']) ? $_POST['data'] : null;
$dir = __DIR__ . '/Students'; 
$path = $dir . '/students.xml'; 
 
if(isset($_POST['show_xml'])) 
{ 
if(!file_exists($path)) 
die('Файл не создан'); 
else 
{ 
header('Content-Type:text/xml'); 
readfile($path); 
die(); 
} 
} 
 
if($_SERVER['REQUEST_METHOD'] === 'POST') 
{ 
if(!is_dir($dir)) 
mkdir($dir); 
 
$document = new DOMDocument('UTF-8'); 
$document->formatOutput = true; 
$document->preserveWhiteSpace = false; 
 
 
if(file_exists($path)) 
$xml = file_get_contents($path); 
else 
$xml = '<students></students>'; 
 
$document->loadXml($xml); 
 
$students = $document->documentElement; 
 
$post_keys = [ 
'gryppa', 
'students', 
'adress', 
'data' 
]; 
file_put_contents($path, $document->saveXml()); 
} 
?>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2020, 13:35
Ответы с готовыми решениями:

Как получить путь до конкретного элмента ? | XML | DOM | Simple XML
Добрый день! Как Вы уже знаете, в Simple XML, чтобы получить доступ в XML файле к какому-либо элементу, нужно знать его путь....

XML SOAP PHP 1с(Нужно забрать XML c веб сервиса)
Хелп плиз есть веб сервис раскатанный на 1с ...

Как отправить на сервер xml запрос с помощью post и получить ответ в xml?
нужно отправить на сервер xml запрос с помощью post и получить ответ в xml, погуглил нашел примеры, осталось лишь проверить примеры на...

4
 Аватар для olexiy86
32 / 30 / 11
Регистрация: 27.09.2014
Сообщений: 359
01.12.2020, 18:09
script_write.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
// Добавлять в отчет все ошибки PHP
error_reporting(E_ALL);
 
// Добавлять в отчет все ошибки PHP
error_reporting(-1);
 
// То же, что и error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
$group = isset($_POST['group']) ? $_POST['group'] : null;
$name = isset($_POST['name']) ? $_POST['name'] : null;
$address = isset($_POST['address']) ? $_POST['address'] : null;
$birthday = isset($_POST['birthday']) ? $_POST['birthday'] : null;
 
$xml_path = "./Students/students.xml";
 
 
function create_empty_xml($xml_path) 
{
    if(!file_exists($xml_path)) {
        $dom = new DOMDocument;
        $dom->loadXML('<students> </students>');
        $dom->save($xml_path);
    }
}
 
function add_student_to_xml($xml_path, $name, $group, $address, $birthday)
{
    // Загружаем из файла xml документ
    $dom = new DOMDocument;
    $dom->load($xml_path);
 
    // Создаём тег student (для каждого студента будет отдельный тег student)
    $root = $dom->getElementsByTagName('students')->item(0);
    $student = $dom->createElement('student', ' ');
 
    // Создаём теги для хранения информации о студенте
    $group_tag = $dom->createElement('group', $group); 
    $name_tag = $dom->createElement('name', $name);
    $address_tag = $dom->createElement('address', $address);
    $birthday_tag = $dom->createElement('birthday', $birthday);
 
    // В тег student добавляем теги с информацией о студенте
    $student->appendChild($group_tag);
    $student->appendChild($name_tag);
    $student->appendChild($address_tag);
    $student->appendChild($birthday_tag);
    
    
    // Добавляем тег student со всеми вложеными тегами в документ
    $root->appendChild($student);
 
    $dom->save($xml_path);
}
 
create_empty_xml($xml_path);
add_student_to_xml($xml_path, $name, $group, $address, $birthday);
include("index.html");
index.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
    <head>
        <meta charset="utf-8">
        <title>Задание9</title>
    </head>
        <body>
            <form action="script_write.php" method="POST">
                <a href="show_xml.php"> Просмотр файла</a>
                <p> Название учебной группы </p> <input name="group"> <br>
                <p> ФИО студента </p> <input name="name"> <br>
                <p> Адрес проживания студента </p> <input name="address"> <br>
                <p> Дата рождения </p> <input name="birthday"> <br>
                <input type="submit">
            </form> 
        </body> 
</html>
show_xml.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
//Здесь, ради разнообразия, используем библиотеку SimpleXML
//*********************************************************
 
 
$xml_path = "./Students/students.xml";
$xml = simplexml_load_file($xml_path);
 
// var_dump($xml);
 
foreach($xml->student as $student)
{
    echo "<h3> имя : " . $student->name ."</h3>";
    echo "<p>" . "группа : " . $student->group;
    echo "<p>" . "адресс : " . $student->address;
    echo "<p>" . "день рождения : " . $student->birthday;
    echo "<hr>";
}
1
 Аватар для MouseZver
58 / 15 / 3
Регистрация: 03.08.2019
Сообщений: 82
01.12.2020, 18:19
olexiy86,
есть замечательная функция как https://www.php.net/manual/en/... -array.php
есть в 2к20 Тернарный оператор с улучшенным видом $value ??= null
В твоем коде не учтено, что при значениях null - вся логика обрушится ошибками, которые выдадут методы парсера xml.
зачем юзаешь error_reporting 1000 раз, при этом включая и выключая ошибки - это жесть.
У автора темы была оправданная часть кода
PHP
1
if($_SERVER['REQUEST_METHOD'] === 'POST')
а у тебя ?
0
 Аватар для olexiy86
32 / 30 / 11
Регистрация: 27.09.2014
Сообщений: 359
01.12.2020, 19:19
MouseZver, я проверял, если приходит null всё работает. Можно не использовать мой код вообще
0
 Аватар для MouseZver
58 / 15 / 3
Регистрация: 03.08.2019
Сообщений: 82
01.12.2020, 19:49
Цитата Сообщение от olexiy86 Посмотреть сообщение
если приходит null всё работает
PHP
1
2
3
<?php
 
declare ( strict_types = 1 );
Лови
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2020, 19:49
Помогаю со студенческими работами здесь

Из двух XML создать один, состоящий из тегов, которые присутствуют в обоих XML
Нужно на PHP реализовать такую задачку. Пример: Есть первый XML: &lt;html&gt; &lt;div class=&quot;rb&quot;&gt; &lt;b&gt; ...

Настройка вывода в файлы import.xml и offers.xml
В системе имеется несколько товаров, которые хочется сохранить на компьютере в виде файлов import.xml и offers.xml (а в дальнейшем...

Извлечение определённых фрагментов текста из XML-файлов и их запись в одноимённые с XML-файлами TXT-файлы
Добрый вечер! Есть задача нужно из XML файла выдрать кусок текста находящегося между тегами &lt;body&gt;&lt;/body&gt; и поместить этот...

Подскажите, как парсить все xml файлы, вложенные в дочерние директории с исп. xml.dom.minidom?
Всем привет. Есть следующая структура папок: &lt;img src=&quot;https://habrastorage.org/webt/5d/0b/8f/5d0b8f031f86c050844094.png&quot;...

Написать программу, преобразующую XML-файлы в DDF-файлы
Нужно написать программу, преобразующую XMLфайлы в DDFфайлы... Посоветуйте с чего начать? Есть ли готовый код..


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru