Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie pliku XML za pomocą PHP
Forum PHP.pl > Forum > PHP
undefinedman
Witam serdecznie.

Chciałbym się dowiedzieć, czy dysponują Państwo gotowym skryptem lub informacjami pomagającymi mi w napisaniu takiego czegoś, co:

- umożliwiłoby mi komunikację Flash z PHP,
- wykreowałoby fizyczny plik.xml za pomocą PHP na podstawie folderu, w którym znajdują się fotografie.

Dziękuję.
gcdreak
1. XML

2. Może chcesz użyć tiltviewer? Jeśli tak to mam gotowy skrypt który wygeneruje Ci plik xml.

Szymciosek
Jako, że współpracuję z autorem chciałem powiedzieć:

1) XML - jak najbardziej, natomiast chcemy mieć wypis plików w PHP, a następnie, aby te pliki zostały wsadzone do pliku XML.

2) TiltViewer - raczej nie interesują nas gotowce, owszem można skorzystać żeby się czegoś nauczyć (nauka przez praktykę).
Skrypt który posiadasz jest to TiltViewer'a czy masz go ogólnie do XML ?

Ps.
Posiadam taki skrypt który tworzy plik XML i wpisuje do niego dane:
Kod
<?php

*/
Chmody:
Folder z plikiem php - 777
Folder files - 755
Plik php - 755
/*

$path_to_image_dir = 'files';

$xml_string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<images>
</images>
XML;

$xml_generator = new SimpleXMLElement($xml_string);

if ( $handle = opendir( $path_to_image_dir ) ) {
    while (false !== ($file = readdir($handle))) {
        if ( is_file($path_to_image_dir.'/'.$file) ) {
            

                   $image = $xml_generator->addChild('image');

            $image -> addAttribute('label', $file);
            //$image -> addAttribute('size', filesize($file)/1000);
            $image -> addAttribute('path', $path_to_image_dir.'/'.$file);
            
            //list( $width, $height ) = getimagesize($path_to_image_dir.'/'.$file);
            //$image -> addAttribute('width', $width);
                   //$image -> addAttribute('height', $height);
            }
        }
        closedir($handle);
}


$tresc_pliku=$xml_generator->asXML();
$nazwa_pliku.='plik.xml';
$plik = fopen($nazwa_pliku,"w");
fputs($plik,$tresc_pliku);

fclose($plik);
echo '<a href="'.$nazwa_pliku.'">Przejdź do pliku XML</a>';
?>


ale jest przy nim jedno ale, plik XML otworzony w notatniku wygląda w ten sposób:
Kod
<?xml version="1.0" encoding="UTF-8"?>
<images>
<image label="1 (101).jpg" path="files/1 (101).jpg"/><image label="1 (104).jpg" path="files/1 (104).jpg"/><image label="1 (103).jpg" path="files/1 (103).jpg"/><image label="1 (102).jpg" path="files/1 (102).jpg"/><image label="1 (105).jpg" path="files/1 (105).jpg"/><image label="1 (10).jpg" path="files/1 (10).jpg"/><image label="1 (100).jpg" path="files/1 (100).jpg"/></images>


a przydałoby się by wyglądał:
Kod
<?xml version="1.0" encoding="UTF-8"?>
<images>
    <image label="1 (101).jpg" path="files/1 (101).jpg"/>
    <image label="1 (104).jpg" path="files/1 (104).jpg"/>
    <image label="1 (103).jpg" path="files/1 (103).jpg"/>
    <image label="1 (102).jpg" path="files/1 (102).jpg"/>
    <image label="1 (105).jpg" path="files/1 (105).jpg"/>
    <image label="1 (10).jpg" path="files/1 (10).jpg"/>
    <image label="1 (100).jpg" path="files/1 (100).jpg"/>
</images>
Blame
Wystarczy wstawić odpowiednie znaki przy tworzeniu. \t dla tabulatora i \r\n dla entera.
Szymciosek
Próbowałem już w różne miejsca wstawiać, ale nie działa, albo wywala kilka razy "n", albo nie działa skrypt.
Blame
No way! Pokaż jak próbowałeś. Przypominam ci tylko, że musisz edytować metodę addAtribute tak aby na początku dodawała \t a na końcu \r\n.
Szymciosek
Próbowałem na takie sposoby:
np ten wpis: $image -> addAttribute('label', $file); i dodawałem do niego \n w różne miejsca, ale nic, w różne miejsca skryptu dodawałem, znajomy mi nawet próbował pomóc bo się uczy PHP.
Blame
Ale wyraźnie ci powiedziałem, że masz edytować metodę addAttribute w pliku który zawiera klasę SimpleXMLElement i jest pewnie includowany. Najlepiej to podaj fragment z addAttribute. Dla podpowiedzi powiem ci tylko że pewnie zaczyna się jakoś tak:
  1. public function addAttribute(cośtam, cośtam){
Szymciosek
Niby skąd mam to wziąć ?
Wyżej masz cały kod za to odpowiedzialny.

A tak to działa:
http://szymciosek.hostgame.pl/phpp/wypis_p...wypisywanie.php
gcdreak
W takim razie najłatwiej byłoby wykorzystać obiekt DOM i ustawić właściwość formatOutput na true.

Popatrz na mój kod, robiłem go na szybko i nawet nie używałem zmiennych tam gdzie by się to sprzydało ale chodzi o idee.

[PHP] pobierz, plaintext
  1. $di = new DirectoryIterator('thumbs');
  2. $images = array();
  3. while($di->valid()) {
  4.  
  5. if($di->isFile())
  6. $images[] = $di->getFilename();
  7.  
  8. $di->next();
  9. }
  10.  
  11. $dom = new DOMDocument('1.0');
  12. $tailtviewer = $dom->createElement('tailtviewer');
  13. $photos = $dom->createElement('photos');
  14. $dom->preserveWhiteSpace = false;
  15. $dom->formatOutput = true;
  16.  
  17. foreach($images as $k => $v) {
  18. $photo = $dom->createElement('photo');
  19. $photo->setAttribute('imageurl', 'thumbs/' . $v);
  20. $photo->setAttribute('linkurl', 'http://google.com');
  21. $photo->setAttribute('showFlipButton', 'true');
  22. $title = $dom->createElement('title');
  23. $title->appendChild($dom->createTextNode($v));
  24. $desc = $dom->createElement('description');
  25. $desc->appendChild($dom->createTextNode('Opis mojej fotki'));
  26. $photo->appendChild($title);
  27. $photo->appendChild($desc);
  28.  
  29. $photos->appendChild($photo);
  30. }
  31.  
  32. $tailtviewer->appendChild($photos);
  33. $dom->appendChild($tailtviewer);
  34.  
  35. $dom->save('mygal.xml');
  36.  
[PHP] pobierz, plaintext
Szymciosek
A nie da się przerobić tego co podałem ?
Dopiero się uczę i mało rozumiem z tego Twojego.

Ps.
Jaką książkę do nauki PHP mógłbyś polecić ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.