Autor | Zpráva | ||
---|---|---|---|
soucekgns Profil |
#1 · Zasláno: 26. 4. 2011, 16:44:05 · Upravil/a: soucekgns
Mám takovýto vstupní formulář:
a soubor xml: <?xml version="1.0" encoding="UTF-8"?> <vse> <den>1</den> <den>2</den> <den>3</den> ... <den>31</den> </vse> Potřeboval bych, aby se "Text události" zapsal do souboru xml do příslušného dne vybraného ve formuláři: <den>4<udalost>Text udalosti</udalost></den> Na normální zapisování jsem používal tento script, ale s tímhle si nevím rady: $xmlzadani = ("<udalost>$text_udalosti</udalost>"); $novyradek = "$xmlzadani"; $lines = file("udalosti.xml"); $noveudaje = ""; foreach($lines as $line_num => $line) { if(rtrim($line) != "<vse>") { $noveudaje .= $line; } else { $noveudaje .= $line; $noveudaje .= $novyradek . "\n"; } } $fd = fopen("udalosti.xml", "w"); fwrite($fd, $noveudaje); fclose($fd); Díky za rady |
||
Joker Profil |
#2 · Zasláno: 26. 4. 2011, 17:17:35 · Upravil/a: Joker
soucekgns:
Jestli to má ukládat událost v nějaký den, asi logičtější by bylo, kdyby hlavní prvek byla událost, která obsahuje den a nějaký text. Stačila by na to i jedna značka: <udalost den="1">text události</udalost> K tomu kódu: 1. Proč se vlastně namáhat s tím „XML“, když se ten soubor pak čte po řádcích a porovnává textově? Když XML, tak snad XML parser. 2. Jaký přesně význam má řádek 2? $novyradek = "$xmlzadani"; |
||
soucekgns Profil |
#3 · Zasláno: 26. 4. 2011, 17:31:52
Joker:
„1. Proč se vlastně namáhat s tím ‚XML‘“ - To je zdlouhavé... „2. Jaký přesně význam má řádek 2?“ ...to je jen pro ukázku... ten script je složitější „3. Opravdu se mají nové údaje vložit za každý řádek který není roven "<vse>"?“ Nevím, zda je to špatně, každopádně to funguje a SPRÁVNĚ:-) --- Značka by stačila, ale pořád to neřeší problém, protože existuje takovýto soubor a já chci teď zapsat událost do dne 2 <udalost den="1"></udalost> <udalost den="2"></udalost> <udalost den="3"></udalost> |
||
Joker Profil |
#4 · Zasláno: 26. 4. 2011, 19:22:59
soucekgns:
ad 3. moje chyba, otočil jsem si tu podmínku. Jinak jak už jsem říkal- moje rada je použít XML parser. |
||
soucekgns Profil |
#5 · Zasláno: 26. 4. 2011, 20:41:12
Joker:
„rada je použít XML parser“ V tomhle se moc nevyznám, nevíte někdo nějakou stránku, na které by to bylo popsané? |
||
soucekgns Profil |
#6 · Zasláno: 27. 4. 2011, 11:27:26
Tak jsem na w3schools našel takovýto script, ale jak to mám použít v php?
Například jak mám zapsat v php (nechci v javascriptu!) něco jako: if (y.getNamedItem("category").nodeValue == "1") { echo 'den první'; } <script type="text/javascript"> function loadXMLDoc(dname) { if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest(); } else { xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",dname,false); xhttp.send(); return xhttp.responseXML; } xmlDoc=loadXMLDoc("books.xml"); ax=xmlDoc.getElementsByTagName("title"); ay=xmlDoc.getElementsByTagName("author"); az=xmlDoc.getElementsByTagName("year"); x=xmlDoc.getElementsByTagName("book"); for (i=0;i<x.length;i++) { document.write(ax[i].childNodes[0].nodeValue + "<br />"); document.write(ay[i].childNodes[0].nodeValue + "<br />"); document.write(az[i].childNodes[0].nodeValue + "<br />"); y=x[i].attributes; document.write(y.getNamedItem("category").nodeName); document.write(": "); document.write(y.getNamedItem("category").nodeValue); document.write("<br /><br />"); } </script> Díky za rady |
||
Joker Profil |
#7 · Zasláno: 27. 4. 2011, 11:30:16
soucekgns:
To je ovšem Javascript. PHP ale taky umí zpracovávat XML, viz třeba SimpleXML |
||
soucekgns Profil |
#8 · Zasláno: 27. 4. 2011, 12:06:31
Díky, tam je to hezky vysvětlený :-)
|
||
Časová prodleva: 13 let
|
0