Visualizzazione risultati 1 fino 12 di 12

Discussione: Problema PHP5 Xpath

  1. #1
    Guest

    Predefinito Problema PHP5 Xpath

    Ciao a tutti, sono nuovo del forum.

    Sto provando a mettere le previsioni meteo sul mio sito, lo script php che utilizzo è ultracollaudato (tanto che lo uso anche su un sito in produzione) però qui non riesco a farlo funzionare.

    Premetto che inizialmente ho riscontrato maggiori problemi perchè non sapevo che dovevo abilitare php5 per poterlo usare.

    Poco male, l' ho abilitato ed infatti sono pasato da un errore ad un' altro.

    Adesso l' errore che mi sta facendo dannare è xpath in particolare quando accedo alla cartella in cui ho il mio script mi dà il seguente errore:

    Fatal error: Call to a member function xpath() on a non-object in /membri/giuseppecarcaci/previsioni/previsioni.php on line 8


    Mentre lo stesso identico script funziona benissimo su un' altro server in produzione.

    Secondo me manca qualcosa o comuque devo abilitare qualcosa che non sò per farlo funzionare, MA COSA??????

    Grazie a tutti per l' aiuto!

  2. #2
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Lo script si collega a siti esterni?
    Se si, devi sbloccare la whitelist: Server to Server.

  3. #3
    Guest

    Predefinito

    Si a dire il vero mi collego a google, per vedere le previsioni, ma non credo sia questo il problema , ho anche creato una mappa sempre con google e funziona benissimo!!

    A meno che google non sia nella whitelist.

    A questo punto non mi spiego come sia stato possibile creare la mappa di google.

  4. #4
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Posta il codice del file previsioni.php.

  5. #5
    Guest

    Predefinito

    Eccolo e ti ringrazio per l' aiuto che mi stai dando!

    Codice PHP:
    <?php

    class Previsioni {
    private
    $day_of_week=Array();

    public function
    show($citta) {
    $xml = simplexml_load_file("http://www.google.com/ig/api?weather=$citta,italy&hl=en");
    $information = $xml->xpath("/xml_api_reply/weather/forecast_information");
    $current = $xml->xpath("/xml_api_reply/weather/current_conditions");
    $forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");
    //echo "<div id=\"bg\">\n";
    $Adesso = "<div id=\"cont_tempo\">";
    $Adesso.= "<img id=\"img_tempo\" border=\"0\" src=\"http://www.google.com".$current[0]->icon['data']."\" alt=\"". $current[0]->condition['data']."\" />\n";
    $Adesso.= "<div id=\"quando\">Adesso<br>".round(($current[0]->temp_f['data']*1-32)*5/9)." &deg;C</div>\n";

    $Adesso.= "</div>\n";


    /*Per SMARTY*/

    echo $Adesso;

    foreach (
    $forecast_list as $forecast) {
    $Altri_giorni[] = "<div id=\"cont_tempo\"><img id=\"img_tempo\" border=\"0\" src=\"http://www.google.com".$forecast->icon['data']."\" alt=\"". $forecast->condition['data']."\" />\n<div id=\"quando\">".$this->traduci($forecast->day_of_week['data'])."<br>".round(($forecast->low['data']*1-32)*5/9)." - ".round(($forecast->high['data']*1-32)*5/9)." &deg;C</div>\n";
    }
    foreach (
    $Altri_giorni as $giorni) {

    echo
    $giorni;
    }

    }


    public function
    __construct() {
    $this->day_of_week["Sun"]="Domenica";
    $this->day_of_week["Mon"]="Luned&igrave;";
    $this->day_of_week["Tue"]="Marted&igrave;";
    $this->day_of_week["Wed"]="Mercoled&igrave;";
    $this->day_of_week["Thu"]="Gioved&igrave;";
    $this->day_of_week["Fri"]="Venerd&igrave;";
    $this->day_of_week["Sat"]="Sabato";
    }

    private function
    traduci($stringa) {
    return
    $this->day_of_week["$stringa"];

    }

    }

    function
    cheTempoCheFa($citta) {
    $t=new Previsioni();
    $t->show($citta);
    }
    ?>
    Ultima modifica di andreafallico : 26-05-2010 alle ore 17.11.55

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Codice PHP:
    $xml = simplexml_load_file("http://www.google.com/ig/api?weather=$citta,italy&hl=en");
    Qui, su altervista, non puoi fare così.
    Per ottenere il sorgente di quel file devi usare le cURL o fsockopen ( devi sbloccarle inviando un SMS, vedi nel pannello di controllo e fai una ricerca sul forum ), depositi il sorgente in una stringa e poi procedi con simplexml_load_string.

  7. #7
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Prova così:
    Codice PHP:
    <?php

    class Previsioni {
    private
    $day_of_week=Array();

    public function
    show($citta) {
    $xml = new SimpleXMLElement($this->load_file("http://www.google.com/ig/api?weather=$citta,italy&hl=en"));
    $information = $xml->xpath("/xml_api_reply/weather/forecast_information");
    $current = $xml->xpath("/xml_api_reply/weather/current_conditions");
    $forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");
    //echo "<div id=\"bg\">\n";
    $Adesso = "<div id=\"cont_tempo\">";
    $Adesso.= "<img id=\"img_tempo\" border=\"0\" src=\"http://www.google.com".$current[0]->icon['data']."\" alt=\"". $current[0]->condition['data']."\" />\n";
    $Adesso.= "<div id=\"quando\">Adesso<br>".round(($current[0]->temp_f['data']*1-32)*5/9)." &deg;C</div>\n";

    $Adesso.= "</div>\n";


    /*Per SMARTY*/

    echo $Adesso;

    foreach (
    $forecast_list as $forecast) {
    $Altri_giorni[] = "<div id=\"cont_tempo\"><img id=\"img_tempo\" border=\"0\" src=\"http://www.google.com".$forecast->icon['data']."\" alt=\"". $forecast->condition['data']."\" />\n<div id=\"quando\">".$this->traduci($forecast->day_of_week['data'])."<br>".round(($forecast->low['data']*1-32)*5/9)." - ".round(($forecast->high['data']*1-32)*5/9)." &deg;C</div>\n";
    }
    foreach (
    $Altri_giorni as $giorni) {

    echo
    $giorni;
    }

    }


    public function
    __construct() {
    $this->day_of_week["Sun"]="Domenica";
    $this->day_of_week["Mon"]="Luned&igrave;";
    $this->day_of_week["Tue"]="Marted&igrave;";
    $this->day_of_week["Wed"]="Mercoled&igrave;";
    $this->day_of_week["Thu"]="Gioved&igrave;";
    $this->day_of_week["Fri"]="Venerd&igrave;";
    $this->day_of_week["Sat"]="Sabato";
    }

    private function
    traduci($stringa) {
    return
    $this->day_of_week["$stringa"];

    }
    private function
    load_file($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    $out = curl_exec($ch);
    curl_close($ch);
    return
    $out;
    }

    }

    function
    cheTempoCheFa($citta) {
    $t=new Previsioni();
    $t->show($citta);
    }
    ?>
    EDIT
    L'ho provato e funziona.
    Ultima modifica di andreafallico : 26-05-2010 alle ore 17.26.45

  8. #8
    Guest

    Predefinito

    Grandissimo, grazie infinite!!!!

  9. #9
    L'avatar di Gianluca
    Gianluca non è connesso Amministratore
    Data registrazione
    15-02-2001
    Messaggi
    18,035

    Predefinito

    Con i prossimi aggiornamenti, che sono in corso questi giorni, anche quella chiamata a funzione diretta ad un url dovrebbe funzionare.
    Gianluca

  10. #10
    saraberardelli non è connesso Neofita
    Data registrazione
    10-03-2008
    Messaggi
    1

    Predefinito

    scusate anche io ho questo problema..
    la mia chiamata $xml = simplexml_load_file("gallery.xml"); (dove gallery.xml è un file nel mio spazio) mi da Fatal error: Call to undefined function: simplexml_load_file()

    qualche idea?
    grazie!

  11. #11
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da saraberardelli Visualizza messaggio
    scusate anche io ho questo problema..
    la mia chiamata $xml = simplexml_load_file("gallery.xml"); (dove gallery.xml è un file nel mio spazio) mi da Fatal error: Call to undefined function: simplexml_load_file()

    qualche idea?
    grazie!
    Devi attivare PHP5, cerca sul forum per vedere come si fa.

  12. #12
    cadwork non è connesso Neofita
    Data registrazione
    29-10-2007
    Messaggi
    3

    Predefinito

    Citazione Originalmente inviato da giuseppecarcaci Visualizza messaggio
    Ciao a tutti, sono nuovo del forum.

    Adesso l' errore che mi sta facendo dannare è xpath in particolare quando accedo alla cartella in cui ho il mio script mi dà il seguente errore:

    Fatal error: Call to a member function xpath() on a non-object in /membri/giuseppecarcaci/previsioni/previsioni.php on line 8


    Mentre lo stesso identico script funziona benissimo su un' altro server in produzione.

    Secondo me manca qualcosa o comuque devo abilitare qualcosa che non sò per farlo funzionare, MA COSA??????

    Grazie a tutti per l' aiuto!

    Non mi risulta ci siano particolari problemi nel leggere Xpath qui su altervista.
    Anche io ho creato una pagina meteo usando google sia come mappe che come previsioni e Xpath funziona bene.

    Io uso queste scorciatoie xpath per leggere direttamente le info meteo


    Codice PHP:
    // scorciatoie ai dati con funzione xpath del php 5
    $information = $xml->xpath("/xml_api_reply/weather/forecast_information");
    $current = $xml->xpath("/xml_api_reply/weather/current_conditions");
    $forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");

    Qui puoi vedere come funziona

    http://montegrappa.altervista.org/MeteoFrame


    .

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •