Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nadpisywanie pliku w określonym miejscu
Forum PHP.pl > Forum > PHP
budyn_
Mam skrypt, który pobiera ode mnie poprzez formularz dane i zapisuje do pliku "baza.xml".

owy skrypt php:

  1. <html>
  2. <body>
  3. <!--
  4. kod wyświetlający formularz na stronie i pobierający dane od użytkownika
  5. -->
  6. <form method="POST">
  7. Autor: <input type="text" name="autor" size="20"><br>
  8. Tytul: <input type="text" name="tytul" size="20"><br>
  9. Rozmiar: <input type="text" name="rozmiar" size="20"><br>
  10. Czas: <input type="text" name="czas" size="20"><br>
  11. Gatunek: <input type="text" name="gatunek" size="20"><br>
  12. Rok: <input type="text" name="rok" size="20"><br>
  13. Plik: <input type="text" name="plik" size="20"><br>
  14. <br>
  15. <input type="submit">
  16. </form>
  17. </body>
  18. </html>
  19. <!--
  20. skrypt php pobierający dane z formularza i zapisujący do pliku
  21. -->
  22. <?php
  23.  
  24. $autor=$_POST['autor']; 
  25. $tytul=$_POST['tytul']; 
  26. $rozmiar=$_POST['rozmiar']; 
  27. $czas=$_POST['czas']; 
  28. $gatunek=$_POST['gatunek']; 
  29. $rok=$_POST['rok']; 
  30. $plik=$_POST['plik']; 
  31.  
  32. $dane='<?xml version="1.0"?>
  33. <?xml-stylesheet type="text/xsl" href="styl.xsl"?>
  34. <BAZA> 
  35. <MP3> 
  36.  <AUTOR>'.$autor.'</AUTOR> 
  37.  <TYTUL>'.$tytul.'</TYTUL> 
  38.  <ROZMIAR>'.$rozmiar.'</ROZMIAR>
  39.  <CZAS>'.$czas.'</CZAS> 
  40.  <GATUNEK>'.$gatunek.'</GATUNEK> 
  41.  <ROK>'.$rok.'</ROK> 
  42.  <PLIK>'.$plik.'</PLIK> 
  43. </MP3> 
  44. </BAZA> 
  45. '; 
  46.  
  47. $wp=fopen('baza.xml', 'w+'); 
  48. fwrite($wp, $dane); 
  49. fclose($wp);
  50. ?>


Poniżej przedstawiam, to co zostaje stworzone przez powyższy skrypt, czyli plik baza.xml

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="styl.xsl"?>
  3.  
  4. <BAZA>
  5.  
  6.    <MP3>
  7.          <AUTOR>Mika</AUTOR>
  8.          <TYTUL>Relax, Take It Easy</TYTUL>
  9.          <ROZMIAR>3</ROZMIAR>
  10.          <CZAS>3:12</CZAS>
  11.          <GATUNEK>POP?</GATUNEK>
  12.          <ROK>2007</ROK>
  13.          <PLIK>Mika_-_Relax,_Take_It_Easy.mp3</PLIK>
  14.    </MP3>
  15.  
  16. </BAZA>


Jak do tej pory wszystko działa.
Mój problem polega na tym, iż chcialbym mieć możliwość dodawania kolejnych plików do mojej niby bazy.
Na podstawie index.php chciałem zrobić dodaj.php przy użyciu fseek(), tak by sekcja między <MP3> a </MP3>, została zapisana przed </BAZA>. Na fseek() wpadłem tu na forum i troszke poczytalem w manualu.. ale nic z tego nie wyszło. Czy możecie mi pomóc, tak by za pomocą pliku dodaj.php można było stworzyć takie coś:

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="styl.xsl"?>
  3.  
  4. <BAZA>
  5.  
  6.    <MP3>
  7.          <AUTOR>Mika</AUTOR>
  8.          <TYTUL>Relax, Take It Easy</TYTUL>
  9.          <ROZMIAR>3</ROZMIAR>
  10.          <CZAS>3:12</CZAS>
  11.          <GATUNEK>POP?</GATUNEK>
  12.          <ROK>2007</ROK>
  13.          <PLIK>Mika_-_Relax,_Take_It_Easy.mp3</PLIK>
  14.    </MP3>
  15.  
  16.    <MP3>
  17.          <AUTOR>Shazza</AUTOR>
  18.          <TYTUL>Baja bongo</TYTUL>
  19.          <ROZMIAR>2,5</ROZMIAR>
  20.          <CZAS>3:23</CZAS>
  21.          <GATUNEK>disco polo</GATUNEK>
  22.          <ROK>1994?</ROK>
  23.          <PLIK>shazza.mp3</PLIK>
  24.    </MP3>
  25.  
  26. </BAZA>
Ludvik
Operowanie na xmlu za pomocą funkcji obsługi plików nie jest najlepszym pomysłem. Zobacz na przykład SimpleXML" title="Zobacz w manualu PHP" target="_manual... Rozszerzenie jest tak proste w użyciu, że manual i tutoriale na necie powinny wystarczeć...
budyn_
musze przyznać, że jestem za głupi by skumać SimpleXMLa, w zasadzie udało mi się stworzyć przy pomocy googli odczytywanie pliku xml za pomocą biblioteki SimpleXML, ale nie potrafie stworzyć zapisu.
Ludvik
W manualu są przykłady 2034 i 2035 (na podanej przeze mnie stronie), które pokazują jak zapisuje się dane. Wystarczy wywołać metodę asXML. Za dodawanie elementów odpowiada funkcja addChild, która dopisuje element do wybranej gałęzi i zwraca obiekt reprezentujący go.
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.