Comunidad de diseño web y desarrollo en internet online

Pasar de código con new DOMDocument de PHP 5 a PHP 4

Citar            
MensajeEscrito el 01 Ago 2006 08:12 am
Hola, tengo un código de fuente que usa funciones de php 5 para enviar información a una base de datos usando XML. Me gustaría saber cómo puedo cambiar el código para que pueda cumplir la misma función, pero usando php4.

de acá obtuve el código
http://philflash.inway.fr/realestatep2/index.html


Código :


<?php 
/**
 * RealEstate in Flash with PHP
 * by PhilFlash - http://philflash.inway.fr
 */
   require_once('connectdb.php'); 

   // For debug
   // If true, save the XML in the file debugOperation.xml
   // To test, enter: operation.php?debug=1 => read the file debugOperation.xml
   $debugXmlOperation = false;
                           
    // ----- NO CACHE -----
   session_cache_limiter('nocache');
  
   // General header for no caching
   $now = gmdate('D, d M Y H:i:s') . ' GMT';
   header('Expires: ' . $now); // rfc2616 - Section 14.21
   header('Last-Modified: ' . $now);
   header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
   header('Pragma: no-cache'); // HTTP/1.0
   
    header("Content-Type: text/xml; charset=utf-8");
   // ----- Functions -----
   function formatString($str) {
      $str = utf8_decode($str); 
       return "'".mysql_escape_string($str)."'";
    }
    
   function formatAttributeValue($theValue) {
      $theValue = utf8_encode($theValue);
       return $theValue;
    }
    
    function formatAttributeNumberValue($theValue) {
       if ($theValue == "") {
          return "_NULL_";
       }
        return $theValue;
    }
    
   function formatTagValue($theValue) {
      if ($theValue == "") {
         return "_NULL_";
      }
       $theValue =   htmlspecialchars($theValue, ENT_COMPAT);
      $theValue = str_replace("'", "&apos;", $theValue);
      $theValue = utf8_encode($theValue);
       return $theValue;
    }
    
   // ----- MySQL Connection -----
   mysql_select_db($database_db, $connect_db);
   
   // ----- Read operation in XML -----   
   $xmlOperation = "";
   $domOperation = new DOMDocument();
   
   if (isset($debug) && $debug == "1") {
      $domOperation->load("debugOperation.xml");
   } else {
      $xmlOperation = file_get_contents("php://input");
      if ($xmlOperation == "") {
         // die("*** WAIT A PARAMS XML FILE ***");
         $xmlOperation = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><params></params>";
      }
      $domOperation->loadXML($xmlOperation);
      
      if ($debugXmlOperation) {
         $fp = fopen("debugOperation.xml", "w");
         fwrite($fp, $domOperation->saveXML());
         fclose($fp);
      }
   }
   
   // ----- Prepare XML to send -----
   $dom = new DOMDocument();
   $dom->loadXML("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><roperation></roperation>");
   
   $rcode =  0; // 0:bad operation, 1: ok
   $rarg =   ""; // arg returned
   $errmsg = ""; // error message

   $rootNode = $dom->documentElement;
   
   // ----- Check operation -----
   $nodeOperation = $domOperation->documentElement;
   
   $operation = $nodeOperation->getAttribute("opcode");
   
   // -- process "remove" operation --
   if ($operation == "remove") {
      $arg = $nodeOperation->getAttribute("arg");

      if ($arg != NULL && $arg != "") {   
         $query = "DELETE FROM listing where `mls_id` = " . formatString($arg);   
         
         // Exec query
         $result = mysql_query($query);
         
         if ($result) {
            $num_rows = mysql_affected_rows();
            $rcode = 1;
         } else {
            $num_rows = 0;         
         }
         $rarg = $num_rows;
      }
   } 
   // -- process "update" operation --
   else if ($operation == "update") {

       $valuesNode = $nodeOperation->getElementsByTagName("values");
       $valueNode = $valuesNode->item(0);
       
       $updateStmt = "";
       $updateCondition = "";
       
         if ($valueNode->hasAttributes()) {
            $addStmt = "";
             foreach ($valueNode->attributes as $attribute) {
                $name = $attribute->name;
                $checkName = ";".$name;
                $value = $attribute->value;
                
                if ($name == "mls_id") {
                   $updateCondition =    "`" . $name . "` = " . formatString($value);
                   $arg = $value;
                }
                else if (strpos(";address;city;state;zipcode;status;stories;type;remarks;listedOn;", $checkName) === false) {
                   // number
                   $updateStmt = $updateStmt . $addStmt . "`" . $name . "` = " . mysql_escape_string($value);
                   $addStmt = ", ";
                }
                else {
                   // string
                   $updateStmt = $updateStmt . $addStmt . "`" . $name . "` = " . formatString($value);    
                   $addStmt = ", ";
                }
             }
          }
          $query = "UPDATE listing SET " .  $updateStmt . " WHERE " . $updateCondition;
      // -- Exec query --
      $result = mysql_query($query);
      if ($result) {
         $num_rows = mysql_affected_rows();
         $rcode = 1;
      } else {
         $num_rows = 0;         
      }
      $rarg = $num_rows;
   }
   // -- process "insert" operation --
   else if ($operation == "insert") {

       $valuesNode = $nodeOperation->getElementsByTagName("values");
       $valueNode = $valuesNode->item(0);
        
       // Check the id
       $arg = $valueNode->getAttribute("mls_id");
       $num_rows = 1;
      if ($arg != NULL && $arg != "") {   
         $query = "SELECT  `mls_id` FROM listing where `mls_id` = " . formatString($arg);      
         // Exec query
         $result = mysql_query($query);
         if ($result) {
            $num_rows = mysql_num_rows($result);
         }
      } else {
         $rcode = -1;
         $errmsg = "Bad mls_id";
      }
      
      if ($num_rows == 1) {
         $rcode = -1;
         $errmsg = "This property already exists: ".$arg;
      }
      else {
         // -- Create the insert statement --
         $insertNames = "";
         $insertValues = "";

         if ($valueNode->hasAttributes()) {
            $addStmt = "";
            foreach ($valueNode->attributes as $attribute) {
               $name = $attribute->name;
               $checkName = ";".$name;
               $value = $attribute->value;
               //
               $insertNames =    $insertNames . $addStmt . "`" . $name . "`";
               //
               if (strpos(";mls_id;address;city;state;zipcode;status;stories;type;remarks;listedOn;", $checkName) === false) {
                  // number
                  $insertValues = $insertValues . $addStmt . mysql_escape_string($value);
               }
               else {
                  // string
                  $insertValues = $insertValues . $addStmt . formatString($value);    
               }
               $addStmt = ",";
            }
         }
         $query = "INSERT INTO listing (" .  $insertNames . ") VALUES (" . $insertValues . ")"; 
         // -- Exec query --
         $result = mysql_query($query);
         if ($result) {
            $num_rows = mysql_affected_rows();
            $rcode = 1;
         } else {
            $num_rows = 0;         
         }
         // --
         $rarg = $num_rows;
      }
   } else {
      $operation = "badoperation";
   }
   mysql_close();
   
   // ----- Send XML -----   
   $rootNode->setAttribute("operation", $operation);
   $rootNode->setAttribute("arg", $arg);
   $rootNode->setAttribute("rcode", $rcode);   
   $rootNode->setAttribute("rarg", $rarg);   
   $rootNode->setAttribute("errmsg", $errmsg);
   
   // print the XML 
   print $dom->saveXML();
?>


No entiendo mucho de php, pero se que el error está en la función new DOMDocument, si tiene algún truco para pasar el código seria genial.

Gracias,

Tom

Por tatria

6 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 02 Ago 2006 06:11 am
nada facil lo que pides, requiere leer la referencia de su antecesor... y compatibilidad con la version exacta que tu tienes, pues muchos se agregaron en betas, pero para php5 utilizaron lenguaje OOP que no funciona del todo en php4. en fin

Debes revisar
DOM para php 5
DOM XML para php 4

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.