Gå til innhold

Hente artikler fra MySQL database til RSS


Anbefalte innlegg

Videoannonse
Annonse

<?xml version="1.0" ?> 
<rss version="2.0">

<channel>

<? 
//Lager en klasse 
class db 
{ 
//Noen variabler 
var $hostname = "SDFSDF"; 
var $username = "SFSDF"; 
var $password = "SDFSDF"; 
var $userstable = "SDFSDF"; 
var $dbName = "SDFSDF"; 
var $result; 

function koble_til() 
{ 
//Kobler til databasen vår 
mysql_connect($this->hostname,$this->username,$this->password) 
   || die(mysql_error()); 
@mysql_select_db($this->dbName) 
   || die("Unable to select database"); 
} 

function skrivut() 
{ 
//Skriver ut alt i tabellen 
$query = "SELECT * FROM $this->userstable"; 
$this->result = mysql_query($query); 
$number = mysql_num_rows($this->result); 
$i = 0; 
if ($number == 0) : 
elseif ($number > 0) : 
      while ($i < $number): 
                     $tittel = mysql_result($this->result,$i,"tittel");
         $beskrivelse = mysql_result($this->result,$i,"mellomtekst");
         
            echo "<item>
<title>$tittel</title>
<description>$beskrivelse</description>
<link>http://google.no</link>
</item>";
            $i++; 
      endwhile; 
endif; 
} 

function steng_db() 
{ 
mysql_free_result($this->result); 
//Lukker koblingen til databasen 
mysql_close(); 
} 
} //Slutt på klassen vår 

//Vi lager et nytt objekt 
$obj =& new db; 
//Så kaller vi opp funksjonene våre 
$obj->koble_til(); 
$obj->skrivut(); 
$obj->steng_db(); 
?>

</channel>

</rss>

 

Funker dårlig denne jeg laga, trenger litt hjelp. :dontgetit:

PHP utskrift er Sindre Mathisen sin.

Endret av Quattro7
Lenke til kommentar
Ingen som vet?

8069830[/snapback]

Jeg vet ikke helt hva som ikke fungerte i denne, men denne her fungerer iallfall hos meg:

<?
//Vi lager et nytt objekt
$obj = new db();
//Så kaller vi opp funksjonene våre
$obj->koble_til();
$obj->skrivut();
$obj->steng_db();


//Lager en klasse
class db{
//Noen variabler
var $hostname = "localhost";
var $username = "sha015";
var $password = "Nandyoz9";
var $usertable = "museum_item";
var $dbName = "sha015";
var $result;

function koble_til(){
//Kobler til databasen vår
mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error());
@mysql_select_db($this->dbName)  || die("Unable to select database");
}

function query($query){
$data = array();
$this->result = mysql_query($query);
if(mysql_num_rows($this->result) != 0){
 while($d = mysql_fetch_object($this->result)){
 	$data[] = $d;
 }
 return $data;
}
return null;
}
function skrivut(){
$result = $this->query("select * from $this->usertable order by timestamp");
if (!is_null($result)){
 $now = date('d.m-Y@H:i:s', time());
 $rss = <<<RSS
 <rss version="2.0">
 	<channel>\n
 	<title>My Feed</title>\n
 	<description>My rss-feed generated by php</description>\n
 	<lastBuildDate>$now</lastBuildDate> 
 	<link>http://nibbler.no</link>\n
RSS;
     foreach($result as $r){
     	$date = date('d/m/Y@H:i:s', $r->timestamp);
       $rss .=<<<RSS
           	<item>
   	<title>$r->title</title>
   	<pubDate>$date</pubDate> 
   	<description>$r->text</description>
   	<link>http://bogus.uib.no/~sha015/museum/index.php?page=item&id=$r->item_id</link>
   </item>
RSS;
 }
 $rss .="</channel></rss>";
header('Content-type:text/xml');
print $rss;
}
}

function steng_db(){
mysql_free_result($this->result);
//Lukker koblingen til databasen
mysql_close();
}
} //Slutt på klassen vår
?>

 

Demo her: http://bogus.uib.no/~sha015/php/test28.php

Lenke til kommentar

<?
//Vi lager et nytt objekt
$obj = new db();
//Så kaller vi opp funksjonene våre
$obj->koble_til();
$obj->skrivut();
$obj->steng_db();


//Lager en klasse
class db{
//Noen variabler
var $hostname = "hei"; 
var $username = "hei"; 
var $password = "hei"; 
var $userstable = "hei"; 
var $dbName = "hei"; 
var $result;

function koble_til(){
//Kobler til databasen vår
mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error());
@mysql_select_db($this->dbName)  || die("Vi har problemer for øyeblikket. Prøv igjen senere.");
}

function query($query){
$data = array();
$this->result = mysql_query($query);
if(mysql_num_rows($this->result) != 0){
while($d = mysql_fetch_object($this->result)){
 $data[] = $d;
}
return $data;
}
return null;
}
function skrivut(){
$result = $this->query("select * from $this->usertable");
if (!is_null($result)){
$now = date('d.m-Y@H:i:s', time());
$rss = <<<RSS
<rss version="2.0">
 <channel>\n
 <title>google.no nyheter</title>\n
 <description>Nyheter fra Google</description>\n
 <lastBuildDate>$now</lastBuildDate> 
 <link>http://google.no</link>\n
RSS;
    foreach($result as $r){
     $date = date('d/m/Y@H:i:s', $r->timestamp);
      $rss .=<<<RSS
           <item>
   <title>$r->tittel</title>
   <pubDate>$date</pubDate> 
   <description>$r->fulltekst</description>
   <link>http://google.no</link>
  </item>
RSS;
}
$rss .="</channel></rss>";
header('Content-type:text/xml');
print $rss;
}
}

function steng_db(){
mysql_free_result($this->result);
//Lukker koblingen til databasen
mysql_close();
}
} //Slutt på klassen vår
?>

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in rss.php on line 29

 

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in rss.php on line 67

Lenke til kommentar
....

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in rss.php on line 29

 

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in rss.php on line 67

8070554[/snapback]

 

Prøv å legg til det her:

 

if(!$this->result)
echo mysql_error();

Lenke til kommentar
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

8070754[/snapback]

 

 

Hvis du ser i db-klassen din heter variabelen for tabellen $userstable, mens den i spørringen heter $this->usertable

Lenke til kommentar

<?
//Vi lager et nytt objekt
$obj = new db();
//Så kaller vi opp funksjonene våre
$obj->koble_til();
$obj->skrivut();
$obj->steng_db();


//Lager en klasse
class db{
//Noen variabler
var $hostname = "xxxx"; 
var $username = "xxx"; 
var $password = "xxx"; 
var $usertable = "xxxx"; 
var $dbName = "xxxxx"; 
var $result;

function koble_til(){
//Kobler til databasen vår
mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error());
@mysql_select_db($this->dbName)  || die("Unable to select database");
}

function query($query){
$data = array();
$this->result = mysql_query($query);
if(mysql_num_rows($this->result) == 0){
while($d = mysql_fetch_object($this->result)){
 $data[] = $d;
}
return $data;
}
return null;
}
function skrivut(){
$result = $this->query("select * from $this->usertable");
if(!$this->result)
echo mysql_error();
if (!is_null($result)){
$now = date('d.m-Y@H:i:s', time());
$rss = <<<RSS
<rss version="2.0">
 <channel>\n
 <title>google.no nyheter</title>\n
 <description>Nyheter fra google</description>\n
 <lastBuildDate>$now</lastBuildDate> 
 <link>http://google.no</link>\n
RSS;
    foreach($result as $r){
     $date = date('d/m/Y@H:i:s', $r->timestamp);
      $rss .=<<<RSS
           <item>
   <title>$r->tittel</title>
   <pubDate>$date</pubDate> 
   <description>$r->fulltekst</description>
   <link>http://google.no</link>
  </item>
RSS;
}
$rss .="</channel></rss>";
header('Content-type:text/xml');
print $rss;
}
}

function steng_db(){
mysql_free_result($this->result);
//Lukker koblingen til databasen
mysql_close();
}
} //Slutt på klassen vår
?>

 

Når jeg prøver å gå inn i rss.php da, er siden blank, har prøvd på flere servere, samme overalt.

Lenke til kommentar
Når jeg prøver å gå inn i rss.php da, er siden blank, har prøvd på flere servere, samme overalt.

8071516[/snapback]

 

 

..

 

if(!$this->result)

echo mysql_error();

 

Denne ville jeg flyttet til query-funksjonen

function query($query){
$data = array();
$this->result = mysql_query($query);
if(!$this->result)
die(mysql_error());
if(mysql_num_rows($this->result) == 0){
while($d = mysql_fetch_object($this->result)){
$data[] = $d;
}
return $data;
}
return null;
}

 

Og husk at det er stor forskjell på

if(mysql_num_rows($this->result) == 0, som du skriver i din versjon og

if(mysql_num_rows($this->result) !=0, som jeg skrev i min versjon

Endret av CruellaDeVille
Lenke til kommentar

Sånn ser den ut nå:

 

<?
//Vi lager et nytt objekt
$obj = new db();
//Så kaller vi opp funksjonene våre
$obj->koble_til();
$obj->skrivut();
$obj->steng_db();


//Lager en klasse
class db{
//Noen variabler
var $hostname = "sadasdasdasd"; 
var $username = "asdasdasd"; 
var $password = "asdasdasdasd"; 
var $usertable = "asdasdasd"; 
var $dbName = "adasdasdssdasd"; 
var $result;

function koble_til(){
//Kobler til databasen vår
mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error());
@mysql_select_db($this->dbName)  || die("Unable to select database");
}

function query($query){
$data = array();
$this->result = mysql_query($query);
if(!$this->result)
die(mysql_error());
if(mysql_num_rows($this->result) != 0){
while($d = mysql_fetch_object($this->result)){
 $data[] = $d;
}
return $data;
}
return null;
}
function skrivut(){
$result = $this->query("select * from $this->usertable WHERE status=\"publisert\"");
if (!is_null($result)){
$now = date('d.m-Y@H:i:s', time());
$rss = <<<RSS
<rss version="2.0">
 <channel>\n
 <title>google.no nyheter</title>\n

 <description>Nyheter fra google</description>\n
 <lastBuildDate>$now</lastBuildDate> 
 <link>http://google.no</link>\n
RSS;
    foreach($result as $r){
     $date = date('d/m/Y@H:i:s', $r->timestamp);
      $rss .=<<<RSS
           <item>
   <title>$r->tittel</title>
   <pubDate>$date</pubDate> 
   <description>$r->fulltekst</description>
   <link>http://google.no/?side=nyhetsviser&id=$r->id</link>
  </item>
RSS;
}
$rss .="</channel></rss>";
header('Content-type:text/xml charset=iso-8859-1');
print $rss;
}
}

function steng_db(){
mysql_free_result($this->result);
//Lukker koblingen til databasen
mysql_close();
}
} //Slutt på klassen vår
?>

 

Jeg får XML lesefeil på tegn og æøå.

Jeg har satt "charset=iso-8859-1", men allikavel går det ikke. :hmm:

Endret av Quattro7
Lenke til kommentar
Jeg får XML lesefeil på tegn og æøå.

Jeg har satt "charset=iso-8859-1", men allikavel går det ikke.  :hmm:

8072649[/snapback]

 

 

Jeg utvidet headeren slik:

 
header('Content-type="text/xml"');
header('xml version="1.1" encoding="iso-8859-1"');

 

og da funker iallfall æ, ø og å hos meg

 

Kildekode kan sees her: http://bogus.uib.no/~sha015/php/test30.php

 

(jeg har delt rss-feederen i en rss_feed og en db-klasse, noe jeg syns er mer objektorientert enn å ha alt i en klasse).

Lenke til kommentar
<?

//Vi lager et nytt objekt

$obj = new rss_feed();

//Så kaller vi opp funksjonene våre

$obj->print_rss();

 

class db{

    function db(){

        $this->hostname = "66.249.93.104";

        $this->username = "brukernavn";

        $this->password = "passord";

        $this->usertable = "artikler";

        $this->dbName = "database";

    }

 

    function connect(){

        //Kobler til databasen vår

        mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error());

        mysql_select_db($this->dbName)  || die("Unable to select database: ". mysql_error());

    }

    function query($query){

        $data = array();

        $result = mysql_query($query);        

        if(mysql_num_rows($result) != 0){

            while($d = mysql_fetch_object($result)){

                $data[] = $d;

            }

            return $data;

        }        

        return null;

    }

    function close(){

        //Lukker koblingen til databasen

        mysql_close();

    }

}

 

//Lager en klasse

class rss_feed{

var $db;

var $usertable =  "artikler";

 

    function rss_feed(){

        $this->db = new db();

        $this->db->connect();

    }

 

    function print_rss(){

        $result = $this->db->query("select * from $this->usertable WHERE status=\"publisert\"");

        if (!is_null($result)){

            $now = date('d.m-Y@H:i:s', time());

            $rss = <<<RSS

            <rss version="2.0">

                <channel>\n

                <title>google.no</title>\n

                <description>Siste nytt fra google.no</description>\n

                <lastBuildDate>$now</lastBuildDate> 

                <link>http://google.no</link>\n

RSS;

             foreach($result as $r){

                 $date = date('d/m/Y@H:i:s', $r->timestamp);

                  $rss .=<<<RSS

                    <item>

                        <title>$r->tittel</title>

                        <pubDate>$date</pubDate> 

                        <description>$r->fulltekst</description>

                        <link>http://google.no</link>

                    </item>

RSS;

            }

            $rss .="</channel></rss>";

            header('Content-type="text/xml"');

            header('xml version="1.1" encoding="iso-8859-1"');

            print $rss;

        }

        $this->close_db();

    }

    function close_db(){

        $this->db->close();

    }

}

//Slutt på klassen vår

?>

 

Parse error: parse error, unexpected T_SL in rss.php on line 52

 

Har markert linje 52 med blått i koden over.

Endret av Quattro7
Lenke til kommentar
<?

[..]

 

    function print_rss(){

        $result = $this->db->query("select * from $this->usertable WHERE status=\"publisert\"");

        if (!is_null($result)){

            $now = date('d.m-Y@H:i:s', time());

            $rss = <<<RSS

            <rss version="2.0">

                <channel>\n

                <title>google.no</title>\n

                <description>Siste nytt fra google.no</description>\n

                <lastBuildDate>$now</lastBuildDate> 

                <link>http://google.no</link>\n

RSS;

            foreach($result as $r){

                $date = date('d/m/Y@H:i:s', $r->timestamp);

                  $rss .=<<<RSS

                    <item>

                        <title>$r->tittel</title>

                        <pubDate>$date</pubDate> 

                        <description>$r->fulltekst</description>

                        <link>http://google.no</link>

                    </item>

RSS;

            }

            $rss .="</channel></rss>";

            header('Content-type="text/xml"');

            header('xml version="1.1" encoding="iso-8859-1"');

            print $rss;

        }

        $this->close_db();

    }

  [...]

}

//Slutt på klassen vår

?>

 

Parse error: parse error, unexpected T_SL in rss.php on line 52

 

Har markert linje 52 med blått i koden over.

8073028[/snapback]

 

Jeg syns dette var merkelig. Jeg kopierte koden din over i zend og zend pleier å klage ganske kraftig hvis noe er galt, men gjorde altså ikke det her.

 

Men om heredoc (<<<RSS)

Etter åpnings-heredoc må det aldri være andre tegn en new line (enter/\n) og før slutt-heredoc må det aldri være whitespace og etter aldri annet enn new line.

 

Mer om heredoc her: http://no.php.net/manual/en/language.types....syntax.heredoc

 

Så siden koden din fungerer hos meg kan jeg ikke hjelpe deg.

:ermm:

Lenke til kommentar
Koden kan ikke formes på en annen måte da, som gjør at det funker hos meg?

8076036[/snapback]

Du kan bytte ut hele heredocen med en helt vanlig streng.

 

function print_rss(){
 $result = $this->db->query("select * from $this->usertable order by timestamp");
 if (!is_null($result)){
 	$now = date('d.m-Y@H:i:s', time());
 	$rss = 
 	"<rss version=\"2.0\">
   <channel>\n
   <title>My Feed</title>\n
   <description>My rss-feed generated by php</description>\n
   <lastBuildDate>$now</lastBuildDate> 
   <link>http://nibbler.no</link>\n";
     	foreach($result as $r){
       $date = date('d/m/Y@H:i:s', $r->timestamp);
       	$rss .="
             <item>
     <title>$r->title</title>
     <pubDate>$date</pubDate> 
     <description>$r->text</description>
     <link>http://bogus.uib.no/~sha015/museum/index.php?page=item&item_id=$r->item_id</link>
   	</item>";
 	}
 	$rss .="</channel></rss>";
 	header('Content-type="text/xml"');
 	header('xml version="1.1" encoding="iso-8859-1"');
 	print $rss;
 }
 $this->close_db();
}

Lenke til kommentar

Det var mellomrom etter heredocen(?) eller hva det het.

 

<? 
//Vi lager et nytt objekt 
$obj = new rss_feed(); 
//Så kaller vi opp funksjonene våre 
$obj->print_rss(); 

class db{ 
   function db(){ 
       $this->hostname = "asdasdasd"; 
       $this->username = "asdasd"; 
       $this->password = "sdasd"; 
       $this->usertable = "artikler"; 
       $this->dbName = "sadasd"; 
   } 

   function connect(){ 
       //Kobler til databasen vår 
       mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error()); 
       mysql_select_db($this->dbName)  || die("Unable to select database: ". mysql_error()); 
   } 
   function query($query){ 
       $data = array(); 
       $result = mysql_query($query);         
       if(mysql_num_rows($result) != 0){ 
           while($d = mysql_fetch_object($result)){ 
               $data[] = $d; 
           } 
           return $data; 
       }         
       return null; 
   } 
   function close(){ 
       //Lukker koblingen til databasen 
       mysql_close(); 
   } 
} 

//Lager en klasse 
class rss_feed{ 
var $db; 
var $usertable =  "artikler"; 

   function rss_feed(){ 
       $this->db = new db(); 
       $this->db->connect(); 
   } 

   function print_rss(){ 
       $result = $this->db->query("select * from $this->usertable WHERE status=\"publisert\""); 
       if (!is_null($result)){ 
           $now = date('d.m-Y@H:i:s', time()); 
           $rss = <<<RSS
           <rss version="2.0"> 
               <channel>\n 
               <title>My Feed</title>\n 
               <description>My rss-feed generated by php</description>\n 
               <lastBuildDate>$now</lastBuildDate>  
               <link>http://nibbler.no</link>\n 
RSS;
            foreach($result as $r){ 
                $date = date('d/m/Y@H:i:s', $r->timestamp); 
                 $rss .=<<<RSS
                   <item> 
                       <title>$r->title</title> 
                       <pubDate>$date</pubDate>  
                       <description>$r->text</description> 
                       <link>http://bogus.uib.no/~sha015/museum/index.php?page=item&item_id=$r->item_id</link> 
                   </item> 
RSS;
           } 
           $rss .="</channel></rss>"; 
           header('Content-type="text/xml"'); 
           header('xml version="1.1" encoding="iso-8859-1"'); 
           print $rss; 
       } 
       $this->close_db(); 
   } 
   function close_db(){ 
       $this->db->close(); 
   } 
} 
//Slutt på klassen vår 
?>

 

blir nå:

 

My rss-feed generated by php 04.03-2007@18:18:21 http://nibbler.no 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id= 01/01/1970@01:00:00 http://bogus.uib.no/~sha015/museum/index.p...e=item&item_id=
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...