Strona 1 z 2

Skrypt do odczytywania i zapisywania xml

Napisane: czwartek, 31 stycznia 2013, 16:16
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

Re: Skrypt do odczytywania i zapisywania xml

Napisane: czwartek, 31 stycznia 2013, 21:12
przez Morfidon
A co ma robić w tym nowym pliku? Rozumiem, że to problem, ale nie znam założenia.

Re: Skrypt do odczytywania i zapisywania xml

Napisane: czwartek, 31 stycznia 2013, 22:11
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/

Re: Skrypt do odczytywania i zapisywania xml

Napisane: czwartek, 31 stycznia 2013, 22:58
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 ;)

Re: Skrypt do odczytywania i zapisywania xml

Napisane: czwartek, 31 stycznia 2013, 23:00
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

Re: Skrypt do odczytywania i zapisywania xml

Napisane: czwartek, 31 stycznia 2013, 23:10
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 :)

Re: Skrypt do odczytywania i zapisywania xml

Napisane: czwartek, 31 stycznia 2013, 23:54
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);
?>

Re: Skrypt do odczytywania i zapisywania xml

Napisane: piątek, 1 lutego 2013, 00:08
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 :)

Re: Skrypt do odczytywania i zapisywania xml

Napisane: piątek, 1 lutego 2013, 02:04
przez Morfidon
Musisz wykorzystać inny tryb otwarcia zamiast r+ skorzystaj z w+.

Re: Skrypt do odczytywania i zapisywania xml

Napisane: piątek, 1 lutego 2013, 10:08
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ę :)