Foros del Web » Programando para Internet » PHP »

Problemas con Instanciar una clase en PHP5

Estas en el tema de Problemas con Instanciar una clase en PHP5 en el foro de PHP en Foros del Web. Tengo un problema cuando voy a instanciar una clase, tengo un archivo llamado xml.php el cual contiene el siguinte codigo Código PHP: class xml_mio{     //     var $content; ...
  #1 (permalink)  
Antiguo 30/05/2007, 23:33
Avatar de Dr.Guindows  
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 2 meses
Puntos: 0
Exclamación Problemas con Instanciar una clase en PHP5

Tengo un problema cuando voy a instanciar una clase, tengo un archivo llamado xml.php el cual contiene el siguinte codigo
Código PHP:
class xml_mio{
    //
    var $content;
    var $xml_version;
    var $xml_encoding;
    var $data_label;
    var $item_label;
    var $sentencia;    
    var $db_key;
    //
    //
    /** constructor; carga algunos valores por defecto
    */
    public function xml() {
        $this->content = Array();
        $this->xml_version = "1.0";
        $this->xml_encoding = "ISO-8859-1";
        $this->data_label = "datos";
        $this->item_label = "item";
    }
    //
    //
    /** Recibe los datos a mostrar en una matriz de dos dimensiones,
    * y los almacena internamente
    */
    function setSentencia($strSqlQuery){
        $this->sentencia = $strSqlQuery;
    }
    function setDb_Key($dbconn){
        $this->db_key = $dbconn;
    }
    function setContent($data = NULL) {
        if ($data != NULL) {
            $this->content = $data;
        }
    }
    //
    /** Devuelve el contenido de la matriz, eliminando los indices duplicados si se especifica
    *@return el contenido de la matriz
    */
    function getContent() {
        return ($this->content);
    }
    //
    /** Muestra en cadena de texto los valores con formato xml
    *@return los datos en formato xml
    */
    function toString() {
        
    $return = "";
    
    if ($this->content != NULL) {
        //echo "PASO 1";
        $return .= $this->header();
        $return .= "<".$this->data_label.">\n";
    //para cada elemento de la matriz, hay una matriz de datos con los índices del resultado mysql
    foreach ($this->content as $result)
    {
        $return .= "\t<".$this->item_label.">\n";
        foreach( $result as $key => $value ) {
            $return .= "\t\t<" . $key . ">" . $value ."</" . $key . ">\n";
        }
        $return .= "\t</".$this->item_label.">\n";
    }
        $return .= "</".$this->data_label.">";
    }
        return ($return);
    }
    //
    /** Devuelve la cabecera xml
    *@return la cabecera xml
    */
    function header(){    
        return ("<?xml version="".$this->xml_version."\" encoding=\"".$this->xml_encoding."\"?>\n");
    }
    
//Devuelve un Archivo XML con la sentencia
    
public function genera_XML(){

        
$results = array();
        
$resultado mysql_query($this->sentencia$this->db_key);
        
$i 0;
        while (
$row mysql_fetch_assoc($resultado)){
            
$results[] = $row;
        }
        
$xml = new xml();
        
$xml->setContent($results);
        
//hemos obtenido los datos, ahora los mostramos en xml
        
header('Content-Type: text/xml');
        echo 
$xml->toString();
    }
}
tengo otro archivo llamado jose.php el cual instancia la clase contenida en el archivo anterior, pero no me funciona me da el siguiente error
Cita:
Fatal error: Class 'xml_mio' not found in C:\Archivos de programa\EasyPHP 2.0b1\www\Quiniela\jose.php on line 3
aqui anexo el codigo de jose.php
Código PHP:
include("class/xml.php");
    
$xml = new xml_mio();
    
$db mysql_connect("localhost""root") or die("No se pudo conectar con la base de datos");
    
mysql_select_db("facilquiniela") or die(mysql_error());
    
$xml->setSentencia("select * from personanatural");
    
$xml->setDb_Key($db);
    
$xml->genera_XML(); 
Agradezco cualquier ayuda que me puedan brindar...
__________________
La vida es un sin fin de inhalaciones y expiraciones o son los momentos que nos dejan si ellas ;) !!! :arriba:
  #2 (permalink)  
Antiguo 30/05/2007, 23:39
 
Fecha de Ingreso: junio-2005
Ubicación: Mexico
Mensajes: 21
Antigüedad: 18 años, 10 meses
Puntos: 0
Sonrisa Re: Problemas con Instanciar una clase en PHP5

eso es xq no encuentra el archivo, algunas veces yo tengo problemas de refresco con el apache subes los archivos pero como que se queda pegado y nomas no actualiza te recomiendo bajar el servidor y volverlo a poner en linea si con eso no queda renombra la carpeta donde tienes todo o borrala y provoca errores 404 en el servidor mediante el explorador para que el server refresque su cache y entonces ya te carge el archivo pero segun yo te marca que no encuentra un archivo
  #3 (permalink)  
Antiguo 31/05/2007, 07:17
Avatar de Dr.Guindows  
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Problemas con Instanciar una clase en PHP5

Cita:
Iniciado por hardcess Ver Mensaje
eso es xq no encuentra el archivo, algunas veces yo tengo problemas de refresco con el apache subes los archivos pero como que se queda pegado y nomas no actualiza te recomiendo bajar el servidor y volverlo a poner en linea si con eso no queda renombra la carpeta donde tienes todo o borrala y provoca errores 404 en el servidor mediante el explorador para que el server refresque su cache y entonces ya te carge el archivo pero segun yo te marca que no encuentra un archivo

Gracias por tu respuesta, pero ya he intentado bajar el servidor y volver a subirlo y nada :S no se que le esta pasando a este apache de php5 :( estoy usando easyphp 2.01b sera eso? intento con otro apache?
__________________
La vida es un sin fin de inhalaciones y expiraciones o son los momentos que nos dejan si ellas ;) !!! :arriba:
  #4 (permalink)  
Antiguo 31/05/2007, 07:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problemas con Instanciar una clase en PHP5

Cual es la ruta a tus archivos? Los tienes asi?:
Código:
/class/xml.php
/jose.php
  #5 (permalink)  
Antiguo 31/05/2007, 22:17
Avatar de Dr.Guindows  
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Problemas con Instanciar una clase en PHP5

Si, los tengo exactamente asi! he buscado en internet y asi se llama a una clase! para tener organizado el codigo... ahora el siguiente orden de codigo si me funciona. Si me pueden decir el pq asi si funciona se lo agradeceria! gracias
Código PHP:
class xml{
    //
    var $content;
    var $xml_version;
    var $xml_encoding;
    var $data_label;
    var $item_label;
    //
    //
    /** constructor; carga algunos valores por defecto
    */
    public function xml() {
        $this->content = Array();
        $this->xml_version = "1.0";
        $this->xml_encoding = "ISO-8859-1";
        $this->data_label = "datos";
        $this->item_label = "item";
    }
    //
    //
    /** Recibe los datos a mostrar en una matriz de dos dimensiones,
    * y los almacena internamente
    */
    function setContent($data = NULL) {
        if ($data != NULL) {
            $this->content = $data;
        }
    }
    //
    /** Devuelve el contenido de la matriz, eliminando los indices duplicados si se especifica
    *@return el contenido de la matriz
    */
    function getContent() {
        return ($this->content);
    }
    //
    /** Muestra en cadena de texto los valores con formato xml
    *@return los datos en formato xml
    */
    function toString() {
        
    $return = "";
    
    if ($this->content != NULL) {
        //echo "PASO 1";
        $return .= $this->header();
        $return .= "<".$this->data_label.">\n";
    //para cada elemento de la matriz, hay una matriz de datos con los índices del resultado mysql
    foreach ($this->content as $result)
    {
        $return .= "\t<".$this->item_label.">\n";
        foreach( $result as $key => $value ) {
            $return .= "\t\t<" . $key . ">" . $value ."</" . $key . ">\n";
        }
        $return .= "\t</".$this->item_label.">\n";
    }
        $return .= "</".$this->data_label.">";
    }
        return ($return);
    }
    //
    /** Devuelve la cabecera xml
    *@return la cabecera xml
    */
    function header(){    
        return ("<?xml version="".$this->xml_version."\" encoding=\"".$this->xml_encoding."\"?>\n");
    }
}

Genera_XML($_GET['sentencia']);

function 
genera_XML($sentencia){

    
$results = array();
    
    
$db mysql_connect("localhost""root") or die("No se pudo conectar con la base de datos");
    
    
mysql_select_db("facilquiniela") or die(mysql_error());
    
    
$query $sentencia;
    
    
$resultado mysql_query($query$db);
    
$i 0;
    while (
$row mysql_fetch_assoc($resultado)){
        
            
$results[] = $row;
            
    }
    
mysql_close($db);
    
$xml = new xml();
    
$xml->setContent($results);
    
    
//hemos obtenido los datos, ahora los mostramos en xml
    
    
header('Content-Type: text/xml');
    
    echo 
$xml->toString();

}
__________________
La vida es un sin fin de inhalaciones y expiraciones o son los momentos que nos dejan si ellas ;) !!! :arriba:
  #6 (permalink)  
Antiguo 31/05/2007, 23:36
Avatar de Dr.Guindows  
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Problemas con Instanciar una clase en PHP5

Listo, Al Fin pude solucionar mi problema, Aqui les dejo esta clase de php5 para crear un documento XML desde un result set o Query a MySql

Código PHP:
class sql2xml{
    //
    var $content;
    var $xml_version;
    var $xml_encoding;
    var $data_label;
    var $item_label;
    var $sentencia;    
    var $db_key;
    //
    //
    /** constructor; carga algunos valores por defecto
    */
    public function sql2xml() {
        $this->content = Array();
        $this->xml_version = "1.0";
        $this->xml_encoding = "ISO-8859-1";
        $this->data_label = "datos";
        $this->item_label = "item";
        $this->db_key = "";
        $this->sentencia = "";
    }
    //
    //
    /** Recibe los datos a mostrar en una matriz de dos dimensiones,
    * y los almacena internamente
    */
    function setSentencia($strSqlQuery = NULL){
        $this->sentencia = $strSqlQuery;
    }
    function setDb_Key($dbconn = NULL){
        $this->db_key = $dbconn;
    }
    function setContent($data = NULL) {
        if ($data != NULL) {
            $this->content = $data;
        }
    }
    //
    /** Devuelve el contenido de la matriz, eliminando los indices duplicados si se especifica
    *@return el contenido de la matriz
    */
    function getContent() {
        return ($this->content);
    }
    //
    /** Muestra en cadena de texto los valores con formato xml
    *@return los datos en formato xml
    */
    function toString() {
        
    $return = "";
    
    if ($this->content != NULL) {
        //echo "PASO 1";
        $return .= $this->header();
        $return .= "<".$this->data_label.">\n";
    //para cada elemento de la matriz, hay una matriz de datos con los índices del resultado mysql
    foreach ($this->content as $result)
    {
        $return .= "\t<".$this->item_label.">\n";
        foreach( $result as $key => $value ) {
            $return .= "\t\t<" . $key . ">" . $value ."</" . $key . ">\n";
        }
        $return .= "\t</".$this->item_label.">\n";
    }
        $return .= "</".$this->data_label.">";
    }
        return ($return);
    }
    //
    /** Devuelve la cabecera xml
    *@return la cabecera xml
    */
    function header(){    
        return ("<?xml version="".$this->xml_version."\" encoding=\"".$this->xml_encoding."\"?>\n");
    }
    
//Devuelve un Archivo XML con la sentencia
    
public function genera_XML(){

        
$results = array();
        
$resultado mysql_query($this->sentencia$this->db_key);
        
$i 0;
        while (
$row mysql_fetch_assoc($resultado)){
            
$results[] = $row;
        }
        
        
$this->setContent($results);
        
//hemos obtenido los datos, ahora los mostramos en xml
        
header('Content-Type: text/xml');
        echo 
$this->toString();
    }
}
Luego La Instanciamos de la siguiente manera:

Código PHP:

<?php 
    
include("xml.php");
    
$query="SELECT * FROM MiTabla "// ---> Consulta a Realizar
    
$xml = new sql2xml();
    
$db mysql_connect("localhost","user""password") or die("No se pudo conectar con la base de datos"); // ---> Clave de Conexion 
    
mysql_select_db("MiBasedeDatos") or die(mysql_error()); // ---> Bases de datos a consultar
    
$xml->setSentencia($query);
    
$xml->setDb_Key($db);
    
$xml->genera_XML();
?>
Espero que esta clase les sea util cuando deseen enviar una consulta MySql a XML... supero poderoso para trabajar MySql - PHP - XML - XSL - AJAX - XHTML

Saludos y Gracias por leer...

Franklyn Ortega...
Caracasoft.com
__________________
La vida es un sin fin de inhalaciones y expiraciones o son los momentos que nos dejan si ellas ;) !!! :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:12.