problema validacion php
tengo el siguiente formulario,
lo que quiero es que cada vez que yo ingrese un nuevo dato el valide si la $fecha y la $hora de la tabla historial son iguales a la que trae el formulario entonces inserte en una tabla precios y haga un update en la tabla historial de ese producto si no haga un insert en la tabla precios y un insert en la tabla historial.
tengo el siguiente codigo
Archivo PHP
<?php //$conet= mysql_connect("localhost","root","123"); //mysql_select_db("abastos", $conet); include_once("../../conexion/conexion.php"); $idprecio_producto = $_POST['idprecio_producto']; $precio = $_POST['precio']; $unidad_idunidad = $_POST['idunidad']; $locales_idlocales = $_POST['idlocales']; $locales_central_idcentral = $_POST['idcentral']; $producto_idproducto = $_POST['idproducto']; $producto_categoria_idcategoria = $_POST['idcategoria']; $fecha = $_POST['fecha']; $hora = $_POST['hora']; $control=0; $sql = "SELECT * FROM precio_producto WHERE idprecio_producto = '$idprecio_producto'";//2 $rs = mysql_query($sql); if (mysql_num_rows($rs) > $control) {//3 echo "{success:false, errors: { razon: 'ya existe un Ingreso con ese Codigo' }}";; } else { $sql = "INSERT INTO precio_producto ( idprecio_producto, precio, unidad_idunidad, locales_idlocales, locales_central_idcentral, producto_idproducto, producto_categoria_idcategoria, hora, fecha ) VALUES ('$idprecio_producto','$precio','$unidad_idunidad','$locales_idlocales','$locales_central_idcentral','$producto_idproducto','$producto_categoria_idcategoria','$hora','$fecha')";//4 $rs = mysql_query($sql); $valores= "SELECT MAX(precio) AS max, MIN(precio) AS min, Avg(precio) AS pro, locales_central_idcentral, producto_idproducto, producto_categoria_idcategoria, hora, fecha FROM precio_producto WHERE producto_idproducto='$producto_idproducto' && locales_central_idcentral='$locales_central_idcentral' "; $maxmin = mysql_fetch_array(mysql_query($valores)); $precio_maximo= $maxmin[0]; $precio_minimo= $maxmin[1]; $precio_promedio= $maxmin[2]; $idcentral= $maxmin[3]; $idproducto= $maxmin[4]; $idcategoria= $maxmin[5]; $hora= $maxmin[6]; $fecha= $maxmin[7]; $valores1= "SELECT hora, idhistorial_precios FROM historial_precios WHERE idproducto='$producto_idproducto' && idcentral='$locales_central_idcentral'"; $historial = mysql_fetch_array(mysql_query($valores1)); $hora_historial = $historial[0]; $idhistorial = $historial[1]; if($hora != $hora_historial ){ $sql = "INSERT INTO historial_precios (idproducto, idcentral, precio_maximo, precio_minimo, precio_promedio, fecha, hora, idcategoria) VALUES ('$idproducto','$idcentral','$precio_maximo','$precio_minimo','$precio_promedio','$fecha','$hora','$idcategoria')";//4 $rs = mysql_query($sql); }else{ $sql = "UPDATE historial_precios SET idproducto='$idproducto', idcentral='$idcentral', precio_maximo='$precio_maximo', precio_minimo='$precio_minimo', precio_promedio='$precio_promedio', fecha='$fecha', hora='$hora', idcategoria='$idcategoria' WHERE idhistorial_precios='$idhistorial' ";//4 $rs = mysql_query($sql); } echo "{success:true, grabado: { razon: 'Registro grabado correctamente' }}";; } ?>formulario JS
Ext.ns('com.quizzpot.tutorial'); Ext.BLANK_IMAGE_URL = '../../Ext/resources/images/default/s.gif'; com.quizzpot.tutorial.SubmitFormTutorial = { init: function(){ this.form = new Ext.form.FormPanel({ //standardSubmit: true, // traditional submit url: 'ingreso_precio.php', border:false, labelWidth: 160, defaults: { xtype:'textfield', width: 250 }, items:[ { xtype:'numberfield', fieldLabel:'Codigo Ingreso', name:'idprecio_producto', allowBlank:false }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 15 }, { xtype:'datefield', fieldLabel: 'Fecha', name: 'fecha', emptyText:'Insertar fecha...', format:'Y-m-d', editable :false, allowBlank:false }, { xtype:'timefield', fieldLabel: 'Hora', name: 'hora', format:'H:i', emptyText:'Insertar Hora...', editable :false, allowBlank:false }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 15 }, { xtype:'combo', //id :'idcentral', name: 'idcentral', fieldLabel:'Central', allowBlank:false, emptyText: 'Seleccione la central...', //width:100, editable :false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'idcentral',//verdadero valor del combo displayField : 'nombre_central',//valor mostrado al usuario hiddenName : 'idcentral',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_central.php', //la pagina de la cual tomaras los datos pa cargar fields: ['idcentral', 'nombre_central'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'idcentral', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente }) /*listeners : { select : function(){ //qui puedes colocar algo que se ejucute cuando el usuario seleccione un item } }*/ }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 5 }, { xtype:'combo', //id :'idcentral', name: 'idlocales', fieldLabel:'Local', allowBlank:false, emptyText: 'Seleccione el local...', //width:100, editable :false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'idlocales',//verdadero valor del combo displayField : 'nombre_local',//valor mostrado al usuario hiddenName : 'idlocales',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_locales.php', //la pagina de la cual tomaras los datos pa cargar fields: ['idlocales', 'nombre_local'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'idlocales', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente }) /*listeners : { select : function(){ //qui puedes colocar algo que se ejucute cuando el usuario seleccione un item } }*/ }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 15 }, { xtype: 'combo', // id : 'idcategoria', name: 'idcategoria', fieldLabel: 'Categoria', allowBlank:false, emptyText: 'Seleccione la Categoria...', /// width: 100, editable : false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'idcategoria',//verdadero valor del combo displayField : 'nombre_categoria',//valor mostrado al usuario hiddenName : 'idcategoria',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_categoria.php', //la pagina de la cual tomaras los datos pa cargar fields: ['idcategoria', 'nombre_categoria'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'idcategoria', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente }) //listeners : { // select : function(){ //qui puedes colocar algo que se ejucute cuando el usuario seleccione un item // } // } }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 5 }, { xtype: 'combo', // id : 'idcategoria', name: 'idproducto', fieldLabel: 'Producto', allowBlank:false, emptyText: 'Seleccione el producto...', /// width: 100, editable : false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'idproducto',//verdadero valor del combo displayField : 'nombre_producto',//valor mostrado al usuario hiddenName : 'idproducto',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_producto.php', //la pagina de la cual tomaras los datos pa cargar fields: ['idproducto', 'nombre_producto'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'idproducto', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente }) //listeners : { // select : function(){ //qui puedes colocar algo que se ejucute cuando el usuario seleccione un item // } // } }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 15 }, { xtype:'numberfield', fieldLabel:'Precio', name:'precio', allowBlank:false }, { xtype: 'combo', // id : 'idcategoria', name: 'idunidad', fieldLabel: 'Unidad', allowBlank:false, emptyText: 'Seleccione la Unidad...', /// width: 100, editable : false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'idunidad',//verdadero valor del combo displayField : 'nombre_unidad',//valor mostrado al usuario hiddenName : 'idunidad',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'local',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_unidad.php', //la pagina de la cual tomaras los datos pa cargar fields: ['idunidad', 'nombre_unidad'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'iduniad', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente }) //listeners : { // select : function(){ //qui puedes colocar algo que se ejucute cuando el usuario seleccione un item // } // } } ] }); this.win = new Ext.Window({ id:'mywin', title: 'ingreso de precios', bodyStyle: 'padding:10px;background-color:#fff;', width:800, height:500, maximizable:true, items:[this.form], buttons: [{text:'Guardar',handler:this.sendData,scope:this},{text:'Limpiar',handler:this.limpiar,scope:this}] }); this.win.show(); }, limpiar: function(){ this.form.getForm().reset() }, sendData: function(){ //submit the form var mask = new Ext.LoadMask(Ext.get('mywin'), {msg:'Guardando. Un momento por favor...'}); mask.show(); this.form.getForm().submit({ method: 'POST', params: { extraParam: 'enviar' }, success: function(form,action){ mask.hide(); respuesta = Ext.util.JSON.decode(action.response.responseText); Ext.MessageBox.show({ title : 'ingreso', msg : respuesta.grabado.razon, buttons : Ext.MessageBox.OK, icon : Ext.MessageBox.INFO }); form.reset() }, failure: function(form,action){ mask.hide(); if(action.failureType == 'server'){ respuesta = Ext.util.JSON.decode(action.response.responseText); Ext.MessageBox.show({ title : 'Error', msg : respuesta.errors.razon, buttons : Ext.MessageBox.OK, icon : Ext.MessageBox.ERROR }); } } }); } } Ext.onReady(com.quizzpot.tutorial.SubmitFormTutorial.init,com.quizzpot.tutorial.SubmitFormTutorial);
¿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.