Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/07/2010, 11:09
danielgara
 
Fecha de Ingreso: julio-2010
Mensajes: 2
Antigüedad: 14 años, 4 meses
Puntos: 0
Problema clases smarty con xajax

Muy buenos dias

Ultimamente e estado trabajando con un poco de xajax; el smarty hace mucho que lo vengo utilizando, pero hay un problema q no e podido resolver desde hace rato.

Estoy haciendo una pagina para registrar comentarios con xajax.
Voy a dejar unicamente los archivos q me estan causando problema:

ajax.php (donde guardo las funciones que utilizara el xajax)

Código PHP:
<?php

require('include.php');
include_once (
ABSPATH "varios/gestor.php");

function 
procesarform($Descripcion$Calificacion)
{    
   
//$myGestorBD = new gestor();    
   //$myGestorBD->conectar();
   //$myGestorBD->AgregarComentario($Descripcion,$Calificacion);
   
$salida "Insertado correctamente";
   
//$myGestorBD->cerrarConexion();

   
$respuesta = new xajaxResponse();
   
$respuesta->assign("mensaje","innerHTML",$salida);
   return 
$respuesta;
}

function 
suma($a$b)

{

    
$response = new xajaxResponse();

    
$response->assign("resultado","innerHTML"$a $b);

    return 
$response;

}


?>
registro.tpl (un template que voy a utilizar)

Código PHP:
<div class="tcat_bg">
 <
div class="tcat_right">
  <
div class="tcat_left">
Ingrese un nuevo Comentario
  
</div>
 </
div>
</
div>
<
table cellspacing="10" cellpadding="0" class="tborder" align="center" border="0"><tr>

    <
td align="left" valign="middle"><form action="#" method="post">
    <
table border="0"><tr align="left">
    <
td><span class="presentacion"><b>Importante:</bEste recuadro permite al usuario ingresar un nuevo comentario que mas tarde ser&aacuteagregada a la base de datosrecuerda que los campos marcados con son obligatorios.<br /><br /></span></td></tr>
    <
tr align="left"><td><span class="presentacion"><b>*Descripcion:</b></span> <input name="descripcion" type="text"></td></tr>
    <
tr align="left"><td><span class="presentacion"><b>*Calificacion:</b></span> <input name="calificacion" type="text"></td></tr>
<
tr><td colspan="2"><input type="button" value="Enviar" onclick="xajax_procesarform(document.getElementById('descripcion'),document.getElementById('calificacion'))"><br /><br_/><p id="mensaje"></p></td></tr>
    </
table>
    </
form>
</
td><td class="general" align="right" valign="top"><img src="images/hp.jpg" />
<
form action="#" method="post">
        <
input type="text" name="val1" id="val1">
        <
input type="text" name="val2" id="val2">
        <
input type="button" onClick="xajax_suma(document.getElementById('val1').value,document.getElementById('val2').value)" id="btnAdd" value="Click Me" />

        <
p id="resultado"></p>
    </
form></td>
    </
tr></table>
    <
div class="tfoot_bg">
<
div class="tfoot_r">
<
div class="tfoot_l">
&
nbsp;
</
div>
</
div>
</
div>
<
br />
<
br /> 

¿Cual es el problema?

El problema esta en que ya e verificado todo, y las funciones me corren perfectamente, la funcion suma me muestra el resultado inmediatamente abajo y la funcion procesarform tambien me muestra abajo el letro Insertado correctamente, cuando en ambos doy clic en enviar.

Hasta ahi todo va bien, pero cuando quito los // a lo que tengo dentro de la funcion procesarform osea estas 4 lineas:

//$myGestorBD = new gestor();
//$myGestorBD->conectar();
//$myGestorBD->AgregarComentario($Descripcion,$Calificacion);
//$myGestorBD->cerrarConexion();

Ya no me funciona la funcion procesarform y no muestra ningun resultado.
Vale la pena aclarar que siempre me a funcionado bien las 4 lineas anteriores colocandolas en cualquier parte excepto dentro de esa funcion procesarform

Mi pregunta es? sera que no puedo utilizar otras clases php dentro de las funciones de xajax?

Esta es una imagen de mi formulario:



Esto es lo q tengo en gestor.php
Código PHP:
class gestor{
     var 
$servidor "localhost";
    var 
$user "xajax";
    var 
$pass "*****";
    var 
$db "xajax";
    var 
$cn;
    
    
    function 
gestor(){        
    }
    
/**Obtiene una conexion a la BD. Notar que se utiliza pconnect para que el 
    servidor Apache utilice un pool de conexiones*/
    
function conectar(){
        
$this->cn mysql_pconnect($this->servidor$this->user$this->pass );
        if ( !
$this->cn )
            die(
"Fallo en la conexion a la base de datos: ".mysql_error());
        if(!
mysql_select_db($this->db))
            die ( 
"No fue posible comunicarse con la base de datos $db: ".mysql_error());
        
//return $cn;
    
}

//funcion que permite agregar un nuevo comentario a la base de datos
    
public function AgregarComentario($Descripcion,$Calificacion
    {
        
$Descripcionmysql_real_escape_string($Descripcion);
        
$Calificacionmysql_real_escape_string($Calificacion);
         
$consulta "INSERT INTO comentario (descripcion, calificacion) values ('$Descripcion', '$Calificacion')";
        
$this->realizarOperacion($consulta);
    }

/**Realiza la operacion indicada dentro del argumento code*/
    
function realizarOperacion($codigo){
        
        
$resultado mysql_query($codigo$this->cn) ;
            
    }

/**Realiza una consulta sobre la BD*/
    
function consultar($codigo){        
        
//vector donde se almacenaran los resultados de la consulta; cada elemento sera un registro
        
$datos = array(); 
        
$resultado mysql_query($codigo$this->cn) or die(mysql_error($this->cn));
        while ( 
$row mysql_fetch_object($resultado) ){
            
array_push($datos$row);
        }
        return 
$datos;
    }
    
    
/**Cierra la conexion a la BD*/
    
function cerrarConexion(){
        if(
$this->cn)
            
mysql_close$this->cn );
    } 
Mil gracias =)

Última edición por danielgara; 01/07/2010 a las 11:26 Razón: Agregue imagen de mi formulario