Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con Xajax al recargar formulario

Estas en el tema de Problema con Xajax al recargar formulario en el foro de Frameworks JS en Foros del Web. Hola otra vez, siguiendo con mi programa de ayer (gestor de estoc de una tienda de música) ahora estoy intentando que cuando se introduzcan los ...
  #1 (permalink)  
Antiguo 23/03/2008, 19:40
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 5 meses
Puntos: 0
Problema con Xajax al recargar formulario

Hola otra vez, siguiendo con mi programa de ayer (gestor de estoc de una tienda de música) ahora estoy intentando que cuando se introduzcan los datos en mi BD lo que me haga el programa es regargar el formulario completamente en blanco, ya que si me introduce bien en la BD el formulario se me queda con los valores ya introducidos, por lo que, si le doy a introducir otra vez aparece el mensaje (correcto) de "Fabricante ya existente". Bien, muestro el código de introducir un fabricante ya que el formulario es mucho menor, también decir que el uploader del archivo no está implementado todavía. Haber si alguien me puede echar un mano ya que no se por qué no se me refrescar el div correspondiente al formulario. Muchas gracias de antemano y un saludo!!

Código PHP:
<?php
//incluímos la clase ajax
require_once("Xajax/xajax_core/xajax.inc.php");

//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->configure('decodeUTF8Input',true);

function 
muestra_formulario(){
   
//creo el xajaxResponse para generar una salida
   
$respuesta2 = new xajaxResponse();
   
   
$codigo_formul '<FORM id="formIMFab">
        <TABLE style="HEIGHT:100%;WIDTH:100%;" BORDER=0>
        <TR ALIGN="center" BOTTOM="middle"><TD>
        <TABLE BORDER=0>
        <tr><td>
        <TR>
        <TD align="left" width="100"><P>Nombre Fabricante:</P></TD>
        <TD align="left" width="150"><INPUT TYPE="text" NAME="NomFab" MAXLENGTH="20" SIZE="20" onChange="javascript:this.value=this.value.toUpperCase();"></P></TD>
        </TR>
        <TD align="left" width="100"><P>Imagen:</P></TD>
        <TD align="left" width="150"><input type="file" id="foto" name="foto"/>
        </TD>
        </TR>
        <TR>
        <TD>
        <input type="button" value="Guardar" onClick="xajax_procesar_formulario(xajax.getFormValues(\'formIMFab\'));"/>
        <INPUT type="reset" value="Limpiar" name="Limpiar" onClick="ponerfoco(0,0)">
        </TD>
        </TR>
    </FORM>
'
;
   
//mostramos en capa capaformulario el texto código HTML del formulario
   
$respuesta2->assign("capaformulario","innerHTML","$codigo_formul");
   return 
$respuesta2;
 }

function 
procesar_formulario($form_entrada){
   
//creo el xajaxResponse para generar una salida
   
$respuesta = new xajaxResponse();

    include_once(
"../BBDD/conexDBTMusik.php");
   
   
$NomFab=$form_entrada["NomFab"];

   
$consulta1="SELECT * FROM fabricante WHERE Fabricante='".$NomFab."'";
   
$ejecuta1=mysql_query($consulta1,$link);
   
$nr=mysql_num_rows($ejecuta1);

   
//validación
   
$error_form "";
   if (
$form_entrada["NomFab"]==""){$error_form="Debes escribir el nombre del Fabricante";}
   elseif(
$nr!=0){$error_form="Fabricante ya existente";}
     
       
//compruebo resultado de la validación
       
if ($error_form != ""){
         
//Hubo un error en el formulario
          //en la capa donde se muestran mensajes, muestro el error
          
$respuesta->assign("mensaje","innerHTML","<span style='color:red;'>$error_form</span>");
        }
     else
     {
             
$cadena="INSERT INTO fabricante(Fabricante)VALUES('".$NomFab."')";
          
$ejecuta2=mysql_query($cadena,$link);
          
//mostramos en capa mensaje el texto que está todo correcto
          
$respuesta->assign("mensaje","innerHTML","<span style='color:blue;'>Todo correcto...Fabricante introducido, rellena los datos del formulario e introduce otro!</span>");
          
xajax_muestra_formulario();
       }
     
//tenemos que devolver la initanciación del objeto xajaxResponse
return $respuesta;
include_once(
"../BBDD/desconexDBTMusik.php");

}

//registramos la función creada anteriormente al objeto xajax
$xajax->registerFunction("muestra_formulario");
$xajax->registerFunction("procesar_formulario");

//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();
?>
Código HTML:
<HTML>
<HEAD>
	<TITLE>Introducir Fabricante</TITLE>
	<SCRIPT type="text/javascript" SRC="../Js/Introducir.js"></SCRIPT>
	<link rel="stylesheet" type="text/css" href="../css/contenedor.css" title="contenedor" />
	<link rel="alternate stylesheet" type="text/css" href="../css/menu.css" title="menu" />
    <?php
    	//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
    	$xajax->printJavascript("xajax/");
    ?>
</HEAD>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<BODY onLoad="ponerfoco(0,0);">

    <CENTER>
	<div id="mensaje">
	Rellena los datos de este formulario y pulsa "Guardar"
	</div>
    </CENTER>

	<!-- Conectamos con la BBDD -->
	<?php include_once("../BBDD/conexDBTMusik.php"); ?>
	
    <div id="capaformulario">
	<FORM id="formIMFab">

		<TABLE style="HEIGHT:100%;WIDTH:100%;" BORDER=0>
		<TR ALIGN="center" BOTTOM="middle"><TD>
		<TABLE BORDER=0>
		<tr><td>
		<TR>
		<TD align="left" width="100"><P>Nombre Fabricante:</P></TD>
		<TD align="left" width="150"><INPUT TYPE="text" NAME="NomFab" MAXLENGTH="20" SIZE="20" onChange="javascript:this.value=this.value.toUpperCase();"></P></TD>
		</TR>
		<TD align="left" width="100"><P>Imagen:</P></TD>
		<TD align="left" width="150"><input type="file" id="foto" name="foto"/>
		</TD>
		</TR>
		<TR>
		<TD>
		<input type="button" value="Guardar" onClick="xajax_procesar_formulario(xajax.getFormValues('formIMFab'));"/>
        <INPUT type="reset" value="Limpiar" name="Limpiar" onClick="ponerfoco(0,0)">
		</TD>
		</TR>
	</FORM>
	</div>
    <?php include_once("../BBDD/desconexDBTMusik.php"); ?>
</BODY>
</HTML> 
  #2 (permalink)  
Antiguo 23/03/2008, 22:34
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Problema con Xajax al recargar formulario

Podrias crear una funcion que se encargar de eso, luego cuando has insertado la invocas desde el XAJAX...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #3 (permalink)  
Antiguo 24/03/2008, 06:12
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema con Xajax al recargar formulario

Pero no es lo que he hecho???igual no te he entendido bien...gracias igualmente, le seguire dando vueltas...encuentre la solución que encuentre la posteo!!meeeeersy!!!

LA FUNCION
Código:
function muestra_formulario(){
   //creo el xajaxResponse para generar una salida
   $respuesta2 = new xajaxResponse();
   
   $codigo_formul = '<FORM id="formIMFab">
		<TABLE style="HEIGHT:100%;WIDTH:100%;" BORDER=0>
		<TR ALIGN="center" BOTTOM="middle"><TD>
		<TABLE BORDER=0>
		<tr><td>
		<TR>
		<TD align="left" width="100"><P>Nombre Fabricante:</P></TD>
		<TD align="left" width="150"><INPUT TYPE="text" NAME="NomFab" MAXLENGTH="20" SIZE="20" onChange="javascript:this.value=this.value.toUpperCase();"></P></TD>
		</TR>
		<TD align="left" width="100"><P>Imagen:</P></TD>
		<TD align="left" width="150"><input type="file" id="foto" name="foto"/>
		</TD>
		</TR>
		<TR>
		<TD>
		<input type="button" value="Guardar" onClick="xajax_procesar_formulario(xajax.getFormValues(\'formIMFab\'));"/>
        <INPUT type="reset" value="Limpiar" name="Limpiar" onClick="ponerfoco(0,0)">
		</TD>
		</TR>
	</FORM>
';
   //mostramos en capa capaformulario el texto código HTML del formulario
   $respuesta2->assign("capaformulario","innerHTML","$codigo_formul");
   return $respuesta2;
 }
LA LLAMADA, se encuentra dentro de la otra función ya que sólo me interesa que se haga cuando se hace el INSERT.
Código:
	 else
	 {
   		  $cadena="INSERT INTO fabricante(Fabricante)VALUES('".$NomFab."')";
		  $ejecuta2=mysql_query($cadena,$link);
    	  //mostramos en capa mensaje el texto que está todo correcto
    	  $respuesta->assign("mensaje","innerHTML","<span style='color:blue;'>Todo correcto...Fabricante introducido, rellena los datos del formulario e introduce otro!</span>");
		  xajax_muestra_formulario();  //la llamada a la función
  	 }
Podría ser que no me funcione porqué la función muestra_formulario() me tiene que retornar un valor y cuando hago la llamada no la igualo a ninguna variable?? he probado a hacer $var=muestra_formulario() pero me sigue sin funcionar, probablemente porqué $var es lo que tendría que retornar, pero como está dentro de la otra función retorno el valor de la otra...alguna idea??

Última edición por Kilofafeure; 24/03/2008 a las 06:22 Razón: Porqué he visto el posible error
  #4 (permalink)  
Antiguo 24/03/2008, 08:45
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema con Xajax al recargar formulario

Al final he encontrado la solución, que de hecho es la más lógica, creía que ya la había probado pero resulta que no...

Código HTML:
<TR>
<TD>
<input type="button" value="Guardar" onClick="xajax_procesar_formulario(xajax.getFormValues(\'formIMFab\'));xajax_muestra_formulario();"/>
<INPUT type="reset" value="Limpiar" name="Limpiar" onClick="ponerfoco(0,0)">
</TD>
</TR> 
  #5 (permalink)  
Antiguo 24/03/2008, 11:12
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema con Xajax al recargar formulario

Pero ahora ha surgido otro problema, cuando recargo el formulario HTML el código que tengo en en PHP que tengo insertado dentro no funciona y no se me muestran los SELECTS, es decir, no me hace el acceso a la BD de donde cargo la lista que quiero mostrar, me muestra el SELECT en blanco...alguna idea?? La primera vez que cargo las páginas los SELECTS se me muestran correctamente.

Código HTML:
<SELECT NAME="Distribuidor" SIZE="1">
		<?php include ("../php/lista/listadistribuidor.php");?>
</SELECT> 
listadistribuidor.php

Código PHP:
<?php
?>
<option selected value="">&nbsp;</option> //la opcion por defecto esta
<?php
       $tabladistr 
mysql_query("SELECT * FROM distribuidores");
      while (
$registrodistr mysql_fetch_array($tabladistr)){
         
?>
        <option value="<?php echo $registrodistr["Id_Distribuidor"]; ?>"> <?php echo $registrodistr["NombreDistr"];?></option>
        <?php
       
}
mysql_free_result($tabladistr);
?>

Última edición por Kilofafeure; 24/03/2008 a las 12:08
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




La zona horaria es GMT -6. Ahora son las 19:55.