Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

rss reader i slike po temama

[es] :: PHP :: rss reader i slike po temama

Strane: 1 2

[ Pregleda: 3952 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon rss reader i slike po temama31.05.2011. u 19:42 - pre 156 meseci
pokusavam da napravim rss citac

evo koda za index.php fajl

Code:
<header>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</header>
<body style=" font-family: verdana; font-size:12px; width:100%; background:#383838;">
<div style="text-align:justify; padding: 10px; width:400px; margin-left: auto; margin-right: auto; margin-top:25px; background:#ffffff;"><?php>
        
        $rss = new SimpleXMLElement('http://www.naslovi.net/rss/sport/', null, true);
        
        echo "<h1><a href='{$rss->channel->link}'>{$rss->channel->title}</a></h1>".PHP_EOL.'<hr />'.PHP_EOL;
        
        foreach($rss->xpath('channel/item') as $item)
            {
                    echo <<<EOF
                    
                <div style='font-size:14px;'><h2><a href='{$item->link}'>{$item->title}</a></h2></div>
                <div>{$item->description} </br></div>
                <div>{$item->image}</div>
                <div style='font-size:9px;'></br>Objavljeno: {$item->pubDate}</div>
                <hr>

EOF;
}
?>

</div>
</body>


kako da u okviru ovog koda prikazem sliku po svakon naslovu koji postoji u rss?

hvala
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: rss reader i slike po temama01.06.2011. u 03:12 - pre 156 meseci
Ovaj feed je bez slika tako da ćeš ručno morati da "parsiraš" svaki link i prikazuješ sliku odatle, što će usporiti učitavanje rss feed-a. Problem je samo što trebaš znati koju sliku tačno (čini mi se da je ovaj element u pitanju za svaki naslov <div class="img"> )
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama01.06.2011. u 07:40 - pre 156 meseci
Hvala,

Podpitanje, da li je moguce kodom "uhvatiti" prvu sliku na koju se naidje ? u delu <content:encoded> rss-a su objavljene slike?
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: rss reader i slike po temama01.06.2011. u 09:52 - pre 156 meseci
Mislim da i treba da uhvatis sliku iz content:encoded. Mozes sa regular expression.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: rss reader i slike po temama01.06.2011. u 15:28 - pre 156 meseci
Code:
Izbrisan kod...

Mada može i bolje.

Dodatak: Sada vidim da ima i content:encoded.

Probaj ovako:
Code:
<header>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</header>
<body style=" font-family: verdana; font-size:12px; width:100%; background:#383838;">
<div style="text-align:justify; padding: 10px; width:400px; margin-left: auto; margin-right: auto; margin-top:25px; background:#ffffff;"><?php>
        
        //$rss = new SimpleXMLElement('http://www.naslovi.net/rss/sport/', null, true);
        
$data = file_get_contents('http://www.naslovi.net/rss/sport/');
    $data = str_replace("content:encoded>","content>",$data);
    $xml = simplexml_load_string($data);
    $item = $xml->channel;
    
    foreach($item->item AS $art)
    {
        echo "<div><a href='".$art->link."'>".$art->title."</a></div>". $art->content."<hr />";
    }
?>

</div>
</body>


[Ovu poruku je menjao ivan.a dana 01.06.2011. u 16:58 GMT+1]
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: rss reader i slike po temama01.06.2011. u 15:51 - pre 156 meseci
Nema potrebe za dodatnim učitavanjem posebnih vesti, npr ovo što je napisao @VladaSu
Code:

<header>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</header>
<body style=" font-family: verdana; font-size:12px; width:100%; background:#383838;">
  <div style="text-align:justify; padding: 10px; width:400px; margin-left: auto; margin-right: auto; margin-top:25px; background:#ffffff;">
  <?php
    $rss = new SimpleXMLElement('http://www.naslovi.net/rss/sport/', null, true);
    $ns = $rss->getNamespaces(true);
    echo "<h1><a href='{$rss->channel->link}'>{$rss->channel->title}</a></h1>".PHP_EOL.'<hr />'.PHP_EOL;
    foreach($rss->xpath('channel/item') as $item)
    {
      preg_match('/<img[^>]+>/', $item->children($ns['content'])->encoded, $match);
      $item->image = $match[0];    
      echo <<<EOF
        <div style='font-size:14px;'><h2><a href='{$item->link}'>{$item->title}</a></h2></div>
        <div>{$item->description} </br></div>
        <div>{$item->image}</div>
        <div style='font-size:9px;'></br>Objavljeno: {$item->pubDate}</div>
        <hr>
EOF;
    }
  ?>
</div>
</body>


ili:
Code:

<header>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</header>
<body style=" font-family: verdana; font-size:12px; width:100%; background:#383838;">
  <div style="text-align:justify; padding: 10px; width:400px; margin-left: auto; margin-right: auto; margin-top:25px; background:#ffffff;">
  <?php
    $rss = new SimpleXMLElement('http://www.naslovi.net/rss/sport/', null, true);
    echo "<h1><a href='{$rss->channel->link}'>{$rss->channel->title}</a></h1>".PHP_EOL.'<hr />'.PHP_EOL;
        
    foreach($rss->xpath('channel/item') as $item)
    {
      $result = $item->xpath('content:encoded');
      preg_match('/<img[^>]+>/', $result[0], $match);
      $item->image = $match[0];
      echo <<<EOF
        <div style='font-size:14px;'><h2><a href='{$item->link}'>{$item->title}</a></h2></div>
        <div>{$item->description} </br></div>
        <div>{$item->image}</div>
        <div style='font-size:9px;'></br>Objavljeno: {$item->pubDate}</div>
        <hr>
EOF;
    }
  ?>
</div>
</body>


Banned - Not available
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama01.06.2011. u 15:53 - pre 156 meseci
Hvala, problem je resen :)
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: rss reader i slike po temama01.06.2011. u 15:54 - pre 156 meseci
Da, nisam video da u izvornom RSS-u ima content:encoded elemente. Tako je mnogo lakše...
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama01.06.2011. u 16:43 - pre 156 meseci
http://moravaprom.com/ebchost/

ovde mozete videti rezultat.

Tek sada vidim i ostala dva primera, probacu i njih, hvala najlepse :)
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: rss reader i slike po temama01.06.2011. u 20:55 - pre 156 meseci
Zašto ne keširaš rss feed (snimiš rezultat kao html) na recimo par sati? Mnogo je brže i uzima manje resursa, a nije teško da se uradi.
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama03.06.2011. u 12:36 - pre 156 meseci
Nesto slicno sam imao na umu

mislim na bazu podataka sa potpuno istim karakteristikamam, izvorima, linkovima... razvrstanu po kategorijama (vrstama sportova) ... sada se trenutno to pokusavam
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama05.06.2011. u 21:01 - pre 155 meseci
Malo je zakocilo.

pokusavam da prikupljene podatke upisem u bazu ali dobijam sledecu gresku

PHP Parse error: syntax error, unexpected $end in /home/.../main.php on line 33

znam da je problem u delu koda koji sam oznacio izmedju /* tagova */ gde se nalazi kod za konekciju i upis u bazu podataka

kod sam nasao na netu


Code:
<?php
        
        $rss = new SimpleXMLElement('rssizvor', null, true);
        
        foreach($rss->xpath('channel/item') as $item)
            {
            
            $dom = new DOMDocument();
                 @$dom->loadHTMLFile($item->link);
                 $xpath = new DOMXPath($dom);
                 $entries = $xpath->query('//div[@class="img"]//img');
                 foreach($entries as $e)
                 $image = "<img src='".$e->getAttribute("src")."'alt='' width='150'/>";
                 $naslov = $item->title;
            $opis = $item->description;
            $sadrzaj = $item->content;
            $izvor = "<a href='{$item->link}'>{$rss->channel->title}</a>";
            $objavljeno1 = $item->pubDate;
            $objavljeno2 = $item->pubdate;
            $slikaurl = $e->getAttribute("src");

/*
            $konekcija = mysql_connect("", "", "") or die ("Parametri za povezivanje sa bazom nisu dobri, ili baza ne postoji!");
            $baza = mysql_select_db(" ", $konekcija) or die ("Na zalost, server nije u mogucnosti da pronadje bazu podataka!");

                  $podaci = <<<EOF
                INSERT INTO rss_vesti VALUES ('', '', {$item->title}, {$slikaurl}, {$opis}, {$item->link}, {$item->pubdate});
                EOF;
            $req = mysql_query($podaci,$konekcija);*/
                

            }
?>


napomena: podatke za konekciju sam izbacio iz ovog koda
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: rss reader i slike po temama05.06.2011. u 21:06 - pre 155 meseci
Nije baš preporučljivo da stavljaš INSERT u petlji (mada nije strašno).

Bolje prvo pripremi "output" za bazu podataka pa posle ubaci sve odjednom.
Zašto uopšte koristiš bazu podataka? Ako hoćeš da arhiviraš rss feed onda ok, ali ako ti služi samo za prikaz najnovijih tema, onda je mnogo bolje keširati sadržaj u vidu HTML fajla i onda samo proveravati "starost" fajla. Ako je fajl stariji od npr. 1-2 sata ponovo ga keširaj, u suprotnom prikaži stari (keširani) sadržaj. Tako je neuporedivo brže i praktičnije.

Dodatak: Upit ti nije dobar. Ne treba ti EOF i stavljaj navodnike.
Code:
$podaci = "INSERT INTO rss_vesti VALUES ('','', '".$item->title.", '".$slikaurl."', '".$opis."', '".$item->link."', '".$item->pubdate."')";

I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama05.06.2011. u 21:18 - pre 155 meseci
iskreno, zelim da napravim nesto sto bi bio rss katalog sajtova, mesto gde ce svako moci da se registruje i unese svoj rss link da bi reklamirao svoje proizvode, usluge i sl...

takodje zelim da pruzim mogucnost korisniku da uredi same podatke na sjtu

Code:
Bolje prvo pripremi "output" za bazu podataka pa posle ubaci sve odjednom. 


mozes li mi prikazati primer, posto te ne razumem u potpunosti, jer me buni to kako izvesti ucitavanje svih podataka pa ih onda inserovati od jednom

hvala
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama05.06.2011. u 22:01 - pre 155 meseci
tek sada vidim navedeni kod, na zalost nemam ni jedan upis u tabeli, zato sam i mislio da je potreban EOF, ali sa njim se javlja greska koju sam naveo
Predlog ?
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama06.06.2011. u 00:33 - pre 155 meseci
Hvala, uspeo sam
Code:

<?php
header('Content-Type: text/html; charset=utf-8');
    $konekcija = mysql_connect("", "", "") or die ("Parametri za povezivanje sa bazom nisu dobri, ili baza ne postoji!");
    $baza = mysql_select_db("", $konekcija) or die ("Na zalost, server nije u mogucnosti da pronadje bazu podataka!");

        
        $rss = new SimpleXMLElement('http://www.naslovi.net/rss/sport/', null, true);
        
        foreach($rss->xpath('channel/item') as $item)
            {
            
            $dom = new DOMDocument();
                 @$dom->loadHTMLFile($item->link);
                 $xpath = new DOMXPath($dom);
                     $entries = $xpath->query('//div[@class="img"]//img');
                     foreach($entries as $e)
                         $image = "<img src='".$e->getAttribute("src")."'alt='' width='150'/>";
                 $naslov = $item->title;
            $opis = $item->description;
            $sadrzaj = $item->content;
            $izvor = "<a href='{$item->link}'>{$rss->channel->title}</a>";
            $url = $item->link;
            $datum1 = $item->pubDate;
            $datum2 = $item->pubdate;
            $urlslike = $e->getAttribute("src");
            echo "$naslov, $opis, $sadrzaj, $izvor,, $url, $datum1, $datum2, $urlslike </br></br>";
            
   $sql="INSERT INTO rss_vesti VALUES('','','$naslov','$urlslike','$opis','$url','$datum2')";
   mysql_query($sql,$konekcija);
                

            }
?>
 
Odgovor na temu

ManInTheBox
Beograd

Član broj: 272293
Poruke: 26
*.dynamic.sbb.rs.



Profil

icon Re: rss reader i slike po temama06.06.2011. u 00:50 - pre 155 meseci
Problem sa EOF ti je bio zato sto si imao razmake (space) pre identifikatora EOF
http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

Pokusaj prvo da generises sql pa po izlasku iz foreach izvrsi upit (bulk - mnogo brzi insert):

Code (php):

$sql = "INSERT INTO rss_vesti VALUES ";
foreach ($rss->xpath('channel/item') as $item)
{
    ...
    $sql .= "('','','$naslov','$urlslike','$opis','$url','$datum2'),";
}
// zameni poslednji zarez sa tacka-zarez
$sql{strlen($sql) - 1} = ';';
mysql_query($sql,$konekcija);
 


Napamet pisem pa se nadam da nema gresaka

Pozdrav
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama06.06.2011. u 07:26 - pre 155 meseci
hvala :)

probacu i ovo
 
Odgovor na temu

laponac84
Aleksandar Popović

Član broj: 101043
Poruke: 106
*.dynamic.isp.telekom.rs.



Profil

icon Re: rss reader i slike po temama07.06.2011. u 10:55 - pre 155 meseci
Uspeo sam sve sto sam naumio od osnovnih stvari (registracija, prijava, odjavava korisnika, profilna stranica sa pregledom upisanih sajtova i rss linkova, kao i upis rss vesti u bazu podataka.

ali nije sve tako sjajno :)

Dva problema:

1. sa vecim brojem sajtova vracam se na polazni problem, SLIKA :)
ukoliko imam u bazi vise sajtova (vise razlicitih rss-ova) moze se desiti da u razlicitim elementima rss-a imam sliku, ili je nemam nigde.

pogledajte primer u kome imam dva sajta sa rss-ovima u bazi podataka.
http://moravaprom.com/ebchost/main.php

obratite paznju na drugi sajt kada pocne da se izlistava, ponavlja se slika prvog izvora, jer encoded dela ovde nema, tako da izlistava samo zadnju vrednost za $urlslika
a prikazuje i sliku iz description dela koju vec ima u sebi

2. problem je problem brzine

bilo je reci o tome u ovoj temi, ali nisam bas nesto razumeo najasnije...

Code:

<?php
header('Content-Type: text/html; charset=utf-8');
    $konekcija = mysql_connect("nesto", "nesto", "nesto") or die ("Parametri za povezivanje sa bazom nisu dobri, ili baza ne postoji!");
    $baza = mysql_select_db("nesto", $konekcija) or die ("Na zalost, server nije u mogucnosti da pronadje bazu podataka!");
    
    $sajtovi = mysql_query ("SELECT * FROM rss_sajtovi") or die(mysql_error());
    while($row = mysql_fetch_array( $sajtovi ))
        {
            $id_sajta = $row['ID_SAJTA'];
            $naziv = $row['NAZIV'];
            $url = $row['URL'];
            $rss = $row['RSS'];
            $kategorija = $row['kategorija'];
            echo "<h1>$id_sajta / $naziv / $url/ $rss / $kategorija </h1><hr></br>";
                $rss = new SimpleXMLElement($rss, null, true);
        
                foreach($rss->xpath('channel/item') as $item)
                    {
                        $dom = new DOMDocument();
                             @$dom->loadHTMLFile($item->link);
                             $xpath = new DOMXPath($dom);
                             $entries = $xpath->query('//div[@class="img"]//img');
                             
                             foreach($entries as $e)
                             $image = "<img src='".$e->getAttribute("src")."'alt='' width='150'/>";
                             
                             $naslov = $item->title;
                        $opis = $item->description;
                        $sadrzaj = $item->content;
                        $izvor = "<a href='{$item->link}'>{$rss->channel->title}</a>";
                        $url = $item->link;
                        $datum1 = $item->pubDate;
                        $datum2 = $item->pubdate;
                        $urlslike = $e->getAttribute("src");
                        echo "$naslov, $opis, $sadrzaj, $izvor,, $url, $datum1, $datum2, <img src='$urlslike'/> </br></br>";
            
                           //$sql="INSERT INTO rss_vesti VALUES('','$id_sajta','$naslov','$urlslike','$opis','$url','$datum2')";
                           //mysql_query($sql,$konekcija);
                
                    }
        }
?>

 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: rss reader i slike po temama08.06.2011. u 01:37 - pre 155 meseci
Mislim da trebaš osmisliti strukturu i logiku koda za unos i prikazivanje podataka, jer kod tebe se u isto vreme parsira RSS Feed i importuju podaci u bazu podataka (i to sve u jednoj petlji - petlja u petlji). :)

Ako hoćeš da se ista slika ne prikazuje više puta stavi $urlslike = ""; odmah posle prikazivanja (ili ubacivanja u bazu podataka). Na taj način "resetuješ" $urlslike.

Code:
foreach ($rss->xpath('channel/item') as $item)
{
    ...
    $sql .= "('','','$naslov','$urlslike','$opis','$url','$datum2'),";
    $urlslike = "";
}


Dakle, razdvoj kod za INSERT i kod za prikazivanje Feed-ova (koristi insert kao što sam napisao gore, a primer za to je napisao ManInTheBox. )
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

[es] :: PHP :: rss reader i slike po temama

Strane: 1 2

[ Pregleda: 3952 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.