Foro

problema validacion php

0
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.