| 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: 10 let
|
|||
0