» »

Skripta easyfeeder in vključevanje novic

Skripta easyfeeder in vključevanje novic

Bela01 ::

Pregledla sem že kup stvari, pa več ne vem kaj delam narobe.

Torej na neki prazni strani, kjer kličem tole skripto, da bi mi izpisala novice z rtvslo strani zadeva deluje. Kak pa želim enako naredit na neki svoji že oblikovani strani, pa kar zbluzi vse skupaj.

Izpis nekaterih napak:
Notice: Use of undefined constant feed - assumed 'feed' in /domains/pgd-bistrica.com/public_html/proba/easyfeeder.php on line 30

Notice: Use of undefined constant maxitems - assumed 'maxitems' in /domains/pgd-bistrica.com/public_html/proba/easyfeeder.php on line 39

Notice: Use of undefined constant maxitems - assumed 'maxitems' in /domains/pgd-bistrica.com/public_html/proba/easyfeeder.php on line 39

......

Po vseh teh napakah se mi pa kljub temu izpišejo novice.

Koda easyfeeder.php:
<?php
//error_reporting(E_ALL&(~E_NOTICE));

function cut($start,$end,$word,$testvar=0)
{	
	$word=substr($word,strpos($word,$start)+strlen($start));
	
	$word=substr($word,0,strpos($word,$end));
	if($testvar) die($start." ".$end."<br>".$word);
	return $word;
}


//make resume from description
function resume($text,$limit=7)
{
	$words=@explode(" ",$text);
	
	$words=@array_splice($words,0,$limit);
	
	$retstr=@implode(" ",$words);
	
	return $retstr."... ";
}


function easyfeeder($configs)
{
	//go thru the feeds array
	$content=file_get_contents($configs[feed]);
		
	$items=explode("<item>",$content);
	array_shift($items); //strip the general feed description
	
	$retstr="";
	
	foreach($items as $cnt=>$item)
	{
		if($configs[maxitems]>0 and $cnt+1>$configs[maxitems]) break;
		
		//extract tags
		$title=cut("<title>","</title>",$item);
		$link=cut("<link>","</link>",$item);
		if(strstr($item,"<![CDATA["))
		{
			$description=cut("<description>","</description>",$item);
			$description=cut("<![CDATA[","]]",$description);
		}
		else
		{
			$description=cut("<description>","</description>",$item);
		}
		$language=cut("<language>","</language>",$item);
		$copyright=cut("<copyright>","</copyright>",$item);
		$managingEditor=cut("<managingEditor>","</managingEditor>",$item);
		$webMaster=cut("<webMaster>","</webMaster>",$item);
		$pubDate=cut("<pubDate>","</pubDate>",$item);
		$lastBuildDate=cut("<lastBuildDate>","</lastBuildDate>",$item);
		$category=cut("<category>","</category>",$item);
		
		//now replace tags
		$tpl=file_get_contents($configs[template]);
		
		$tpl=str_replace("{title}",$title,$tpl);		
		$tpl=str_replace("{link}",$link,$tpl);
		$tpl=str_replace("{description}",$description,$tpl);
		$tpl=str_replace("{language}",$language,$tpl);
		$tpl=str_replace("{copyright}",$copyright,$tpl);
		$tpl=str_replace("{managingEditor}",$managingEditor,$tpl);
		$tpl=str_replace("{webMaster}",$webMaster,$tpl);
		$tpl=str_replace("{pubDate}",$pubDate,$tpl);
		$tpl=str_replace("{lastBuildDate}",$lastBuildDate,$tpl);
		$tpl=str_replace("{category}",$category,$tpl);
			
		$retstr.=$tpl;		
	}
	
	return $retstr;
}
?>



Na strani kličem tako:
<?php
error_reporting(E_ALL&(~E_NOTICE));
$configs=array();
$configs[feed]="http://www.rtvslo.si/feeds/08.xml";
$configs[template]="template.html";
$configs[maxitems]="5";
require_once("easyfeeder.php");
?>

<html>
<head><title>Your sample RSS page</title>

</head>

<body>

<table align=center width=220>
<tr><td>
<p>
  <?=easyfeeder($configs)?>
</p>
</td>
</tr></table>
</body>



Ali ima mogoče kdo kakšno idejo? Skripto je sicer mogoče dobiti na tej strani:
klik

Ziga Dolhar ::

$configs[feed]="http://www.rtvslo.si/feeds/08.xml";
$configs[template]="template.html";
$configs[maxitems]="5";


Glede na to, da "feed", "template" in "maxitems" očitno niso konstante, predlagam, da jih vržeš v narekovaje. Torej,

$configs['feed']= ...

In tako naprej za vse tri omenjene težave.
https://dolhar.si/

Bela01 ::

Hvala!

V čem je pa fora, da če dam v neko stran, ne morejo biti to konstante? Če pa kličem z prazne strani pa deluje. Meni se to zdi enako :/

Ziga Dolhar ::

Well, na vrhu skripte izklopis prikaz NOTICE-ov :-). Vidi error_reporting cist na vrhu.

S tem zgolj zakrijes slabo pisano kodo.
https://dolhar.si/

Bela01 ::

Sem jih dala v komentar. Vendar to ni rešitev :)

Ziga Dolhar ::

Lejjo :).

Rešitev, kot sem ti povedal, je, da izraze feed, template in maxitems znotraj associativnega arraya - DAŠ V NAREKOVAJE. Madona!

$configs['feed']="http://www.rtvslo.si/feeds/08.xml";

$configs['template']="template.html";

$configs['maxitems']="5";


Ali pa, če bi res rada uporabljala konstante - jih moraš definirati. Glej funkcijo define().
https://dolhar.si/

Bela01 ::

Nisva se razumela. Zadeva že deluje ;). Sem popravla one narekovaje.

Vendar mi je hecno zakaj more bit tak oz. me zanima zakaj ne morejo bit kot konstanta? Namreč če kličem to v eni prazni strani, pa ni nobene napake. Informativno me zanima - pač za drugič ;)

Ziga Dolhar ::

Zato ni napake, ker imaš po defaultu verjetno izklopljen prikaz "NOTICE" dogodkov (napak). Če boš tudi tja na vrh dala error_reporting(E_ALL);, se bodo tudi tam prikazale.

Če želiš uporabit kot "konstante", jih moraš seveda definirati kot konstante. Torej, še preden so prvič uporabljene, mora biti oznanjeno define('feed', 'krnekifeed');.
https://dolhar.si/

Bela01 ::

Ok :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[PHP] Nedelujoči mail()

Oddelek: Programiranje
51508 (1378) Miko55
»

Prenos WP bloga k drugem gostitelju, ni možna več prijava

Oddelek: Izdelava spletišč
181817 (1598) marS
»

PHP & apache - nejasen problem

Oddelek: Pomoč in nasveti
141390 (1238) Dahakka
»

Povezava na bazo iz drugega strežnika

Oddelek: Izdelava spletišč
81015 (790) Tody
»

[PHP]: problem s pošiljanjem datotek na strežnik

Oddelek: Programiranje
11954 (827) Silvano

Več podobnih tem