Torna indietro   AlterVista | Spazio web gratis, hosting free php mysql > Supporto > PHP, MySql e file database

Rispondi
 
LinkBack Strumenti discussione Modalità visualizzazione
  #1 (permalink)  
Vecchio 06-11-2009, 00.09.27
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Wink [PHP] SimpleXMLElement ... più file XML

Ciao a tutti, sapete dirmi un modo per inserire più di un file .xml (per rss in questo caso) con SimpleXMLElement?
Io di solito uso questa sintassi:
Codice PHP:
<?
$url 
"http://www.sito.com/rss/"# di solito sono tutti con .htaccess o altro (vedi wp)
$rss = new SimpleXMLElement($url,NULL,TRUE);
echo 
"<i>".$rss->channel->title."</i>;

foreach($rss->channel->item as $item) {
    echo $item->title."
<hr/>";
}
?>
Ora, io invece vorrei che fossero più di uno di $url...ma come faccio a far gestire più file xml a SimpleXMLElement?? Conoscete qualche metodo? Ho pensato agli array, ma non saprei come metterli...grazie mille. Ciao Davide! ^^"
__________________
Leone webdesign
Rispondi citando
  #2 (permalink)  
Vecchio 06-11-2009, 00.19.33
L'avatar di biccheddu
AlterGuru
 
Data registrazione: 18-01-2009
Residenza: Sant'Antioco
Messaggi: 1,974
Invia un messaggio via MSN a biccheddu Invia un messaggio via Yahoo a biccheddu Manda un messaggio tramite Skype™ a biccheddu
Predefinito

Credo basti: http://codingforums.com/showthread.php?t=87283
__________________
· Federico Biccheddu
Rispondi citando
  #3 (permalink)  
Vecchio 06-11-2009, 14.41.02
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Sisi, avevo visto quel post...però forse non è quello che cerco io. Mi spiego meglio.
Io vorrei concatenare 3 file xml (pippo,minnie,pluto). Ora io richiamando ad esempio:
Codice PHP:
echo $item->date."<hr />"
Dovrei visualizzare tutte le date contenute e ordinate in pippo,minnie,pluto.
Spero di essermi fatto capire! XD
In alternativa...come potrei adattare quella funzione sopra citata?? ^^"
Grazie mille!! <3
__________________
Leone webdesign
Rispondi citando
  #4 (permalink)  
Vecchio 06-11-2009, 14.50.27
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

Ti crei un array dei file e con un loop assegni la variabile.
Ad esempio:
Codice PHP:
$files = array("file.xml""file2.xml""file3.xml");
$lista null// elementi concatenati

foreach($files as $file) {
    
$rss = new SimpleXMLElement($file,NULL,TRUE);

    foreach(
$rss->channel->item as $item) {
        
$lista .= $item->title."<hr/>";
    }
}

echo 
$lista
Saluti!
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #5 (permalink)  
Vecchio 06-11-2009, 16.08.43
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Ok, ora funziona. Ma come faccio ad ordinare i feed per data? Ho provato con sort($item->pubDate) ma non funziona...soluzioni?? Grazie mille!! <3
__________________
Leone webdesign
Rispondi citando
  #6 (permalink)  
Vecchio 06-11-2009, 16.56.56
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

In che formato è la data?
Comunque devi crearti un array che abbia come indice la data poi se possibile con ksort ordinare l'array.

Saluti!
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #7 (permalink)  
Vecchio 06-11-2009, 18.21.26
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Per la data uso questo:
Codice PHP:
date("d/m/Y - H.i.s",strtotime($item->pubDate)) 
Grazie mille!! XD
__________________
Leone webdesign
Rispondi citando
  #8 (permalink)  
Vecchio 06-11-2009, 18.50.18
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

Codice PHP:
$files = array("file.xml""file2.xml""file3.xml");
$feeds = array();
$lista null;

foreach(
$files as $file) {
    
$rss = new SimpleXMLElement($file,NULL,TRUE);

    foreach(
$rss->channel->item as $item) {
        
$data = (int) date("U"strtotime($item->pubDate));  
        
$feeds[$data] = $item;
    }
}

ksort($feeds);

$feeds array_reverse($feeds);

foreach(
$feeds as $item) {
    
$lista .= $item->title "<hr />";

Non so se funziona. Ora non ho tempo per provare.
Saluti!
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #9 (permalink)  
Vecchio 08-11-2009, 22.12.29
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Grazie mille!! <3 ...e se io vorrei limitare i feeds fino ad una certa data come dovrei fare? XD
Grazie in anticipo
__________________
Leone webdesign
Rispondi citando
  #10 (permalink)  
Vecchio 08-11-2009, 22.27.57
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

Codice PHP:
$files = array("file.xml""file2.xml""file3.xml");
$feeds = array();
$lista null;

foreach(
$files as $file) {
    
$rss = new SimpleXMLElement($file,NULL,TRUE);

    foreach(
$rss->channel->item as $item) {
        
$data = (int) date("U"strtotime($item->pubDate));  
        
$feeds[$data] = $item;
    }
}

ksort($feeds);

$feeds array_reverse($feeds);

foreach(
$feeds as $time => $item) {
    
$data date("dmy"intval($time));
    if(
$data "081109") {
        
$lista .= $item->title "<hr />";
    }

In pratica ottengo il giorno mese e anno e faccio il controllo.

Saluti!
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #11 (permalink)  
Vecchio 08-11-2009, 22.50.43
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Ho provato con il tuo codice ma non funziona! =(
Mi mostra sempre tutti i feeds...
Codice PHP:
        if((date("dmy"intval($time))) < "081109") { 
Comunque, io vorrei che mostrasse solo i feeds degli ultimi 3 giorni ad esempio! XD
__________________
Leone webdesign
Rispondi citando
  #12 (permalink)  
Vecchio 08-11-2009, 23.01.37
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

Allora bisogna cambiare metodo.
Prova con:
Codice PHP:
if($time < (time() - (86400 3))) { 
Non sono sicuro che funzioni, non sono esperto con le date !
Saluti!
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #13 (permalink)  
Vecchio 08-11-2009, 23.25.07
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 340
Predefinito

Citazione:
Originalmente inviato da mycarlo Visualizza messaggio
Allora bisogna cambiare metodo.
Prova con:
Codice PHP:
if($time < (time() - (86400 3))) { 
Non sono sicuro che funzioni, non sono esperto con le date !
Saluti!
Non dovrebbe essere maggiore la condizione?
Cioè:
Codice PHP:
if($time > (time() - 86400 3)) 
Rispondi citando
  #14 (permalink)  
Vecchio 08-11-2009, 23.37.08
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Mmm...non funziona ancora perché si dovrebbe fermare a 5 novembre 2009 invece visualizza fino al 18 ottobre 2009! XD
__________________
Leone webdesign
Rispondi citando
  #15 (permalink)  
Vecchio 08-11-2009, 23.46.13
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 340
Predefinito

Ma $time come è formato?
Tu devi fare una cosa del genere:
Codice PHP:
$time mktime($h$min$sec$m$d$y);
if(
$time > (time() - 86400 3)){

Rispondi citando
  #16 (permalink)  
Vecchio 09-11-2009, 13.30.26
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

Ma $time è già il timestamp !

Saluti!
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #17 (permalink)  
Vecchio 09-11-2009, 15.05.57
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Allora, per chiarezza $time mi mostra questo:
Citazione:
01234567891011121314151617181920212223242526272829 30313233343536373839404142434445464748495051525354
Invece $data mostra questo (esempio) che ad ogni singolo feeds cambia la data (non <br /><i>...</i>):
Citazione:
<br /><i>09/11/2009 - 12.15.33</i>
Come dovrei procedere...magari fare qualche "trasformazione" di qualche variabile?
Grazie mille!! xD
__________________
Leone webdesign
Rispondi citando
  #18 (permalink)  
Vecchio 09-11-2009, 15.15.16
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

$time ti mostra quello perchè non lo separi (almeno uno spazio) comunque è corretto.

Sei sicuro che così non ti funziona:

Codice PHP:
$files = array("file.xml""file2.xml""file3.xml");
$feeds = array();
$lista null;

foreach(
$files as $file) {
    
$rss = new SimpleXMLElement($file,NULL,TRUE);

    foreach(
$rss->channel->item as $item) {
        
$data = (int) date("U"strtotime($item->pubDate));  
        
$feeds[$data] = $item;
    }
}

ksort($feeds);

$feeds array_reverse($feeds);

foreach(
$feeds as $time => $item) {
    
$data date("dmy"intval($time));
    if(
$time > (time() - 86400 3)){
        
$lista .= $item->title "<hr />";
    }

??
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #19 (permalink)  
Vecchio 09-11-2009, 16.13.33
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Assolutamente no, mostra pagina bianca! XD
Poi scusami, è obbligatorio assegnare date("dmy", intval($time)) a $data?
Perché io già l'ho usata, e nel codice da te postato nell'if non è presente quindi mi sembra inutile! XD

Edit: con il tuo codice, assegnando a quel valore $data mi dice questo:
Citazione:
Warning: SimpleXMLElement::__construct(http://feed.sito.com) [simplexmlelement.--construct]: failed to open stream: HTTP request failed! in home.php on line 65
Codice PHP:
        $rss = new SimpleXMLElement($file,NULL,TRUE); # linea 65 
__________________
Leone webdesign

Ultima modifica di sIM : 09-11-2009 alle ore 16.15.59
Rispondi citando
  #20 (permalink)  
Vecchio 09-11-2009, 16.22.33
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

Non è obbligatorio, ho soltanto preso lo script di sopra, ho dimenticato di toglierla piccola svista , prova a rimuoverla.

Saluti!
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #21 (permalink)  
Vecchio 09-11-2009, 19.32.59
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Ehm...non ho capito...cosa devo fare? Io nello script noto che alla 65 c'è $file che invece è $files
__________________
Leone webdesign
Rispondi citando
  #22 (permalink)  
Vecchio 09-11-2009, 19.43.33
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 340
Predefinito

Ma a SimpleXMLElement passi file che risiedono nel tuo server o passi URL?
Rispondi citando
  #23 (permalink)  
Vecchio 09-11-2009, 20.12.22
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Passo degli url, anche perché sono feeds! ^^"
Comunque, se volevi sapere se venivano prelevati...vengono prelevati correttamente!! <3
Grazie mille! **"
__________________
Leone webdesign
Rispondi citando
  #24 (permalink)  
Vecchio 09-11-2009, 20.20.35
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 340
Predefinito

Ma non puoi passare URL.
Leggi qui: Problema con simpleXML.
Rispondi citando
  #25 (permalink)  
Vecchio 09-11-2009, 20.57.11
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Ma ha sempre funzionato vedi....tornando al problema della data...come risolvo? XD
I feeds sono sempre tutti e mi si visualizza pagina bianca! >___<
Codice PHP:
$siti[] = "http://feeds.feedburner.com/nomes?format=xml";
$siti[] = "http://url2.com/wordpress/feeds/2.0/categoria/";
$siti[] = "http://url3.com/feeds/categoria.xml";

$lista ""// elementi concatenati
$feeds = array();

foreach(
$siti as $file) {
        
$rss = new SimpleXMLElement($file,NULL,TRUE);
        
        foreach(
$rss->channel->item as $item) {            
            
$data = (int) date("U"strtotime($item->pubDate));  
            
$feeds[$data] = $item;
        }
    }

ksort($feeds);
$feeds array_reverse($feeds);

foreach(
$feeds as $time => $item) {
        
$datas date("dmy"intval($time));
        
$titolo utf8_decode($item->title);
        
$link $item->link;
        
$testo $item->description;

        
$data "<br /><i>".date("d/m/Y - H.i.s",strtotime($item->pubDate))."</i>";
            
            
        
#echo $time;
        
if($time > (time() - 86400 3)){

            
$lista .= $item->title."<br />";
        }
    }
echo 
$lista
__________________
Leone webdesign
Rispondi citando
  #26 (permalink)  
Vecchio 10-11-2009, 13.09.21
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 340
Predefinito

Citazione:
Originalmente inviato da sIM
$feeds = array_reverse($feeds);
Devi aggiungere true:
Codice PHP:
$feeds array_reverse($feedstrue); 
Rispondi citando
  #27 (permalink)  
Vecchio 10-11-2009, 15.29.06
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Grazie mille ora funziona... ora sto usando le regex per togliere le immagini sia con i linsk che senza links. Cioè se c'è <img con <a o senza deve essere tolto da PHP! ^^"
Ma non funziona! =(
Codice PHP:
$testo ereg_replace("/\<a(.+)\>\<img(.+)\>\<\/a\>\/","",$testo); 
Grazie mille....
__________________
Leone webdesign
Rispondi citando
  #28 (permalink)  
Vecchio 10-11-2009, 15.39.31
L'avatar di andreafallico
Utente attivo
 
Data registrazione: 02-06-2009
Messaggi: 340
Predefinito

Utilizza strip_tags() così:
Codice PHP:
$testo strip_tags($testo); 
Rispondi citando
  #29 (permalink)  
Vecchio 10-11-2009, 15.50.54
L'avatar di mycarlo
Utente
 
Data registrazione: 06-10-2009
Messaggi: 238
Invia un messaggio via MSN a mycarlo
Predefinito

Ma non devi usare ereg_replace hai usato la sintassi delle pcre quindi usa preg_replace.

Saluti!
__________________

To Live Is To Die
The easier the better
Non é vero che abbiamo poco tempo: la verità é che ne perdiamo molto. (Seneca)


Scarica SimpleXML News 0.3.5 | Prova SimpleXML News
Rispondi citando
  #30 (permalink)  
Vecchio 10-11-2009, 16.27.42
L'avatar di sIM
sIM sIM non è connesso
AlterGuru
 
Data registrazione: 02-07-2006
Residenza: Palermo (PA)
Messaggi: 1,748
Predefinito

Citazione:
No ending delimiter '/' found in home.php on line 85
Codice PHP:
            $testo preg_replace("/\<a(.+)\>\<img(.+)\>\<\/a\>\/","",$testo); 
Ecco la linea 85! ^^"
...riguardo al consiglio che mi hai dato andrea, non mi serve quella funzione anche perché voglio solo tolta l'immagine!! <3
__________________
Leone webdesign
Rispondi citando
Rispondi

Strumenti discussione
Modalità visualizzazione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Disattivato



Tutti gli orari sono GMT +1. Adesso sono le 05.16.25.