Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    HELP classe per creare RSS

    Ciao, sto usando la classe descritta >>qui per creare un feed rss a partire da un database. Ecco la prima parte del post col codice

    Codice PHP:
    <?php
    class MakeRSS{
      var 
    $Articles = array();

      
    // Channel info
      
    var $title '';
      var 
    $link '';
      var 
    $description '';
      var 
    $optional = array();
      var 
    $image = array('url' => '''title' => '''link' => '''description' => '''w' => 0'h' => 0);

      function 
    MakeRSS($title$link$description$optional ''){
        
    $this->title $title;
        
    $this->link $link;
        
    $this->description $description;

        if( 
    is_array($optional) and count($optional) ){
          
    $this->optional $optional;
        }
      }
      
      function 
    AddOptional($key$value){
        
    $this->optional[$key] = $value;
      }

      function 
    AddImage($title$url$link$description ''){
        
    $this->image['title'] = $title;
        
    $this->image['url'] = $url;
        
    $this->image['link'] = $link;
        
    $this->image['description'] = $description;

        if( 
    $tmp = @getimagesize($url) ){
          
    $this->image['w'] = ($tmp[0] > 144) ? 144 $tmp[0];
          
    $this->image['h'] = ($tmp[1] > 400) ? 400 $tmp[1];
        }
      }
      
      function 
    AddArticle($title$link$description$author$optional ''){
        
    $i array_push($this->Articles, array('title' => $title'link' => $link'description' => $description'author' => $author));

        if( 
    is_array($optional) and count($optional) ){
          --
    $i;
          while( list(
    $k$v) = each($optional) ){
             
    $this->Articles[$i][$k] = $v;
          }
        }
      }

      function 
    Output($save false$path ''){
        
    $out '<?xml version="1.0"?>' "\n" .
           
    '<rss version="2.0">' "\n" .
           
    '<channel>' "\n";
          
        
    $out .= "<title>$this->title</title>\n" .
            
    "<link>$this->link</link>\n" .
            
    "<description>$this->description</description>\n";
        
        
    //Channel optionals
        
    if( is_array($this->optional) and count($this->optional) ){
          while( list(
    $k$v) = each($this->optional) ){
            
    $out .= "<$k>$v</$k>\n";
          }
        }
        
    //Image
      
    if( $this->image['title'] and $this->image['url'] and $this->image['link'] ){
       
    $out .= "<image>\n" .
         
    "<title>" $this->image['title'] . "</title>\n" .
         
    "<url>" $this->image['url'] . "</url>\n" .
         
    "<link>" $this->image['link'] . "</link>\n";

       if( 
    $this->image['description'] ){
        
    $out .= "<description>" $this->image['description'] . "</description>\n";
       }

       if( 
    $this->image['w'] and $this->image['h'] ){
        
    $out .= "<width>" $this->image['w'] . "</width>\n" .
          
    "<height>" $this->image['h'] . "</height>\n";
       }
       
    $out .= "</image>\n";
      }

        
    //Articles
        
    for( $i 0$c count($this->Articles); $i $c$i++ ){
           
    $out .= "<item>\n" .
               
    "<title>" $this->Articles[$i]['title'] . "</title>\n" .
               
    "<link>" $this->Articles[$i]['link'] . "</link>\n" .
               
    "<description>" $this->Articles[$i]['description'] . "</description>\n" .
               
    "<author>" $this->Articles[$i]['author'] . "</author>\n";

           if( 
    count($this->Articles[$i]) > ){
             while( list(
    $k$v) = each($optional) ){
               if( !
    in_array($k, array('title''link''description''author')) ){
                 
    $out .= "<$k>$v</$k>\n";
               }
             }
           }


           
    $out .= "</item>\n";
        }

        
    $out .= "</channel>\n</rss>";


        
    // True output
        
    if( !$save or !$path ){
          
    header("Content-type: application/xml");
          echo 
    $out;
          return 
    true;
        }
        else{
          
    $fh fopen($path'w');
          if( 
    $fh ){
            
    fwrite($fh$out);
            
    fclose($fh);        
            
            return 
    true;
          }
          return 
    false;
        }
      }
    }
    ?>

  2. #2

    Parte 2 / il problema

    la funzione AddOptional() non funziona:
    $r->AddOptional($chiave, $valore);

    l'ho implementata nel codice che vado a postarvi:

    Codice PHP:
        ## Variabili necessarie per il feed RSS

                
    $author 'Maurizio';
                include(
    'classe.php'); $r = new MakeRSS('Guarda Qua''http://www.guardaqua.it''Sommario di tutti gli argomenti trattati');

        
    ## Estraggo le ultime 5 news dal DB

    $query=mysql_connect($dbhost$dbuser$dbpass);
    if (
    $query==FALSE
    die(
    "Errore durante la connessione a MYSQL ".mysql_error());
        
    mysql_select_db($dbname ,$query);
        
    $query2 "SELECT * FROM cn_news ORDER BY date DESC LIMIT 5"
        
    $risultato=mysql_query($query2,$query); 


        
    ## Replace XML undefined entities    
    function xmlentities $string ){return str_replace ( array ( '&''"'"’"'<''>' ), array ( '&amp;' '&quot;''&apos;' '&lt;' '&gt;' ), $string );}

        
    ## Scrivi il risultato della query nel file RSS.XML

            
    while ($dati=mysql_fetch_array($risultato)) { 
    $r->AddOptional($category$dati[cat]);

    $dati[content] = xmlentities($dati[content]);
    $permalink 'http://www.guardaqua.it/primapagina.php?a='.$dati[id];
    $r->AddOptional($data$dati[cat]);
            
    $r->AddArticle($dati[subject], $permalink$dati[content], $author$category);
            
    $r->Output(true'rss.xml');
            } 
    Ovviamente l'array $dati[cat] è popolato... ma la classe non me lo scrive nell'xml!

    il risultato si può osservare qui:
    www.guardaqua.it/rss/rss.xml

    non appare alcuna <category>!

    Help me please!!

  3. #3

    uppino

    uppete... noto con piacere che non sono l'unico a cimentarmi con questa classe, qui sul forum

    oggi almeno altri 2

  4. #4

    Re: uppino

    Originariamente inviato da Petro_suse91
    uppete... noto con piacere che non sono l'unico a cimentarmi con questa classe, qui sul forum

    oggi almeno altri 2
    A quanto pare ora funziona...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5

    Re: Re: uppino

    Originariamente inviato da piero.mac
    A quanto pare ora funziona...

    Bè, non proprio... mi crea il feed ma
    non appare alcuna <category>!

  6. #6

    Re: Re: Re: uppino

    Originariamente inviato da Petro_suse91
    Bè, non proprio... mi crea il feed ma
    non appare alcuna <category>!
    Non son un esperto di RSS, ma dove e' che dai un valore a $category e $data ???

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Anche a me non funziona....

    Per favore puoi postare un esempio della seconda parte di codice funzionante ?

  8. #8

    Re: Re: Re: Re: uppino

    Originariamente inviato da piero.mac
    Non son un esperto di RSS, ma dove e' che dai un valore a $category e $data ???
    $dati[cat]
    è una parte di array coi dati estratti dal database.

    $category, per come ho capito io, dovrebbe essere la chiave che AddOptional() crea assegnandole il valore $dati[cat]

    while ($dati=mysql_fetch_array($risultato)) {
    $r->AddOptional($category, $dati[cat]);

    ma ciò non succede! Dov'è che sbaglio?

    @fonzyyyyyyy: non ho capito, di quale parte di codice hai bisogno? quello che ho postato a inizio topic funziona, tranne AddOptional()

  9. #9
    Avevo bisogno proprio di addoptional...che non funziona...

    Grazie lo stesso...resto in attesa di qualch'uno che ci dia la soluzione...di addoptional...

    Io ho visto che se assegni un valore alla variabile $category non ti da più errore...però non scrive niente su xml...boh...

  10. #10

    Re: Re: Re: Re: Re: uppino

    Originariamente inviato da Petro_suse91
    $dati[cat]
    è una parte di array coi dati estratti dal database.

    $category, per come ho capito io, dovrebbe essere la chiave che AddOptional() crea assegnandole il valore $dati[cat]

    while ($dati=mysql_fetch_array($risultato)) {
    $r->AddOptional($category, $dati[cat]);

    Mi pare debba essere la chiave che AddOptional() aspetta di ricevere...
    codice:
     function AddOptional($key, $value){ 
        $this->optional[$key] = $value; 
      }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.