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.
