Comunidad de diseño web y desarrollo en internet online

buscar el ultimo reporte de exixtencia de un producto

Citar            
MensajeEscrito el 02 Oct 2011 05:25 am
buenas, estoy aprendiendo un poco de php y necesito saber como puedo buscar en una tabla el valor de la existencia acual de un producto para sumarle una entrada y actualizar a el nuevo valor de existencia.

tengo:

fecha, producto, entrada, salida, exixtencia

mi objetivo es poder condicionar una consulta para que me entregue el valor de la existencia actual, y asi poder sumarle o restarle lo que haga falta en el proximo movimiento de ese producto.

cualquier idea les agradesco.

Por lf_mm

4 de clabLevel



 

msie
Citar            
MensajeEscrito el 02 Oct 2011 09:57 am
En teoria siempre tendras el valor actual del producto puesto que cuando sumas o restas un valor a la existencia, es la existencia actual a no ser que estes copiando las filas con un valor diferente no se si me explico bien.

a esa tabla le falta , en mi opinion, un idProducto, o una clave primaria que distinga a cada producto de manera unica, supondre que dos productos no pueden tener el mismo nombre

la consulta quedaria

SELECT existencia
FROM tabla_productos
WHERE producto = '$NombreProducto';

luego modificas el dato sumando o restando y lo vuelves a introducir en la base de datos con
UPDATE tabla_productos
SET existencia = $nuevaExistencia
WHERE producto = '$nombreProducto'

ya te digo que asumo que dos productos no pueden tener el mismo nombre y utilizo producto como clave primaria pero esto en general no es asi , por lo que yo utilizaria una id_producto para identificar de forma inequivoca cada producto

un saludo.

Por bray

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Oct 2011 03:43 pm
hola, bien el problema es que en la tabla se guarda los diferentes movimientos de un producto, donde el ultimo movimiento esta dado por su correspondiente fecha, por lo tanto si tengo en la misma tabla el mismo producto varias veces, lo que desearia es filtrar la tabla de tal manera que solo muestre los registros del producto en cuestion y que este ordenada por fecha ya sea ascendente o descendente, para luego tomar el primer o el ultimo registro de esa consulta.

por otro lado con tu respuesta se me viene a la cabeza manejas la existencia en una tabla diferente. ya sabria como hacer eso, sin embargo si me puedes aportar algo para lo que explique arriba te agradeceria.

Por lf_mm

4 de clabLevel



 

msie8
Citar            
MensajeEscrito el 02 Oct 2011 04:14 pm
ok entonces es lo que te he dicho de que tienes varias copias del mismo producto en la tabla, es decir tienes un fila por fecha

para identificar el producto te sigue faltando una clave primaria clara porque varios productos pueden tener el mismo nombre pero no ser el mismo producto, sigo pensando que te falta una columna id_producto que te facilitaria mucho el trabajo o bien establecer el nombre del producto como UNIQUE en la tabla de forma que no pueda haber dos iguales.

una vez hecho esto para obtener el ultimo reporte solo necesitas ordenar por fechas los resultados y tomar la primera de ellas
que seria la mas reciente

es decir

SELECT *
FROM tabla_productos
WHERE producto ='$nombreProducto'
ORDER BY FECHA DESC

posteriormente solo tienes que tomar la primera linea de la tabla y sera la que tenga la mayor fecha.

Por bray

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Oct 2011 02:50 pm
hola, gracias por la linea, pero ahora como tomo la primera linea de esa consulta, que codigo debo usar, ahi esta mi duda

Por lf_mm

4 de clabLevel



 

msie8
Citar            
MensajeEscrito el 03 Oct 2011 03:24 pm
intente algo con lo que me diste pero me sale error de sintaxis:

Parse error: syntax error, unexpected T_STRING in /home/ocpclubc/public_html/seguro/agrepuntos.php on line 17

17 $consulta=select * from puntos where tarjeta_No ='$tarjeta_No' order by fecha desc;
18 $puntosact=mysql_result($consulta,0,"puntos_acum");
18 $acum=$puntosact+$puntos;
19 mysql_query("INSERT INTO puntos(fecha,tarjeta_No,puntos,puntos_acum) VALUES
($fecha,$tarjetano,$puntos,$acum)" );

te explico un poco para que no te confundas

puntos es la tabla que tengo
tarjeta_No es el campo de mi producto es decir un numero de tarjeta para cada cliente que tengo
puntos_acum es la existencia que necesito extraer para sumarle la nueva entrada de puntos, pero quiero que se guarde como un nuevo registro, no cambiar el que acabo de extraer para que me quede el registro de las operaciones realizadas.

con el codigo que use en teoria deberia funcionar, pero como no se mucho de la sintaxis php estoy teniendo problemas.

agradesco tu ayuda

Por lf_mm

4 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Oct 2011 10:00 am
Hombre , es que la consulta la tienes que poner entere comillas.
$consulta="select * from puntos where tarjeta_No ='$tarjeta_No' order by fecha desc";


si quieres insertarlo como un nuevo registro la fecha debe pertenecer a la clave primaria de la tabla , y lo unico que debes hacer es usar INSERT INTO, tras leer los datos de esta consulta.

Por bray

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2011 08:18 pm
hola, he estado estudiando mas y he conseguido obtener algunos resultados, pero tengo algunos problemas, el codigo que estoy usando es:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>
<?php
$fecha=$_POST['fecha'];
$tarjetano=$_POST['tarjeta_No'];
$puntos=$_POST['puntos'];
$establecimiento=$_POST['establecimiento'];
$tipomovi="Entrada";
$user="ocpclubc_raul";
$password="raul1010";
$link=mysql_connect ("localhost", $user, $password) or die ("<center>No se puede conectar con la base de datos\n</center>\n");
mysql_connect ("localhost", $user, $password) or die ("<center>No se puede conectar con la base de datos\n</center>\n");
$db=mysql_select_db("ocpclubc_puntos");
mysql_select_db("ocpclubc_puntos");
$consulta = mysql_query("SELECT puntos_acum FROM puntos WHERE tarjeta_No = '$tarjetano'");
$fetch = mysql_fetch_array($consulta);
$puntosact=$fetch['puntos_acum'];
echo $puntosact ;
$acum=$puntosact+$puntos;

mysql_query("UPDATE puntos SET fecha_act=('$fecha'), puntos_acum=('$acum') WHERE tarjeta_No=('$tarjeta_No')", $link );

mysql_query("INSERT INTO movimiento(fecha,tarjeta_No,tipo_movi,cantidad,establecimiento) VALUES($fecha,$tarjetano,$tipomovi,$puntos,$establecimiento)" );

?>
<body>
<form id="form1" name="form1" method="post" action="">
<table width="300" border="1">
<tr>
<td width="127">Fecha de Compra</td>
<td width="157"><label>
<input type="text" name="fecha" id="fecha" />
</label></td>
</tr>
<tr>
<td>No. Tarjeta</td>
<td><label>
<input type="text" name="tarjeta_No" id="tarjeta_No" />
</label></td>
</tr>
<tr>
<td>Establecimiento</td>
<td><label>
<input type="text" name="establecimiento" id="establecimiento" />
</label></td>
</tr>
<tr>
<td>Puntos</td>
<td><label>
<input type="text" name="puntos" id="puntos" />
</label></td>
</tr>
<tr>
<th colspan="2"><label>
<input type="submit" name="guardar" id="guardar" value="Guardar" />
</label></th>
</tr>
</table>
</form>
</body>
</html>

como ves estoy tratando de guardar los datos en una tabla llamada movimiento, en la cual no me guarda, sin embargo si uso el inser into en la tabla puntos si me guarda, por otro lado tengo el problema de la actualizacion en la tabla puntos, es decir que no me esta actualizando los datos.

te agradeceria si revisas el codigo y me indicas en que estoy fallando.

Por lf_mm

4 de clabLevel



 

msie8
Citar            
MensajeEscrito el 05 Oct 2011 08:58 pm
primero , tienes dos veces el código para conectar a la BD y dos veces el codigo para elegir una base de datos

Código PHP :

$link=mysql_connect ("localhost", $user, $password) or die ("<center>No se puede conectar con la base de datos\n</center>\n");
mysql_connect ("localhost", $user, $password) or die ("<center>No se puede conectar con la base de datos\n</center>\n");
$db=mysql_select_db("ocpclubc_puntos");
mysql_select_db("ocpclubc_puntos"); 


y despues estas intentando actualizar una tabla sin comprobar si el dato existe lo que conlleva que si el dato no existe, la tabla no se va a actualizar puesto que el Where no se cumplira

por otro lado intentas insertar datos en una tabla pero si no me dices cual es la clave primaria, no se por que los datos no se guardan , pero tengo el presentimiento de que probablemente sea porque tienes como clave primaria algun valor que se repite como por ejemplo "tarjetaNo" y para lo que quieres hacer la fecha tieen qeu ser parte de la clave primaria.

Por bray

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Oct 2011 01:58 am
hola, te ci¡uento que ya he solucionado los problemas con mis formularios, ahora estoy empezando a crear modulos de consulta de datos y quisiera que me ayudes con lo siguiente

quiero mostrar el contenido de un campo de una tabla en un listbox, me ayudaria si tienes algunos archovos de ejemplo completos que realicen esa tarea, he encontrado por la red pero creo que son fragmentos muy especificos y no logro acomodarlos en mis paginas, gracias por la ayuda que me puedas prestar.

Por lf_mm

4 de clabLevel



 

msie8
Citar            
MensajeEscrito el 15 Oct 2011 02:42 am
No quiero ser pesado, pero les pido que utilicen los botones de código del editor para que se lean y entiendan mejor. Ahora If_mm lo que pretendes es algo como esto

Código PHP :

<select name="lista">
<?php
$sql = "cadena SQL";
$resultado = mysql_query($sql, $enlace_bd);
while($Datos = mysql_fetch_array($resultado)){
echo "<option value='$Datos[campo1]'>$Datos[campo2]</option>";
}
?>
</select>


Nota que, todo el código php va dentro del objeto select y campo1 serían los datos a pasar por el formulario, mientras que campo2 el valor que el usuario ve. Claro este código neceita refinarse, pero es una idea básica, espero te sirva

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 15 Oct 2011 03:03 am
hola, no entiendo lo que quieres decir con los botones de codigo del editor, pero la ayuda me sirvio, ya logre acomodar el codigo y me funciona, ahora voy a preguntarte como podria segun el item que seleccionen de la lista que acabo de mostrar, mostrar otros datos de la misma tabla.

he leido que se puede cargar en una capa.

Por lf_mm

4 de clabLevel



 

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.