miren tengo un problema con un formulario que estoy validando con ajax, e ingresar los datos a la BD, usando mysqli en ves de usar mysql, y tambien estoy usando procedimientos almacenados en mi base de datos..
Código PHP :
<?php // incluimos la clase @require_once("xajax/xajax_core/xajax.inc.php"); // Incluimos las funciones generales @require_once("modppal.php"); // Creamos una instancia al objeto XAJAX: $xajax = new xajax(); // valida el campo pasado por parametro function FormManage($form,$sCampo) { $sCadena = $form["txt$sCampo"]; $sCampo2 = (strpos($sCampo,'2') ? substr($sCampo,0,(strlen(trim($sCampo))-1)) : ''); // iniciamos el llamado a las validaciones segun sea el caso if (empty($sCadena)) $sMsjGlobal = 'El campo <b>'. (!empty($sCampo2) ? "Confirme $sCampo2" : $sCampo) . '</b> es obligatorio, no puede dejarlo en blanco.'; else { if ($sCampo == 'Nombres' || $sCampo == 'Apellidos') $sMsjGlobal = NotIsCorrect($sCadena,$sCampo); elseif ($sCampo == 'CI') $sMsjGlobal = NotIsCI($sCadena); elseif ($sCampo == 'Email') $sMsjGlobal = NotIsEmail($sCadena); elseif ($sCampo == 'Password') $sMsjGlobal = NotIsPassword($sCadena); elseif (!empty($sCampo2)) $sMsjGlobal = NotIsEqua($sCadena,$form["txt$sCampo2"],$sCampo2); } // asignamos el valor que determinara la imagen y el mensaje a mostrar por campo $sImg = (!(!$sMsjGlobal) ? 'incorrecto' : 'correcto'); // asignamos el codigo html para los mensajes $sHTMLMsjLocal = "<div class='DivLocal'><img border='0' src='imagenes/$sImg.png' /> valor $sImg</div>"; $sHTMLMsjGlobal = "<div class='DivGlobal'><img border='0' src='imagenes/warning.png' /> $sMsjGlobal</div>"; // creamos una nueva instancia para generar la respuesta con ajax (xajaxResponse). $objRespuesta = new xajaxResponse(); // Actualizamos los div $objRespuesta -> assign("div$sCampo",'innerHTML', $sHTMLMsjLocal); $objRespuesta -> assign('DivGlobal','innerHTML', (!(!$sMsjGlobal) ? $sHTMLMsjGlobal : '')); // retornamos el objeto return $objRespuesta; } function FormProcess($form) { // creamos una nueva instancia para generar la respuesta con ajax $objRespuesta = new xajaxResponse(); // si los campos estan correctos if ( NotIsCorrect($form['txtNombres'],'Nombres') != false || NotIsCorrect($form['txtApellidos'],'Apellidos') != false || NotIsCI($form['txtCI']) != false || NotIsEmail($form['txtEmail']) != false || NotIsPassword($form['txtPassword']) != false || NotIsEqua($form['txtEmail'],$form['txtEmail2'],'E-mal') != false || NotIsEqua($form['txtPassword'],$form['txtPassword2'],'Password') != false ) $objRespuesta -> alert('¡El formulario debe estar perfectamente validado!'); else { $conexion= mysqli_connect("localhost","root","","regis"); $categoria= $form['txtNombres']; if (empty($_POST['id_categoria'])) { $sql = "call alta_usuario(0,'$categoria')"; }else{ $id_categoria = $_POST['id_categoria']; $sql = "call modificar_categoria($id_categoria,'$categoria')"; } $consulta=mysqli_query($conexion,$sql); if ($consulta) { mysqli_free_result($consulta); mysqli_close($conexion); header("location:r.php"); } /* aqui iria el proceso que almacena los datos en la Base de Datos, recuerda que los datos deben de ser filtrados por seguridad script ... script .... script ..... */ /* luego de que has hecho lo debido con los datos, informamos al usuario del resultado podemos hacerlo usando un DIV o bien, un alert de JavaScript */ $objRespuesta -> alert('¡Datos almacenados correctamente!'); // limpiamos los campos $ArrayCampos = array('Nombres','Apellidos','CI','Email','Email2','Password','Password2'); //$NumCampos = count($ArrayCampos); for ($i=0; $i<7; $i++)//no hace falta usar count puesto que sabemos cuantos campos con.. { $objRespuesta -> clear("txt$ArrayCampos[$i]",'value') //limpiando los txt -> clear("div$ArrayCampos[$i]",'innerHTML'); //limpiando los div } } return $objRespuesta; } $xajax -> registerFunction('FormManage'); // gestiona las validaciones del formulario $xajax -> registerFunction('FormProcess'); // procesa los datos del formulario //Le indicamos al objeto xajax que procese la peticion / el pedido $xajax -> processRequest(); ?> <html> <head> <title>Validaciones con XAJAX</title> <link href="estilo.css" rel="stylesheet" /> <?php //se le dice que Incluya el JavaScript generado desde XAJAX $xajax -> printJavascript('xajax/'); ?> </head> <body onload='document.form1.txtNombres.focus()'> <form name='form1' id='form1' action='javascript:void(null);' onsubmit="xajax_FormProcess(xajax.getFormValues('form1'))" method="post"> <div class='DivTable'> <table border='0'> <tr><td colspan='3'><div id='DivGlobal'></div><hr/></td></tr> <tr> <td align='right' width='220px' class='Campos'>Nombres:</td> <td width='200px'> <input tabindex='1' type='text' id='txtNombres' name='txtNombres' size='30' maxlength='40' onkeyup="xajax_FormManage(xajax.getFormValues('form1'),'Nombres')" /> </td> <td align='left' width='300px'><div id='divNombres'></div></td> </tr> <tr> <td align='right' class='Campos'>Apellidos:</td> <td align='left'> <input tabindex='2' type='text' id='txtApellidos' name='txtApellidos' size='30' maxlength='40' onkeyup="xajax_FormManage(xajax.getFormValues('form1'),'Apellidos')" /> </td> <td><div id='divApellidos'></div></td> </tr> <tr> <td align='right' width='220px' class='Campos'>Cédula de Identidad:</td> <td> <input tabindex='3' type='text' id='txtCI' name='txtCI' size='10' maxlength='8' onkeyup="xajax_FormManage(xajax.getFormValues('form1'),'CI')" /> </td> <td align='left' width='300px'><div id='divCI'></div></td> </tr> <tr> <td align='right' class='Campos'>E-mail:</td> <td align='left'> <input tabindex='4' type='text' id='txtEmail' name='txtEmail' size='30' maxlength='100' onkeyup="xajax_FormManage(xajax.getFormValues('form1'),'Email')" /> </td> <td><div id='divEmail'></div></td> </tr> <tr> <td align='right' class='Campos'>Confirme Email:</td> <td align='left'> <input tabindex='5' type='text' id='txtEmail2' name='txtEmail2' size='30' maxlength='100' onkeyup="xajax_FormManage(xajax.getFormValues('form1'),'Email2')" /> </td> <td><div id='divEmail2'></div></td> </tr> <tr> <td align='right' width='220px' class='Campos'>Password:</td> <td width='200px'> <input tabindex='6' type='password' id='txtPassword' name='txtPassword' size='25' maxlength='25' onkeyup="xajax_FormManage(xajax.getFormValues('form1'),'Password')" /> </td> <td align='left' width='300px'><div id='divPassword'></div></td> </tr> <tr> <td align='right' class='Campos'>Confirme Password:</td> <td align='left'> <input tabindex='7' type='password' id='txtPassword2' name='txtPassword2' size='25' maxlength='25' onkeyup="xajax_FormManage(xajax.getFormValues('form1'),'Password2')" /> </td> <td><div id='divPassword2'></div></td> </tr> <tr><td align='center' colspan='3'><hr/><input type='submit' tabindex='8' value='Guardar los datos'></td></tr> </table> </div> <br/><div style='text-align:center;'><img border='0' src='imagenes/xajax_powered.png' /></div> </form> </body> </html>
el problema esta en que si guarda los datos a la base de datos, pero no me direcciona a la otra pagina...
Código PHP :
$conexion= mysqli_connect("localhost","root","","regis"); $categoria= $form['txtNombres']; if (empty($_POST['id_categoria'])) { $sql = "call alta_usuario(0,'$categoria')"; }else{ $id_categoria = $_POST['id_categoria']; $sql = "call modificar_categoria($id_categoria,'$categoria')"; } $consulta=mysqli_query($conexion,$sql); if ($consulta) { mysqli_free_result($consulta); mysqli_close($conexion); header("location:r.php"); }ques es el header("location:r.php"); no intiendo que esta mal, en el $sql ="call alta_usuario()" esta parte estoy llamando a mi procedimiento almacenado, de la base de datos..
un saludo..!