problema con formulario y envio de datos
primero agradecer por este gran tutorial y ayuda que en mi caso me a ayudado en mi aprendizaje, siguiendo algunos pasos quería mostrarle la duda que tengo:
quiero ingresar unos registros en una base de datos teniendo en cuenta estos formularios, mi base de datos se llama abastos y la tabla donde quiero ingresar los datos se llama categoria.
he creado la siguiente estructura de datos.
la idea es poder ingresar los datos en la base de datos, y pues he intentado de varias formas pero pues nada salen errores o no me inserta nada asi que solicito su ayuda.
gracias
este el codigo que tengo.
[b]submitform.js[/b]
Ext.ns('com.quizzpot.tutorial'); Ext.BLANK_IMAGE_URL = 'ext-3.2.1/resources/images/default/s.gif'; com.quizzpot.tutorial.SubmitFormTutorial = { init: function(){ this.form = new Ext.form.FormPanel({ //standardSubmit: true, // traditional submit url: 'submitform.php', border:false, labelWidth: 80, defaults: { xtype:'textfield', width: 150 }, items:[ {fieldLabel:'Nombre Categoria',name:'nombre_categoria', allowBlank:false}, {xtype:'numberfield',fieldLabel:'codigo categoria',name:'idcategoria'}, ] }); this.win = new Ext.Window({ id:'mywin', title: 'Nueva Categoria', bodyStyle: 'padding:10px;background-color:#fff;', width:300, height:270, items:[this.form], buttons: [{text:'Save',handler:this.sendData,scope:this},{text:'Cancel'}] }); this.win.show(); }, sendData: function(){ //submit the form var mask = new Ext.LoadMask(Ext.get('mywin'), {msg:'Saving. Please wait...'}); mask.show(); this.form.getForm().submit({ method: 'put', params: { extraParam: 'Extra params!', param2: 'Param 2' }, success: function(form,action){ mask.hide(); Ext.Msg.alert('Success',action.result.msg); }, failure: function(form,action){ mask.hide(); switch (action.failureType) { case Ext.form.Action.CLIENT_INVALID: Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values'); break; case Ext.form.Action.CONNECT_FAILURE: Ext.Msg.alert('Failure', 'Ajax communication failed'); break; case Ext.form.Action.SERVER_INVALID: Ext.Msg.alert('Failure', action.result.msg); break; default: Ext.Msg.alert('Failure',action.result.msg); } } }); } } Ext.onReady(com.quizzpot.tutorial.SubmitFormTutorial.init,com.quizzpot.tutorial.SubmitFormTutorial);[b]submitform.php[/b]
<?php include_once("conexion/conexion.php"); header("Content-Type: text/plain"); // Support for the PUT method $_PUT = array(); if($_SERVER['REQUEST_METHOD'] == 'PUT') { parse_str(file_get_contents('php://input'), $_PUT); } $nombre_categoria = $_PUT['nombre_categoria']; $idcategoria = $_PUT['idcategoria']; //save your data here //in your data base //or whatever you want ;) if(rand(0,1)===0){ //header('HTTP/1.1 201 Created success'); $info = array( 'success' => true, 'msg' => 'The record "'.$nombre_categoria.'" has been saved succesfully' ); }else{ //header('HTTP/1.1 501 Error saving the record'); $info = array( 'success' => false, 'msg' => 'There was an error saving the record' ); } echo json_encode($info); ?>[b]conexion.php[/b]
<?php class conexion{ var $conect; function conexion(){ } function getCon(){ return $this->conect; } function conectar() { if(!($con=@mysql_connect("localhost","root","123"))) { echo"Error al conectar a la base de datos"; exit(); } if (!@mysql_select_db("abastos",$con)) { echo "error al seleccionar la base de datos"; exit(); } $this->conect=$con; return true; } } ?>
no se si trabajas con mysql o no pero te voy a colocar aqui una estructura basica de como lo hago yo por si te sirve:
una ventana con un formulario:
var form = new Ext.FormPanel({ url : 'submit.php', items : [ { xtype : 'textfield', id : 'midato1', fieldLabel : 'Mi dato 1' }, { xtype : 'textfield', id : 'midato2', fieldLabel : 'Mi dato 2' } ] }); var win = new Ext.Window({ width : 200, height : 200, items : [ form ], fbar : [ { xtype : 'button', listeners : { click : function(){ form.getForm().submit({ method : 'POST', waitTitle : 'Conectando', waitMsg : 'Enviando datos...', params : { parametroX : 'cualquier cosa adicional que quieras enviar' }, success : function(){ //aqui puedes colocar lo que desees que haga despues de //enviar correctamente win.close(); }, failure : function(form, action){ if (action.failureType == 'server'){ respuesta = Ext.util.JSON.decode(action.response.responseText); Ext.MessageBox.show({ title : 'Error', msg : respuesta.errors.razon,//esto consume por el lado del php en un formato asi : echo "{success:false, errors: { razon: 'tu mensaje de error' }}"; buttons : Ext.MessageBox.OK, icon : Ext.MessageBox.ERROR }); } else { //aqui se ejecuta por ejemplo si tienes campos con allowBlank a false Ext.MessageBox.show({ title : 'Error', msg : 'Faltan datos!', buttons : Ext.MessageBox.OK, icon : Ext.MessageBox.ERROR }); } } }); } } } ] });en mi Php, tengo las cosas separadas asi: un archivo llamado conexion.php:
<?php mysql_connect("192.168.0.121","root","root") or die ("No se pudo conectar con el servidor"); mysql_select_db("bdsistema") or falla("servidor", mysql_errno()); ?>al cual llamo desde mi archivo php final:
<?php require_once("conexion.php");//aqui llamo a mi conexion require_once("error.php");//maneja los mensajes de error require_once("funciones.php");//utilidades del sistema isLogeado(); $operacion = $_POST['operacion'];//como uso un mismo archivo para agregar, editar , eliminar y consultar le paso el parametro 'operacion' desde el script de mi modulo isPermiso($operacion,'sistema');//estas funciones las creo en un php llamado funciones, porque normalmente las voy a ocupar en mas de una ocasion $base = "bdsistema.parametros_almacen"; switch ($operacion){ case "agregar" : agregar(); break; case "editar" : editar(); break; case "eliminar" : eliminar(); break; case "consultar" : consultar(); break; } function agregar(){ global $base; $midato1 = $_POST['midato1']; $midato2 = $_POST['midato2']; $sql = "SELECT * FROM $base WHERE midato1 = '$midato1'"; $rs = mysql_query($sql) or falla("servidor", mysql_errno()); $sql = "INSERT INTO $base (midato1,midato2) VALUES ('$midato1','$midato2')"; $rs = mysql_query($sql) or falla("servidor", mysql_errno()); echo "{success:true}"; } function editar(){ global $base; $id = $_POST['id_interno']; $midato1 = $_POST['midato1']; $midato2 = $_POST['midato2']; $sql = "UPDATE $base SET midato1 = '$midato1',midato2 = '$midato2' WHERE id_interno=$id"; $rs = mysql_query($sql) or falla("servidor", mysql_errno()); echo '{success: true}'; } function eliminar(){ global $base; $id = $_POST['indice']; $sql = "DELETE FROM $base WHERE id_interno = $id"; $rs = mysql_query($sql) or falla("servidor", mysql_errno()); echo '{success: true}'; } function consultar(){ global $base; $sql="SELECT * FROM $base ORDER BY id_interno"; $arr = array(); $rs = mysql_query($sql) or falla("servidor", mysql_errno()); while($obj = mysql_fetch_object($rs)){ $arr[] = $obj; } Echo '{success:true,datos:'.json_encode($arr).'}'; } ?>espero te sea de utilidad
ola quiero agradecer a [b] tokkaido[/b] por su ayuda tenes los archivos una estructura que me gusta mucho. pero fíjate que solucione el ejemplo de la forma fácil.
<?php header("Content-Type: text/plain"); // Support for the PUT method $_PUT = array(); if($_SERVER['REQUEST_METHOD'] == 'PUT') { parse_str(file_get_contents('php://input'), $_PUT); } $idcategoria = $_PUT['idcategoria']; $nombre_categoria = $_PUT['nombre_categoria']; if(!($con=@mysql_connect("localhost","root","123"))) { echo"Error al conectar a la base de datos"; } if (!@mysql_select_db("abastos",$con)) { echo "error al seleccionar la base de datos"; } $query = "INSERT INTO categoria (idcategoria,nombre_categoria) VALUES ('$idcategoria','$nombre_categoria')"; mysql_query($query,$con); if(rand(0,1)===0){ //header('HTTP/1.1 201 Created success'); $info = array( 'success' => true, 'msg' => 'Guardado "'.$nombre_categoria.'" se a guardado correctamente' ); }else{ //header('HTTP/1.1 501 Error saving the record'); $info = array( 'success' => false, 'msg' => 'no se a podido guardar correctamente' ); } echo json_encode($info); ?>realice la conexion a la base de datos luego realice el INSERT para poder ingresar los registros a la base de datos, claro que lo que queria era evitar esto si no solo realizar la llamada de un archivo conexion.php y un archivo clases.php que se encargada de hacer los insertar, modificar y consultar y que eso lo llamara mi formulario js y el realizara como de una forma mas organizada pero pues no pude al final y me toco de esta forma. si de todos modos me podes colaborar en este sentido tal ves mostrándome como seria en un ejemplo sencillo te lo agradecería. de todos modos dejo mi solución.
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.