Autor Zpráva
vojja01
Profil *
Zdravím všechny,
Pokusil jsem se napsat jeden "skriptík" v PHP pro načtení RSS souboru.
<?
$xml = "./example_feed.xml";
$xmlfeed = simplexml_load_file($xml);        //načtení RSS souboru
$index = 0;
foreach ($xmlfeed->channel->item as $item):
  if($index <= $_GET["index"] OR $index >= ($_GET["index"] + 10)) break; //pokud je číslo položky menší než je nastavené, nebo pokud již skript prošel 10ti položkami, skonči! >:D
  $index++;
  $date = $item->pubDate;
  $link = $item->link;
  $title = $item->title;
  $desc = $item->description;
  $cat = $item->category;         //nastavení proměnných z položky RSS

  $date = strtotime($date);
  $date = Date("j.m.Y H:i:s", $date);?>
  <div style="margin:5px 0px;border-top:1px solid grey;">
  <?echo $date;?><a href="<?echo $link;?>"><?echo $title;?></a>
  <?echo "<br>".$desc."<br></div>";         //vypsání položky
endforeach;?>
Když vynechám podmínku pro kontrolu čísla položky (je tam proto, že skript volám vícekrát s proměnnou $_GET["index"] a zobrazuji tak více článků), vše se vypisuje bez problémů. Jenže pomocí $_GET["index"] si chci nastavit, aby se mi zobrazilo více položek (po desíti), ne jenom od začátku souboru. Jenže nic se nevypíše a kupodivu mi php žádnou chybu nehlásí. Namátkou odhaduji, že bude chyba v té podmínce, ale už si s tím lámu hlavu hodně dlouho a na nic nemůžu přijít...
Díky za všechny odpovědi :)
Alphard
Profil
Nechcete tam spíš continue? Break to odstaví na první položce.
juriad_
Profil *
Vypisuješ články ve smyčce. Ta prochází postupně hodnotami od 0. Jenže pokud je GET větší než 0, tak se podmínka při prvním průchodu vyhodnotí jako pravdivá a následný break ukončí cyklus for.
nonejm
Profil *
 if($index <= $_GET["index"] 
$index = 0; bude vždycky menší než $_GET["index"] (pokud $_GET["index"] není záporné číslo), takže se nic neprovede
vojja01
Profil *
[#4] nonejm
V cyklu je příkaz $index++
nonejm
Profil *
$get_index = $_GET["index"] 
.
.
.
if($index >= $get_index  AND $index < ($get_index + 10)) vypisuj; else nic nedělej;
vojja01
Profil *
[#6] nonejm
Po tvojí radě mi to již funguje, ale pouze když je $_GET["index"] menší než 10...
nonejm
Profil *
bude=li $_GET["index"] 20
if($index >= 20  AND $index < 30) vypisuj; else nic nedělej;
tak to musí vypisovat pro $index od 20 do 29
otázkou je, jesli je tam tolik přízpěvků anebo jestli tam nezbyla nějaká jiná podmínka pro $index>10


pravda je, že by tam mohla být podmínka s break pro $index >=($get_index + 10), aby to zbytečně neprojíždělo všechny přízpěvky do konce
vojja01
Profil *
No, právě to mi vrtá hlavou. Teď jsem zkusil vypsat na konec skriptu hodnotu $index a je pořád 10, ať se děje co s děje. Když nastavím $get_index větší než 9, nic se nevypíše. Když 9 nebo méně, vypíšou se položky od 1 do čísla v $get_type. Přitom podle podmínky by se jich mělo vypsat 10, od čísla $get_index. Jinak používám RSS ze serveru cnews.cz a tam rozhodně není jen 10 článků :D.


Vlastně první část funguje, a to, že se mi zobrazí položky od čísla $get_index. Ale pouze do desíti, ne do 10ti položek přičtených k $get_index. Takže chyba bude nejspíš tam :(


Takže když zadám např. 8, měly by se vypsat položky 8-18 ale vypíší se 8-10... -_-
nonejm
Profil *
http://www.cnews.cz/rss.xml - je jich tam přesně deset !!! :-D
vojja01
Profil *
Ježiš, to si děláte srandu! :DDDD
Tak to se všem moc omlouvám, když jsem to zkoušel s jiným souborem (zive.cz), tak byl zrovna ten soubor nějak nedostupný a taky mi to nešlo... No tak děkuji za váš čas, snad příště nebudu tak blbý ;) :D


(mimochodem, se souborem http://www.zive.cz/rss/sc-47/ už mi to funguje bezproblémově... :D)

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: