Skocz do zawartości

[xml + php] Czemu nie działa?


mess_alex

Rekomendowane odpowiedzi

Witam,

Szczęśliwego Nowego Roku!

Nie będę tłumaczył co chcę osiągnąć, bo wydaje mi się to oczywiste po obejrzeniu kodu.

Otrzymuję taki efekt, problem polega na tym, że nie wpisuje (aplikacja) wszystkich danych. Dlaczego?

A i jeszcze jedno - czemu nie reaguje na "charset=iso-8859-2"? Z źródła - "<?xml version="1.0"?>".

<?php

header ('Content-type: text/xml; charset=iso-8859-2');

// Dane obliczone

$phpDays = 31;
$phpEmptySpaces = 4;


// Dane z bazy danych

$dzien = Array();

$dzien[2] = Array();
$dzien[2]['color'] = 'green';
$dzien[2]['title'] = 'Spotkanie grupy wsparcia';
$dzien[2]['content'] = 'Odbędzie się o godz. 16.00 w sali Wyższej Medycznej Szkoły Zawodowej w Opolu, przy ul. Katowickiej.';

$dzien[16] = Array();
$dzien[16]['color'] = 'red';
$dzien[16]['title'] = 'Zabawa z Mikołajem';
$dzien[16]['content'] = 'Odbędzie się o godz. 11.00 w Opolu. Więcej informacji pod nr tel. 0500611595 lub 774742511.';


$xml = new DOMDocument();

$calendar = $xml->createElement('calendar');

$daysNumer = $xml->createElement('daysNumer');
$daysData = $xml->createTextNode($phpDays);
$daysNumer->appendChild($daysData);
$calendar->appendChild($daysNumer);

$emptySpaces = $xml->createElement('emptyspaces');
$emptySpacesData = $xml->createTextNode($phpEmptySpaces);
$emptySpaces->appendChild($emptySpacesData);
$calendar->appendChild($emptySpaces);

$days = $xml->createElement('days');
$calendar->appendChild($days);

for($i=1; $i <= $phpDays; $i++)
{
	$day = $xml->createElement('day');

	if(isset($dzien[$i]))
	{
		$color = $xml->createElement('color');
		$colorData = $xml->createTextNode($dzien[$i]['color']);
		$color->appendChild($colorData);

		$info = $xml->createElement('info');

		$title = $xml->createElement('title');
		$titleData = $xml->createTextNode($dzien[$i]['title']);
		$title->appendChild($titleData);

		$content = $xml->createElement('content');
		$contentData = $xml->createTextNode($dzien[$i]['content']);
		$content->appendChild($contentData);

		$day->appendChild($color);
		$day->appendChild($info);
		$info->appendChild($title);
		$info->appendChild($content);
	}

	$days->appendChild($day);
}


$xml->appendChild($calendar);

$xml = $xml->saveXML();
echo $xml;

?>

Z góry dziękuję za odpowiedź.

Zespół Downa - porady, ważne informacje dla rodziców, rodzeństwa, opiekunów.
Odnośnik do komentarza
Udostępnij na innych stronach

A i jeszcze jedno - czemu nie reaguje na "charset=iso-8859-2"? Z źródła - "<?xml version="1.0"?>".

Ustawienie charseta uzyskujesz poprzez podanie parametrów w konstruktorze np.

$xml = new DOMDocument('1.0', 'iso-8859-1');

IMHO rozszerzenie DOM nie obsługuje iso-8859-2, proponuje użyć UTF-8 albo samemu wygenerować XMLa.

Odnośnik do komentarza
Udostępnij na innych stronach

iconv("ISO-8859-2","UTF-8","lancuch znakow");

lub np.

$dom = new domdocument();

$dom->loadXML(trim(iconv("ISO-8859-2", "UTF-8", $xml)));

ja mam gdzies cos takiego

Portal komputerowy

-
webmastering, biznes

Forum IT - informatyka, komputery, technologie

Odnośnik do komentarza
Udostępnij na innych stronach

adi

Otrzymuję taki efekt po wpisaniu "$xml = new DOMDocument('1.0', 'iso-8859-1');"?

MMP

Masz rację, kolejność była niepoprawna, ale po napisaniu

$info->appendChild($title);
$info->appendChild($content);
$day->appendChild($color);
$day->appendChild($info);

Jest nadal to samo.

Paweł Dzedzej

$dom->loadXML(trim(iconv("ISO-8859-2", "UTF-8", $xml)));

A czym tu jest zmienna $xml - łańcuchem znaków ;), ale co przez to rozumiesz?

Zespół Downa - porady, ważne informacje dla rodziców, rodzeństwa, opiekunów.
Odnośnik do komentarza
Udostępnij na innych stronach

tak

strona jest na serwerze home.pl

Tak mi się wydawało, że powinno działać. Jest to dla mnie niezrozumiały błąd, że nie wpisuje wszystkich danych ;)

Zespół Downa - porady, ważne informacje dla rodziców, rodzeństwa, opiekunów.
Odnośnik do komentarza
Udostępnij na innych stronach

Dobra, wielkie dzięki. Napiszę do ludzi z home.pl

Edit// Gdybyś mógł nie kasuj przez chwilę (pół godz.) tego pliku, podam go jako argument, że kod jest poprawny.

Zespół Downa - porady, ważne informacje dla rodziców, rodzeństwa, opiekunów.
Odnośnik do komentarza
Udostępnij na innych stronach

Paweł Dzedzej

$dom->loadXML(trim(iconv("ISO-8859-2", "UTF-8", $xml)));

A czym tu jest zmienna $xml - łańcuchem znaków ;) , ale co przez to rozumiesz?

Dane wyjściowe z bazy xml.

Nadajesz je poprzez np. file_get_contents()

Edit: LOL, no przecież masz zmienna $xml :P

Portal komputerowy

-
webmastering, biznes

Forum IT - informatyka, komputery, technologie

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności