Visualizzazione dei risultati da 1 a 3 su 3

Discussione: DOM odia PHP 4

  1. #1

    DOM odia PHP 4

    Ciao a tutti,
    ho sviluppato in locale una pagina per generale un file XML.
    Ecco qua il codice:
    Codice PHP:
        $filename "../log_files/soldi/ricevuti/".$RICEVENTE.".xml";
        
    // se non esiste il file per gli avvisi ne creo uno nuovo
        
    if (!file_exists($filename)){
            
    $handle fopen($filename,"w");
            
            
    $domxml = new DOMDocument("1.0");
            
    $domxml->preserveWhiteSpace false;
            
    $domxml->formatOutput true;
            
    $root $domxml->appendChild($domxml->createElement('holricevuti'));
            
    $domxml->save($filename);
        }
        
    //in ogni caso aggiungo le nuove informazioni
        
    $domxml = new DOMDocument("1.0");
        
    $domxml->preserveWhiteSpace false;
        
    $domxml->formatOutput true;
        
    $domxml -> load($filename) or die("Impossibile aprire il file xml");
        
    $root_list $domxml->getElementsByTagName("holricevuti");
        
    $root $root_list -> item(0);
        
    $transazione $root->appendChild($domxml->createElement('transazione'));
        
    $cessionario $transazione->appendChild($domxml->createElement('cessionario'));
        
    $cessionario->appendChild($domxml->createTextNode($_SESSION['utente']));
        
    $data $transazione->appendChild($domxml->createElement('data'));
        
    $data->appendChild($domxml->createTextNode(strftime("%d/%m/%y")));
        
    $ora $transazione->appendChild($domxml->createElement('ora'));
        
    $orad->appendChild($domxml->createTextNode(strftime("%H:%M:%S")));
        
    $qta $transazione->appendChild($domxml->createElement('quantita'));
        
    $qta->appendChild($domxml->createTextNode($HOL_ADD));
        
    $holcessionario $transazione->appendChild($domxml->createElement('holcessionario'));
        
    $holcessionario->appendChild($domxml->createTextNode($NEW_HOL_MITTENTE));
        
    $holricevente $transazione->appendChild($domxml->createElement('holricevente'));
        
    $holricevente->appendChild($domxml->createTextNode($NEW_HOL_RICEVENTE));
        
    $domxml->save($filename); 
    Tutto questo in locale funziona (cioé con PHP 5.3) mentre sul server di Aruba dà un sacco di problemi odiosi (PHP 4.4.9)

    Ecco i vari problemi (tenete conto che $filename.... è SEMPRE LA RIGA 2):
    se il mio codice è questo:
    Codice PHP:
    $filename "tizio.xml";
    // se non esiste il file per gli avvisi ne creo uno nuovo
    if (!file_exists($filename)){
        
    $domxml = new DOMDocument("1.0");
        
    $domxml->preserveWhiteSpace false;
        
    $domxml->formatOutput true;
        
    $root $domxml->appendChild($domxml->createElement('holricevuti'));
        
    $root->appendChild($domxml->createTextNode("frwertwerw"));
        
    $domxml->save($filename);

    ottengo questo errore:
    codice:
    Warning: domdocument() [function.domdocument]: Start tag expected, '<' not found in /web/htdocs/www.phyrosia.com/home/provaxml.php on line 6
    
    Fatal error: Call to undefined method: domdocument->appendchild() in /web/htdocs/www.phyrosia.com/home/provaxml.php on line 9
    se invece è questo:
    Codice PHP:
    $filename "tizio.xml";
    // se non esiste il file per gli avvisi ne creo uno nuovo
    if (!file_exists($filename)){        
        
    $domxml = new DOMDocument("<root/>");
        
    //$domxml = new DOMDocument("1.0");
        
    $domxml->preserveWhiteSpace false;
        
    $domxml->formatOutput true;
        
    $root $domxml->appendChild($domxml->createElement('holricevuti'));
        
    $root->appendChild($domxml->createTextNode("frwertwerw"));
        
    $domxml->save($filename);

    ottengo questo altro errore:
    codice:
    Fatal error: Call to undefined method: domdocument->appendchild() in /web/htdocs/www.phyrosia.com/home/provaxml.php on line 9
    e gli dò anche ragione

    se invece è questo:
    Codice PHP:
    $filename = "tizio.xml";
    // se non esiste il file per gli avvisi ne creo uno nuovo
    if (!file_exists($filename)){        
        $domxml = new DOMDocument("<?xml version=\"1.0\" encoding=\"utf-8\"?><root/>");
        
    $domxml->preserveWhiteSpace false;
        
    $domxml->formatOutput true;
        
    $domxml->save($filename);
    }
    ottengo questo altro errore:
    codice:
    Fatal error: Call to undefined method: domdocument->save() in /web/htdocs/www.phyrosia.com/home/provaxml.php on line 11
    Questo errore esce ognivolta non ci sono altri errori prima.

    Ora mi chiedo due cose: perché???
    e poi: come lo faccio funzionare?

    spero qualcuno riuscirà ad aiutarmi, grazie in anticipo.

    PS: ah, io vi ho fatto vedere solo gli errori relativi alla parte nell'if, ma questi ci sono anche dopo il caricamento del file tramite $doc->load("nomefile.ext");
    Flash Developer for Rich Media
    PHP, jQuery Developer

  2. #2
    non è che DOM odia PHP 4, è che in PHP4 le cose sono diverse da PHP5 sopratutto per la gestione di DOM XML.

    Questo è il link alla documentazione DOM XML per PHP4 (per la funzione DomNode->append_child()): http://it.php.net/manual/en/function...pend-child.php
    Administrator of NAMDesign.Net

  3. #3
    Si, ovviamente, ero ironico riguardo all'odio =P

    Cmq... ho "convertito" tutto in DOMXML e sembra andare, tranne che per una "piccola" cosa...
    nonostante per salvare i file io usi il comando
    Codice PHP:
    $domxml->dump_file($filename,false,true); 
    Aprendo il file non vedo nessuna formattazione, anzi, è tutto su una linea. Come mai ciò?
    Flash Developer for Rich Media
    PHP, jQuery Developer

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.