Skrypt do odczytywania i zapisywania xml

Tutaj dyskutujemy o PHP oraz zgłaszamy i rozwiązujemy problemy dotyczące tego języka.
majcioszek
Nowicjusz
Posty: 4
Dołączył(a): czwartek, 31 stycznia 2013, 16:13

Skrypt do odczytywania i zapisywania xml

Post przez majcioszek »

Code: Zaznacz cały

<?php
$i=0;
foreach (glob("photo/*.*") as $filename)
{
$tab[$i]['nazwa'] = $filename;
$tab[$i]['rozmiar'] = filesize($filename);
$i++;
$num = $i;
}
 
$id = 0;
while($num>0)
{
$num--;
$mode = $tab[$id]['nazwa'];

$plik="foto.xml";
$czytanie=@fopen($plik,"r+");
$tekst="";

while(!feof($czytanie)) {
	$tekst.=fread($czytanie,500);
	}

$nowe_dane=" <galeria>
<foto>$mode</foto>
</galeria>";
fseek($czytanie,0);
fwrite($czytanie, $nowe_dane.$tekst);
fclose($czytanie);
$id++;
}
?>

Program odczytuje wszystkie nazwy plików z folderu "photo" a następnie zapisuje wyniki w pliku foto.xml
Lecz problem leży w tym, że za każdym włączeniem pliku nadpisuje wartość nowa d statym pliku nawet jeśli ma te same wartości.
Prosze o mała pomoc:D
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Skrypt do odczytywania i zapisywania xml

Post przez Morfidon »

A co ma robić w tym nowym pliku? Rozumiem, że to problem, ale nie znam założenia.
majcioszek
Nowicjusz
Posty: 4
Dołączył(a): czwartek, 31 stycznia 2013, 16:13

Re: Skrypt do odczytywania i zapisywania xml

Post przez majcioszek »

w pliku "foto.xml" ma wpisać wartość

Code: Zaznacz cały

 <galeria>
<foto>photo/romek.jpg</foto>
</galeria>
i ją wpisuje dobrze.
romek.jpg = jest to plik ktory znajduje sie w folderze photo/
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Skrypt do odczytywania i zapisywania xml

Post przez Morfidon »

Nie zrozumiałeś mojego pytania.

Napisałeś:
"Lecz problem leży w tym, że za każdym włączeniem pliku nadpisuje wartość nowa w starym pliku nawet jeśli ma te same wartości."

a jak ma być? jak otworzysz plik to ma dopisać tylko nowe?Gdy są te same ma nie nadpisać? Co ma w ogóle zrobić? Bo rozumiem, że to co napisałeś przed chwilą to już robi, ale jakie jest założenie poprawności. Dla jednego coś może być poprawne, dla drugiego już nie ;)
majcioszek
Nowicjusz
Posty: 4
Dołączył(a): czwartek, 31 stycznia 2013, 16:13

Re: Skrypt do odczytywania i zapisywania xml

Post przez majcioszek »

1.włączenie

Code: Zaznacz cały

<galeria>
<foto>photo/romek.jpg</foto>
</galeria> <galeria>
<foto>photo/photo.zip</foto>
</galeria> <galeria>
<foto>photo/index.php</foto>
</galeria>
2.drugie włączenie

Code: Zaznacz cały

 <galeria>
<foto>photo/romek.jpg</foto>
</galeria> <galeria>
<foto>photo/photo.zip</foto>
</galeria> <galeria>
<foto>photo/index.php</foto>
</galeria> <galeria>
<foto>photo/romek.jpg</foto>
</galeria> <galeria>
<foto>photo/photo.zip</foto>
</galeria> <galeria>
<foto>photo/index.php</foto>
</galeria>
i tak dalej się powoduje
lordviader
Nowicjusz
Posty: 3
Dołączył(a): czwartek, 31 stycznia 2013, 23:03

Re: Skrypt do odczytywania i zapisywania xml

Post przez lordviader »

Witam.
Się wtrącę gdyż razem z Majcioszkiem kminimy nad tym problemem.
więc są 2 sprawy.

1)
powyższy kod generuje

Code: Zaznacz cały

" <galeria>
<foto>foty/Zdjęcie(10).jpg</foto>
</galeria> <galeria>
<foto>foty/PIC207.jpg</foto>
</galeria> <galeria>
<foto>foty/PIC206.jpg</foto>
</galeria> <galeria>
<foto>foty/PIC205.jpg</foto>
</galeria>
a nam zależy żeby wyraz "<galeria>" był na początku wszystkiego a "</galeria>" na samym końcu.

2)
żeby pliki nie były za każdym razem dopisywane ale po ponownym uruchomieniu nadpisane w całości :)
myslałem o kodzie który b zaczynał czyścić cały dokument przed wykonaniem reszty :)
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Skrypt do odczytywania i zapisywania xml

Post przez Morfidon »

Code: Zaznacz cały

<?php
$i=0;
foreach (glob("photo/*.*") as $filename)
{
$tab[$i]['nazwa'] = $filename;
$tab[$i]['rozmiar'] = filesize($filename);
$i++;
$num = $i;
}

$id = 0;
$nowe_dane ="<galeria>";

while($num>0)
{
$num--;
$mode = $tab[$id]['nazwa'];

$plik="foto.xml";
$czytanie=@fopen($plik,"r+");
$tekst="";

while(!feof($czytanie)) {
   $tekst.=fread($czytanie,500);
   }

$nowe_dane .=" 
<foto>$mode</foto>
";

$id++;
}

$nowe_dane .="</galeria>"; 

fseek($czytanie,0);
fwrite($czytanie, $nowe_dane.$tekst);
fclose($czytanie);
?>
lordviader
Nowicjusz
Posty: 3
Dołączył(a): czwartek, 31 stycznia 2013, 23:03

Re: Skrypt do odczytywania i zapisywania xml

Post przez lordviader »

Działa :)
Jesteś naprawdę zajebisty w tym co robisz.
Naprawdę wielkie dzięki :) uratowałeś mi tym tyłek.

A jeszcze jakbyś dał radę wykminić jak zrobić by nie dodawał za każdym razem danych tych samych. Tylko by nadpisywał już istniejący plik albo czyścil go na samym początku to byłby już szczyt wszystkiego :)
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Skrypt do odczytywania i zapisywania xml

Post przez Morfidon »

Musisz wykorzystać inny tryb otwarcia zamiast r+ skorzystaj z w+.
lordviader
Nowicjusz
Posty: 3
Dołączył(a): czwartek, 31 stycznia 2013, 23:03

Re: Skrypt do odczytywania i zapisywania xml

Post przez lordviader »

Morfidon napisał(a):Musisz wykorzystać inny tryb otwarcia zamiast r+ skorzystaj z w+.
No i również działa :). Normalnie mistrz jesteś :)
pozdrawiam i bardzo Ci dziękuję :)
Post Reply