[ Zero-Cool @ 11.03.2005. 22:36 ] @
Pravim jedan wap sajt tj on bi trebao samo da bude skupljac vesti.
Dakle zamislio sam da kada odem na adresu tog wap sajta da mi na
pocetku postavi logo i ispod njega da budu najsvezije vesti koje ce biti
pokupljene sa html sajta tj i news feed-a za sada koristim rss 0.91.
Sa wml-om sam slabo upoznat pa ako mozete da mi nekako pomognete bio bih
vam veoma zahvalan.(sve sto mislite da treba da znam pisite).

poz
[ Br@nkoR @ 12.03.2005. 06:34 ] @
Upravo radim tako nešto na adresi http://branko.superihost.com/3g opcija FeedReader ali još nije aktivirana već je testiram u lokalu pošto imam problema sa besplatnim hostingom.
[ Br@nkoR @ 12.03.2005. 06:50 ] @
Evo upravo sam dodao link do CNN rss-a kako bi video kako radi.
Potrebno je uraditi i keširanje kako svaki put ne bi se otvarao link i čitao jer su tako moguće i greške.
A i treba ga malo još srediti (izmena interfejsa, dodati sliku ukoliko postoji u rss-u ...).
Inače sajt možeš posetiti i pomoću web browsera jer se vrši detektovanje.
[ Zero-Cool @ 12.03.2005. 08:17 ] @
Video sam i jako je dobro, ja sam sinoc do tri sata vrsljao po googlu i trazio nacin da tako nesto odradim ali svi nude da te rss feedove hostuju kod njih pa da onda ja
samo dodelim link i to je to. ali ja bi da se sve odradi na mom serveru.
Da li bi ikako mogao da me uputis kako da to izvedem?Bio bih ti stvarno zahvalan.
A inace za pisanje wml-a koji software koristis (video sam da je tvoja stranica u xhtml-u, ali cisto me zanima koji si koristio za wml pre)?
[ Br@nkoR @ 12.03.2005. 10:26 ] @
Ja na primer u ovom mom primeru koristim link do rss kontretno do http://rss.cnn.com/rss/cnn_topstories.rss zatim to parsitam pomoću XML Parser functions kako bi prikazao to na svom sajtu.

Da stranica je xhtml pošto to tvoj browser podržava poseti npr. pomoću WinWAP-a moj sajt i biće ti prikazan wml sadržaj, znači vršim detekciju šta telefon podržava (xhtml, wml, gif ili wbmp) i taj sadržaj prikazujem. Sama sintaksa wml-a nije teška ima svega nekoliko tagova, pa za izradu istog možeš koristiti bilo koji tekst editor.
[ Zero-Cool @ 12.03.2005. 10:52 ] @
Sve sam to skontao ali evo da ti objasnim moj problem ja sam napravio wml stranicu

www.sofub.org.yu/wap/index.wml - skontao sam wml nije tesko e sad imam uradjen
rss feed 0.91 extenzije rss.php. i sve to radi super mogu sa bilo kojim agregatorom da skupim vesti sa sajta.

Ono sto ja hocu je da na wap stranici mogu da citam te vesti a da ne moram da azuriram wap stranicu nego da ona vesti povlaci iz tog rss feed-a.
Moj problem je sto ne znam xml i ovo sto sam do sada uradio bilo je sa nekim programcicima.Doduse wml je jako jednostavan nema tu sta da se ne zna ali pravljenje rss mi je vec problem tako da za moj news (cutenews) je vec bilo napisano kako se postavlja rss feed pa sam samo to iskoristio.
[ Br@nkoR @ 12.03.2005. 11:22 ] @
Pa pogledaj ovaj link http://www.php.net/xml
Mada pogledaj i na http://www.hotscripts.com ili http://www.phpclasses.org moguće da ima gotovih klasa za čitanje rss feed-a.

Evo dodao sam feed sa tvog sajta i radi.
[ Zero-Cool @ 12.03.2005. 11:56 ] @
Ovo mi nije bas puno pomoglo nisam shvatio sustinu, i dalje ne znam jel ja mogu
da napravim stranicu koja ce imati .wml ekstenziju i koja moze da ima podrsku za rss feed citanje tj da se na njoj prikazuju vesti.I ako to moze ja nisam nasao nista od tih skripti pa me zanima sta u stvari treba da napravim da bi to tako funkcionisalo.
[ Br@nkoR @ 12.03.2005. 12:15 ] @
Pa pomoću PHP generiši tu wml stranu. Samo šalji odgovarajući header.
Code:
 header('Content-type: text/vnd.wap.wml');

Nije važno da li je ekstenzija fajl php ili wml važno je da se šalje odgovarajući header. Tako ja na svom sajtu radim. Ti možeš staviti i php kod unutar *.wml fajla ali tada treba da podesiš server da te kod unutar *.wml (između <?php ?>)stranice tretira kao php kod. Pogledaj npr @u_m -ov wap sajt http://wap.srb.co.yu

A što se tiče gotovih skripti:
http://www.phpclasses.org/browse/package/61.html
http://www.phpclasses.org/browse/package/80.html
http://www.phpclasses.org/browse/package/259.html
http://www.phpclasses.org/browse/package/1299.html
http://www.phpclasses.org/browse/package/1811.html
...


Nadam se da si ovo razumeo.
[ Zero-Cool @ 12.03.2005. 22:03 ] @
Evo skinuo sam parser tj skinuo sam sve one skripte evo kod jedne od njih:

Code:

<?
header('content-type: text/vnd.wap.wml');

// define hooks to rss_parser class as xml functions do not allow object methods as handlers.
function rss_start_element($parser, $name, $attributes) {
  global $rss;
  $rss->start_element($parser, $name, $attributes);
}

function rss_end_element($parser, $name) {
  global $rss;
  $rss->end_element($parser, $name);
}

function rss_character_data($parser, $data) {
  global $rss;
  $rss->character_data($parser, $data);
}


class rss_parser {

// constructor. setup parser options and handlers.
function rss_parser() {
  $this->error = '';
  $this->file = '';
  
  $this->channel = array();
  $this->data = ''; 
  $this->stack = array();
  $this->num_items = 0; 
  
  $this->xml_parser = xml_parser_create();
  xml_set_element_handler($this->xml_parser, "rss_start_element", "rss_end_element");
  xml_set_character_data_handler($this->xml_parser, "rss_character_data");
}

function character_data($parser, $data) {
  if (empty($this->data)) $this->data = trim($data); // concatenate non-parsed data...
  else $this->data .= ' '.trim($data);               // and get rid of white space.
}

function start_element($parser, $name, $attrs) {
  switch($name) {
    case 'RSS':
      break;
  
    case 'CHANNEL':
      break;
  
    case 'IMAGE':
      array_push($this->stack, $name);
      break;
    
    case 'ITEM': 
      array_push($this->stack, $name);
      array_push($this->stack, $this->num_items); // push item index.
      $this->item[$this->num_items] = array();
      $this->num_items++;
      break;
      
    case 'TEXTINPUT':
      array_push($this->stack, $name);
      break;
      
    default:
      array_push($this->stack, $name);
      break;

  }  
}

function end_element($parser, $name) {
  switch ($name) {
    case 'RSS':
      break;
      
    case 'CHANNEL':
      break;
       
    case 'IMAGE':
      array_pop($this->stack);
      break;
    
    case 'ITEM':
      array_pop($this->stack);
      array_pop($this->stack);
      break;
      
    case 'TEXTINPUT':
      array_pop($this->stack);
      break;
      
    default: // child element.
      $element = (implode("']['",$this->stack));     
      eval("\$this->channel['$element']=\$this->data;"); // this does all the hard work.
      array_pop($this->stack);
      $this->data = '';
      break;
  }
}


function parse() {
  if (!($fp = @fopen($this->file, "r"))) {
    $this->error = "Could not open RSS source \"$this->file\".";
    return false;
  }
  while ($data = fread($fp, 4096)) {
    if (!xml_parse($this->xml_parser, $data, feof($fp))) {
      $this->error = sprintf("XML error: %s at line %d.",
        xml_error_string(xml_get_error_code($this->xml_parser)),
        xml_get_current_line_number($this->xml_parser));
      return false;
    }
  }
  xml_parser_free($this->xml_parser);
  return true;
}




} // class rss_parser.

$rss = new rss_parser();
$rss->file = 'http://www.sofub.org.yu/news/show_news.php';
$rss->parse() or die($rss->error);
if ($rss->error) print $rss->error;

print_r($rss->channel);
?>


u principu treba da usmerim ovaj fajl na news cime cu dobiti da on parsira vesti i da ih prikazuje nadam se u odgovarajucem formatu.Sve sam to uradio i opet ne radi da li bi mogao da pogledas gde sam pogresio.Znam da te smaram, ali stvarno nemam pojma nista o ovome i treba mi pomoc.
[ Br@nkoR @ 13.03.2005. 08:14 ] @
Parsiraš pogrešan fajl.
Pogledaj fajl uz poruku.
Morao sam da uradmi str_replace zato što u xml fajlu se nalazi i font tag koji se ne nalazi u wml specifikaciji.
Testirano je u localu.
Ti dalje to sredi kako želiš da prikažeš.
[ Zero-Cool @ 13.03.2005. 08:53 ] @
Mnogo ti hvala ovo sve super radi shvatio sam sta si morao da izmenis super je e ima jos samo jedna sitnica koja me zanima a to je kako da odredim broj vesti koji ce se prikazivati na wapu ja na primer hocu da mi se prikaze samo zadnje 3.Jel to ikako moguce srediti u ovoj news.php skripti?
[ Br@nkoR @ 13.03.2005. 09:06 ] @
umesto:
Code:

for ($i=0; $i<$number; $i++)


stavi:
Code:

for ($i=0; $i<3; $i++)


Ili umesto:
Code:

$number = count($data['ITEM']);


stavi:
Code:

$number = 3;
[ Zero-Cool @ 13.03.2005. 09:15 ] @
E hvala ti Branko stvarno si majstor sve radi kako sam hteo.
Sad cu sam malo da sredjujem pocetnu stranicu toliko sam o wml-u naucio a ovo sa parsiranjem je malo teze (tj mnogo teze za mene koji to nikad nisam radio), jos jednom puno hvala.

poz
[ Zero-Cool @ 06.04.2005. 00:46 ] @
Ponovo imam problem sa ovim parserom.

Sada sam prebacio stranicu sa adrese www.sofub.org.yu/wap na adresu wap.sofub.org.yu i sve je radilo kako treba, ali sad se broj vesti povecao nece da radi i ne znam sta se desava, ali kada kliknem na link obavestenja on bi trebalo
da parsira vesti i da ih prikaze kao ranije, medjutim on sad pokusava da ucita
i nikako ne uspeva i to traje po minut i na kraju izbaci obavestenje

"No response, try again"

Pored toga RSS feed mi radi odlicno znaci mogu da prikupljam vesti sa aggregatorom i kod za feed reader bi trebalo da je dobar, ispravio sam samo link prema rss.php-u.

Code:

<?php
header('Content-type: text/vnd.wap.wml');
      echo '<?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
            <wml>
            <head>
            </head>
            <card id="first" title="Novosti"><p align="left">'."\n";

// define hooks to rss_parser class as xml functions do not allow object methods as handlers.
function rss_start_element($parser, $name, $attributes) {
  global $rss;
  $rss->start_element($parser, $name, $attributes);
}

function rss_end_element($parser, $name) {
  global $rss;
  $rss->end_element($parser, $name);
}

function rss_character_data($parser, $data) {
  global $rss;
  $rss->character_data($parser, $data);
}


class rss_parser {

// constructor. setup parser options and handlers.
function rss_parser() {
  $this->error = '';
  $this->file = '';

  $this->channel = array();
  $this->data = '';
  $this->stack = array();
  $this->num_items = 0;

  $this->xml_parser = xml_parser_create();
  xml_set_element_handler($this->xml_parser, "rss_start_element", "rss_end_element");
  xml_set_character_data_handler($this->xml_parser, "rss_character_data");
}

function character_data($parser, $data) {
  if (empty($this->data)) $this->data = trim($data); // concatenate non-parsed data...
  else $this->data .= ' '.trim($data);               // and get rid of white space.
}

function start_element($parser, $name, $attrs) {
  switch($name) {
    case 'RSS':
      break;

    case 'CHANNEL':
      break;

    case 'IMAGE':
      array_push($this->stack, $name);
      break;

    case 'ITEM':
      array_push($this->stack, $name);
      array_push($this->stack, $this->num_items); // push item index.
      $this->item[$this->num_items] = array();
      $this->num_items++;
      break;

    case 'TEXTINPUT':
      array_push($this->stack, $name);
      break;

    default:
      array_push($this->stack, $name);
      break;

  }
}

function end_element($parser, $name) {
  switch ($name) {
    case 'RSS':
      break;

    case 'CHANNEL':
      break;

    case 'IMAGE':
      array_pop($this->stack);
      break;

    case 'ITEM':
      array_pop($this->stack);
      array_pop($this->stack);
      break;

    case 'TEXTINPUT':
      array_pop($this->stack);
      break;

    default: // child element.
      $element = (implode("']['",$this->stack));
      eval("\$this->channel['$element']=\$this->data;"); // this does all the hard work.
      array_pop($this->stack);
      $this->data = '';
      break;
  }
}


function parse() {
  if (!($fp = @fopen($this->file, "r"))) {
    $this->error = "Could not open RSS source \"$this->file\".";
    return false;
  }
  while ($data = fread($fp, 4096)) {
    if (!xml_parse($this->xml_parser, $data, feof($fp))) {
      $this->error = sprintf("XML error: %s at line %d.",
        xml_error_string(xml_get_error_code($this->xml_parser)),
        xml_get_current_line_number($this->xml_parser));
      return false;
    }
  }
  xml_parser_free($this->xml_parser);
  return true;
}
} // class rss_parser.

$rss = new rss_parser();
$rss->file = 'http://news.sofub.org.yu/rss.php';
$rss->parse() or die($rss->error);
if ($rss->error) print $rss->error;

$data = $rss->channel;
$number = count($data['ITEM']);
for ($i=0; $i<$number; $i++) {
echo '<strong>'.$data['ITEM'][$i]['TITLE'].'</strong><br/>';
echo '<a hfer="'.$data['ITEM'][$i]['TITLE'].'">link</a><br/>';
$descript = $data['ITEM'][$i]['DESCRIPTION'];
$descript = str_replace('<font color="#0466fc">','',$descript);
$descript = str_replace('</font>','',$descript);
echo $descript.'<br/>';
echo '-------<br/>';
}
echo '</p><br />
<p align="center"><a href="index.wml">Pocetna strana</a></p><br /><br />
</card></wml>';
?>


A evo ga i kod od rss.php-a

Code:

<?PHP
header("Content-type: text/xml");
echo"<?xml version=\"1.0\" encoding=\"utf-8\" ?>
<rss version=\"0.91\" >
 <channel>
   <title>SOFUB - studentska organizacija FABUS-a</title>
   <link>http://news.sofub.org.yu/show_news.php</link>
   <language>en-us</language>
   <description>SOFUB - stranica studentske organizacije FABUS-a</description>
   <generator>CuteNews</generator>
";

$template="rss";
include("show_news.php");

echo"</channel></rss>";
?>
[ Br@nkoR @ 06.04.2005. 16:54 ] @
Pokušao sam kod sebe na sajt da postavim link do tvog rss feeda i radi a pokušao sam i u localu kod da testiram i takođe radi, dok pokušam sa tvog sajta ne radi (prijavljuje grešku "Could not open RSS source "http://news.sofub.org.yu/rss.php".")verovatno je neka greška u parseru, pokušaj sa nekim drugim parserom ili postavi pitanje na PHP forumu jer sam u nekoj žurbi pa ne mogu sada da detaljno gledam kod parsera, a moguće i da je greška u linku ili na serveru, ne znam.

Vidim jednu grešku koju sam ja napravio kada sam kopirao kod, to ne utiče na ovu gore grešku nego ne štampa ispravnu putanju do linka već umesto nje štampa titile
pa tako umesto:
Code:

echo '<a hfer="'.$data['ITEM'][$i]['TITLE'].'">link</a><br/>';


stavi:
Code:

echo '<a hfer="'.$data['ITEM'][$i]['LINK'].'">link</a><br/>';


A vidmim i postoji greška u wml kodu na početnoj strani na tvom sajtu pa nije moguće pristupiti istom pomoću nekih telefona.
[ ddz @ 07.04.2005. 08:05 ] @
Ne bi bilo loše ni da umesto hfer napišeš href.
[ Br@nkoR @ 07.04.2005. 08:41 ] @
xe xe, izvinjavam se nisam video to greška u kucanju.
[ Zero-Cool @ 07.04.2005. 11:50 ] @
Primetio sam ja to i ispravio sam u kodu koji je na serveru, ali to ne menja stvari.I dalje nece da radi.A radilo je.
[ dobio_7 @ 07.04.2005. 16:34 ] @
Mozda je u pitanju neki problem sa serverom ?
[ Zero-Cool @ 08.04.2005. 12:34 ] @
@BrankoR:

Jesi li ti koristio isti parser da proveris jel moj RSS feed radi?
Ako nisi jel bi mogao samo malo vremena da odvojis da pogledas ovaj parser sto ja koristim, jer niko drugi ne odgovara na moje pitanje.

Probao sam i sa drugim parserima, ali izgleda da nisam jos uvek skontao kako to funkcionise pa mi ni oni nisu radili, tj ucita se stranica, ali nema isparsiranog sadrzaja.
[ JovanT @ 09.04.2005. 12:13 ] @
Kao prvo, jedno logično pitanje. Nadam se da RSS feed kreiraš koristeći podatke iz baze? Zašto onda i vesti na wap sajtu ne prikazuješ iz baze? To ti je lakše rešenje od parsiranja RSS fajla.

Ja za svoj sajt koristim MagpieRSS i mislim da je sasvim OK (ima i mogućnost keširanja). Ovaj fajl uz poruku kod mene u lokalu radi ali možda neći raditi na tvom serveru zbor različitih podešavanja. Sinoć sam probao da otvorim tu tvoju stranicu koristeći Operu ali kad sam pogledao source stranice, piše sledeće Could not open RSS source http://news.sofub.org.yu/rss.php

Ne bi bilo loše i da svaku wml stranicu proveriš na http://validator.w3.org i utvrdiš da nema grešaka. Jedino tako možeš da budeš siguran da će se sadržaj prikazivati na telefonima.
[ Zero-Cool @ 09.04.2005. 13:50 ] @
Upravo sam sve isprobao i u loklalu i sve radi kako treba, tako da mi se cini da su izgleda moji provajderi odlucili da mi zabrane da parsiram sadrzaj. Tako da cu morati njih da ganjam da mi to odobre.

Hvala Vam jos jednom.