Autor Zpráva
gardener
Profil
Mám problém:
Zapisuji pomocí PHP do souboru několik tagů,vše funguje o.k jenže na konci souboru je ukončovací tag </simpleviewergallery> ,
ketrý musí být vždy jako poslední a já když zapisuji na konec souboru vždy zapíši hodnoty až za něj:(
Jde nějakým způsobem v PHP ošetřit, aby se zapisovalo vždy před tento tag?
Napadlo mne zapisovat do samostatného souboru a ten poté includovat,jenže se jedná o XML soubor,takže to asi není možné..

Díky za každou radu..

Zde je zápis kodu:
<?php
//Export do souboru
$soubor = "../include/scripts/galerry/gallery.xml"; //Název a umístìní zapisovaného souboru
$export = fopen($soubor,"a+"); //Definice promenne a prirazeni fce fopen s parametry(nazev souboru,pristup prava)
fwrite($export,"\r\n".
"<image>\r\n".
"<filename>$name</filename>\r\n".
"<caption>$text</caption>\r\n".
"</image>");

//Fce pro zapis (prizareni prom a vpis hodnot,na konci odrad)
fclose($export); //Fce pro uzavreni handlu souboru
endif;
?>
bukaj
Profil
gardener
Použij např. SimpleXML a nebudeš tohle muset vůbec řešit.
krteczek
Profil
potřebuješ to mít v xml? jinak bych ty data uložil jako serializovanou array:
$data = unserialize(file_get_contents($flie));
$data[] = array('filename' => $name, 'caption' => $text, 'width' => 800, 'height' => 600);
file_put_contents($file, serialize($data));
Mistr
Profil
V duplicitním (již smazaném) tématu:

Taps radil:
a co si udělat takový skript, který by ti při otevření souboru našel </simpleviewergallery> a smazal a pak zapsal nová data a vložil </simpleviewergallery>

nebo by to možná šlo i tak že by jsi nastavil ukazatel před </simpleviewergallery> zkus se podívat na fseek


Mike8748 doporučoval:
pres SimpleXML nactes soubor, upravis jako pole, a pak zase zapises do souboru
krteczek
Profil
jinak můžeš načíst soubor jako pole a poslední žádek umazat:
$data = file($file);
//odstranění posledního řádku
unset($data[(count($data) -1)]);
$data[] = "<image>";
$data[] = "<filename>$name</filename>";
$data[] = "<caption>$text</caption>";
$data[] = "</image>");
$data[] = "</simpleviewergallery>";
# zápis do souboru
file_put_contents($file, join("\n", $data));
gardener
Profil
Mistr: Ten nápad se mi líbí ,hlavně ten s tím ukazatelem, jenže nikdy jsem při práci se soubory ještě ukazatel nevyužil,takže nevím jak na to:)

krteczek Hned ten postup vyzkouším.

bukaj To by určitě fungovalo,jenže to potřebuji řešit globálně,jelikož dříve nebo později to budu potřebovat jinde a třeba to nebude zrovna XML..


Díky ale za info,hned vyzkouším..
gardener
Profil
Mistr: A u fseek, jak odkážu na předposlední řádek prosímtě?Nemusím prvně zjišťovat celkový počet řádků?

Krteczek Funguje to výborně, děkuji za radu..
gardener
Profil
Tak jsem zjistil zajímavou věc:
Při použití Krteczkova postupu se zhruba po druhém uploadu začnou vytvářet v XML souboru prázdné řádky,posledaní záznam je vždy v celku ale ostatní se od sebe stále "vzdalují" až v podstatě přestane skript fungovat..
Vůbec ale netuším,čím by to mohlo býti způsobeno:)..ale vypadá to jako by se vždy vložilo to co se má zapsat i jako prázdné řádky..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: