Autor | Zpráva | ||
---|---|---|---|
leorond Profil |
#1 · Zasláno: 17. 12. 2016, 12:47:36
Ahoj, až do nedávna jsem pracoval hlavně s databázemi MySQL a MSSQL, vím jak od tud vypsat data abych dostal správný výsledek ale v současné době se snažím naučit pracovat více také s XML soubory.
Nepíšu že mám problém, přeci jen bych mohl klidně využít například databázi ale rád bych zjistil jak vypsat například takovíto XML soubor, myslím všechny články v tomto souboru. <aktuality> <clanek>1</clanek> <nadpis>Nadpis</nadpis> <text>Text clánku</text> <clanek>2</clanek> <nadpis>Nadpis</nadpis> <text>Text clánku</text> <clanek>3</clanek> <nadpis>Nadpis</nadpis> <text>Text clánku</text> </aktuality> Také by mne zajímalo jak mohu zjistit počet článků. Mohl by jste mi s tímto někdo pomoci? Tak nějak abych to pochopil? Děkuji mnohokrát. |
||
Pavlínka Profil |
třeba nějak takto???
není to nic extra a dá se to udělat i jinak ale je to asi nejsnažší pokud chceš vypisovat více věcí header("Content-Type: application/xml; charset=utf-8"); echo "<"."?xml version=\"1.0\" encoding=\"UTF-8\"?"."> <aktuality>"; $spojeni=mysql_connect("$MySQL_server","$MySQL_user","$MySQL_user_password"); $co="SELECT * FROM `neco` blabla..."; $navrat=mysql_db_query("$MySQL_db", $co, $spojeni); for ($i=0;$i<mysql_num_fields($navrat); $i++){ } while (list($id, $nadpis, $text, $atd) = mysql_fetch_row($navrat)) { echo " <clanek>$id</clanek> <nadpis>$nadpis</nadpis> <text>$text</text>"; } echo " </aktuality>"; ještě dodám... že xml by mělo být pro snažší výpis uzavřený do samostatných elementů <aktuality> <blabla> <clanek>1</clanek> <nadpis>Nadpis</nadpis> <text>Text clánku</text> </blabla> <blabla> <clanek>2</clanek> <nadpis>Nadpis</nadpis> <text>Text clánku</text> </blabla> <blabla> <clanek>3</clanek> <nadpis>Nadpis</nadpis> <text>Text clánku</text> </blabla> </aktuality> alespoň když jsem teda vždy s xml pracovala tak se to vypisovalo takto :) |
||
leorond Profil |
Já ti nevím, přijde mi to spíš jako výpis z MySQL do XML.
Mám XML soubor do kterého mohu přidávat články a pokud je budu chtít vypsat tak to udělám následovně $CestaXML = simplexml_load_file('cesta/name.xml'); $CisloClanku = '0'; // 0 = <clanek>1</clanek> $TextClanku = htmlspecialchars($CestaXML->text[$CisloClanku]); print($TextClanku); Pokud bych ale dokázal spočítat všechny články tak bych také dokázal všechny články i vypsat přes for() .
Pavlínka: Vím že by to bylo lepší ale jen jsem uvedl příklad XML, samozřejmě mám úplně jiný soubor. |
||
juriad Profil |
#4 · Zasláno: 17. 12. 2016, 13:09:32
Pavlínka:
Hodně štěstí až bude článek obsahovat HTML značky. On ani ten zbytek zdrojáku není vhodný k publikaci (mysql_* funkce). S druhou částí máš pravdu. leorond: Vždyť můžeš použít foreach: $i = 0; foreach ($CestaXML->text as $text) { $i++; echo $i, $text; } |
||
Pavlínka Profil |
#5 · Zasláno: 17. 12. 2016, 13:16:20
leorond:
„Já ti nevím, přijde mi to spíš jako výpis z MySQL do XML.“ a to jsi nechtěl? :D juriad: > Hodně štěstí až bude článek obsahovat HTML značky. On ani ten zbytek zdrojáku není vhodný k publikaci (mysql_* funkce). > S druhou částí máš pravdu. já jsem hodně v začátcích :D promiň :D vím že se to dá napsat i jinak ale já bych to udělala takto :D :( ... ovšem záleželo by na situaci > leorond: > Vždyť můžeš použít foreach: pokud by chtěl spočítat články tak spíše $i = 0; foreach ($CestaXML->text as $text) { $i++; } echo $i; |
||
leorond Profil |
juriad: Děkuji to je pravda, pro výpis je to dobré.
Nyní ještě vymyslet jak spočítat řádky. Jinak dejme tomu že tedy budu vypisovat XML soubor <?xml version="1.0" encoding="UTF-8"?> <test> <clanek> <id>1</id> <nadpis>Nadpis 1</nadpis> <text>Text prvního článku.</text> </clanek> <clanek> <id>2</id> <nadpis>Nadpis 2</nadpis> <text>Text druhého článku.</text> </clanek> <clanek> <id>3</id> <nadpis>Nadpis 3</nadpis> <text>Text třetího článku.</text> </clanek> <clanek> <id>4</id> <nadpis>Nadpis 4</nadpis> <text>Text čtvrtého článku.</text> </clanek> </test> Přes foreach()
<?php $TestXML = simplexml_load_file('./xml/test.xml'); $i = 0; if(count($TestXML->clanek) > 0) { foreach ($TestXML->clanek as $clanek) { $i++; print('<div>'.$i.' - '.htmlspecialchars($clanek->text).'</div>'); } } else { print('Žádné články'); } ?> V tom případě takto si spočítám články print(count($TestXML->clanek)); Nebo případně by mělo fungovat i jen print(count($TestXML));
Jsem na toho count() a úplně zapomněl :D a toho používám dost často :DNebude vadit že si tu udělám takovej malej poznámkovej blok při tvorbě stránkování? :D |
||
leorond Profil |
Teprve prototype ale pracuji na tom co to jde.
<?php // Cesta k XML souboru $TestXML = simplexml_load_file('./xml/test.xml'); // Článků na stránku $PoNaStranku = 2; // Pokud bude stránka prázdná if(empty($_GET['stranka'])) { $Stranka = 1; } else { $Stranka = intval($_GET['stranka']); } $min = $Stranka*$PoNaStranku-($PoNaStranku+1); $max = $Stranka*$PoNaStranku; // Počítáme id článků od 0, ($cislo+1) = počítání od 1 $i = 0; foreach ($TestXML->clanek as $clanek) { $cislo = $i++; if($cislo > $min AND $cislo < $max) { print('<div>'.($cislo+1).' - '.htmlspecialchars($clanek->text).'</div>'); } } // Předchozí strana = aktuální strana - 1 $Predchozi = $Stranka-1; // Následující strana = aktuální stránka +1 $Nasledujici = $Stranka+1; // Celkový počet strának = počet článků : počet článků na stránku $PocetStranek = count($TestXML)/$PoNaStranku; // Pokud je počet článků > než počet článků na stránku if(count($TestXML) > $PoNaStranku) { // Odkaz na následující stránku pokud je počet příspěvků na stránku < než počet článků a pokud stránka je < než celkový počet stránek if($PoNaStranku < count($TestXML) AND $Stranka < ceil($PocetStranek)) { print_r('<a href="test.php?stranka='.$Nasledujici.'">Následující stránka </a>'); } // Odkaz na předchozí stránku pokud je stránka > než 1 if($Stranka > 1) { print_r('<a href="test.php?stranka='.$Predchozi.'"> Předchozí stránka</a>'); } } // Celkový počet stránek print_r('<p>Počet stránek: '.ceil($PocetStranek).'</p>'); ?> |
||
Časová prodleva: 8 let
|
0