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:</b> Este recuadro permite al usuario ingresar un nuevo comentario que mas tarde será agregada a la base de datos; recuerda 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">
</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)
{
$Descripcion= mysql_real_escape_string($Descripcion);
$Calificacion= mysql_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 =)