Como salvar datos por separado de una consulta

Tengo otro problemilla con mi aplucacion.
Estoy haciendo una página web, un catalogo donde el usuario puede elegir un articulo la cantidad de este articulo y luego otro articulo. Etc...
Y todo tiene que sumarse, primero total por un articulo (cantidad*articulo)y luego total por todos artículos(artículos*artículos)
Pero con los datos de la consulta, solo se como salvar conjunto de los datos de la consulta
y no por separado, para que cada fila va a ser un variable diferente.
Lo que me hace problema.
Acontynuacion envio mi codigo.
Domek
<!--
table.td {
font-size:20px;
margin-left: 10px;
margin-right: 10px;
}
-->
$terminobusqueda = trim ($_POST['terminobusqueda']);
$tipobusqueda = trim($_POST['tipobusqueda']);
$terminobusqueda ="hogar";
echo $terminobusqueda;
@ $db = mysql_pconnect("localhost", "root", "");
if (!$db)
{
echo "Error: No se ha podido conectar a la base de datos. Por favor, prueba de nuevo más tarde.";
exit;
}
mysql_select_db("tienda");
$consulta = "select * from jugetes where grupo = 'jugeteria' ORDER BY 'articulo' ASC ";
$resultado = mysql_query($consulta);
$num_resultados = mysql_num_rows($resultado);
$num_rows = mysql_num_rows($result);
//aqu npego la funccionde una linea para un aray
//aqui acaba la funccion
echo "
<table border="1" cellpadding="8">
";
echo "
<tbody>
<tr>
<h4>
</h4>
<td>IMAGEN
DEL ARTICULO</td>
<td>NR ID. DEL
ARTICULO</td>
<td>NOMBRE DEL ARTICULO</td>
<td>PRECIO</td>
<td>CANTIDAD</td>
<td>Total por
articulo</td>
</tr>
";
for ($i=0; $i <$num_resultados; $i++)
{
$row = mysql_fetch_array($resultado);
if ("grupo") {
echo "
<tr>
";
echo "
<td>".$num_rows;
$title = "\";
echo $title;
echo "
</td>
<td>";
echo stripslashes($row['codigo_nuestro']);
echo "</td>
";
echo "
<h5>
</h5>
<td>";
echo stripslashes($row["articulo"]);
echo "</td>
";
echo "
<td>";
$precio = stripslashes($row["precio_venta"]);
echo $precio . "?</td>
";
?>
<form action="<?php"> method="post" >
<td align="center"><input name="cant" size="5" type="text" />
<input type="hidden" value="Enviar Pedido" />
</td>
</form>
$cant = trim ($_POST['cant']);
$total = stripslashes($row["precio_venta"]) * $cant;
echo "
<td>";
echo $total;
echo "</td>
";
echo "
</tr>
";
} else {
echo "no";
}
}
echo "
</tbody>
</table>
";
?>
imagen\image.jpg
Y sql de la base de datos-.
--
-- Base de datos: `tienda`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `juguetes`
--
CREATE TABLE `jugetes` (
`Codigo_nuestro` bigint(20) NOT NULL,
`codigo_barra` varchar(60) collate utf8_spanish_ci NOT NULL,
`articulo` varchar(40) collate utf8_spanish_ci NOT NULL,
`precio_compra` decimal(4,2) NOT NULL,
`precio_venta` decimal(4,2) NOT NULL,
`cantidad_almacen` int(5) NOT NULL,
`descripcion` text collate utf8_spanish_ci NOT NULL,
`grupo` varchar(60) character set utf8 collate utf8_spanish2_ci NOT NULL,
`fecha` date default NULL,
`imagen` varchar(40) collate utf8_spanish_ci NOT NULL,
PRIMARY KEY (`codigo_nuestro`,`codigo_barra`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
--
-- Volcar la base de datos para la tabla `juguetes`
--
INSERT INTO `jugetes` (`codigo_nuestro`, `codigo_barra`, `articulo`, `precio_compra`, `precio_venta`, `cantidad_almacen`, `descripcion`, `grupo`, `fecha`, `imagen`) VALUES
(2, '3114524045182', 'cartas ruca', '1.29', '2.00', 6, 'comprado en crevillente \r\ncartas ', 'JUGETERIA', '2008-09-10', ''),
(1, '3114524045052', 'cartas barbie', '1.29', '2.00', 6, 'comprado en crevillente \r\cartas ', 'PAPELERIA', '2008-09-10', ''),
Si lo pruebas en navegator y en el formulario que esta añadido a código.php en primer campo pones cantidad 3.
En otro campo también se multiplica por 3 y yo quiero que solon primer campo se multiplica por tres.

1 respuesta

Respuesta
1
Lo que debes hacer es diferenciar cada dato en el formulario.
Cambia la línea del input por la siguiente:
<td align="center"><input name="cant[<?php echo $i ?>]" size="5" type="text" />
Esto hará que cada campo cantidad tenga un nombre distinto. De hecho estarán todos los campos de cantidad en un array, que podrás consultar y manipular:
echo $_POST["cant"][0];
echo $_POST["cant"][1];
En lugar de lo que tienes ahora que todos los campos de cantidad se llaman igual.
Hola david.
Muchas gracias por responderme y ayudarme,
ha probado lo que tu me has dicho, pero no me sale nada lo que quiero, es posible que no te entendí
En otro tipo de aplicación, que he hecho antes si que puesto en cada campo de folmulario diferente nombre de variable y funccionaba.
Pero ahora es diferente, puesto que en que cada fila recuperada de base de datos se inserta automáticamente el campo de formulario:
<form action=<?php echo $_SERVER['PHP_SELF'];?> method="post" >
<td align="center"><input name="cant[<?php echo $i ?>]" size="5" type="text" />
<input type="hidden" value="Enviar Pedido">
</form>
Lo mismo es en cada fila .
Ya pensé de poner este campo en base de datos como tipo varchar pero me párese una barbalidad.
Lo que yo quiero es que cada fila va a ser diferente array.
Quiero esto:
¿Lejía-2? ¿Cantidad-3 total-6?
¿Detergente-1? ¿Cantidad-4 total-4?
¿Pañuelo-1? Cantidad-¿0 total - 0?
Sin embargo me sale esto:
¿Lejía-2? ¿Cantidad-3 total-6?
¿Detergente-1? ¿Cantidad-0 total-3?
¿Pañuelo-1? Cantidad-¿0 total-3?
Me multiplica todas las filas por 3.
El problema esta en el folmulario que se inserta en cada fila recuperada de base de datos con mismo variable.
Y lo que entendí de lo que me has dicho .cada fila tiene que ser [0][1][2][3][4][5][6][7][8]etc...
También entiendo que variable $i es cada fila ([1][2][3])
Pero como hacer que precio de fila 1,2,3, etc... multiplico con cantidad...
Y otra cosa que cuando pongo
echo $_POST["cant"][0];
echo $_POST["cant"][1];
Solo me sale un ultimo que ingrese en el formulario.
Soy novato en esto y todavía no pillo muchas cosas, podrías darme un ejemplo de código .
Muchas gracias.
El código que te dí debería funcionar siempre que tengas sólo una única etiqueta <form> de apertura y una </form> para cerrar en toda la página (deben estar dentro todas la filas del formulario). Creo que tu problema es que pones varios form.
Si lo haces así, para cada fila, tendrías el resultado que buscas con, por ejemplo:
$total[$i] = $_POST["precio"][$i] * $_POST["cantidad"][$i]
Prueba a hacerlo y si no te funciona, envía tu código y te lo repaso.
Hola David.
Muy amable de tu parte.
He repasado las lecciones de los arrays y funcciones.
Párese que entiendo, pero a la hora de ponerlo en la realidad, me pierdo.
Es que no me funciona.
Aqui te envio codigo.
Y muchas gracias por su ayuda.
<html>
<head>
<title>DOMEK</title>
</head>
<style type="text/css">
table.td {
font-size:20px;
margin-left: 10px;
margin-right: 10px;
}
</style>
<body>
<?php
$terminobusqueda = trim ($_POST['terminobusqueda']);
$tipobusqueda = trim($_POST['tipobusqueda']);
$terminobusqueda ="hogar";
echo $terminobusqueda;
@ $db = mysql_pconnect("localhost", "root", "");
if (!$db)
{
echo "Error: No se ha podido conectar a la base de datos. Por favor, prueba de nuevo más tarde.";
exit;
}
mysql_select_db("tienda");
$consulta = "select * from jugetes where grupo = 'hogar' ORDER BY 'articulo' ASC ";
$resultado = mysql_query($consulta);
$num_resultados = mysql_num_rows($resultado);
$num_rows = mysql_num_rows($result);
//aqu npego la funccionde una linea para un aray
//aqui acaba la funccion
echo "
<table border='1' cellpadding='8'>
";
echo "
<tr>
<h4>
<td>IMAGEN</br> DEL ARTICULO</td>
<td>NR ID. DEL </BR>ARTICULO</td>
<td>NOMBRE DEL ARTICULO</td>
<td>PRECIO</td>
<td>CANTIDAD</td>
<td>Total por</br> articulo</td>
</h4>
</tr>
";
for ($i=0; $i <$num_resultados; $i++)
{
$row = mysql_fetch_array($resultado);
if ("grupo") {
echo "
<tr>
";
echo "
<td>".$i."fila".$num_rows;
$title = "<img src=\"images/".($row["codigo_nuestro"]).".jpg\" border=0 height='60' width='80'>";
echo $title;
echo "
<td>";
echo stripslashes($row['codigo_nuestro']);
echo "</td>
";
echo "
<h5>
<td>";
echo stripslashes($row["articulo"]);
echo "</td>
";
echo "
<td>";
$precio = stripslashes($row["precio_venta"]);
echo $precio . "?</td>
";
?>
<form action=<?php echo $_SERVER['PHP_SELF'];?> method="post" >
<td align="center"><input name="cant[<?php echo $i ?>]" size="5" type="text" />
<input type="hidden" value="Enviar Pedido">
</form>
</td>
<?php
echo "
<td>";
echo $_POST["cant"][0];
echo $_POST["cant"][1];
$total[$i] = $_POST["precio"][$i] * $_POST["cantidad"][$i] ;
echo $total[$i];
$canti=$_POST["cant"][1];
echo "</td>
";
$total = stripslashes($row["precio_venta"]) * $canti;
echo "
<td>";
echo $total;
echo "</td>
";
echo "
</tr>
</h5>
";
} else {
echo "no";
}
}
echo "
</table>
";
for ($b=$_POST["cant"][0];$b < $_POST["cant"][900];$b++)
{
echo $_POST["cant"][0];
echo $_POST["cant"][1];
}
echo $total[$i];
?>
<img src="imagen\image.jpg" height="60" width="80">
</body>
</html>
Hola David.
Muchísimas gracias por tu ayuda.
El código que me has dado funciona perfectamente.
El problema era tan simple, que me hace reír.
Se trataba que en el formulario avia falta
<input type="submit">
Poner después de todo el código php,
para que el código trata todos campos de formulario y no solo uno.
Si
<input type="submit">
Se pone dentro de php
El código trata solo un campo (el ultimo insertado )
Muchas gracias por tu ayuda.
Sin ella no seria posible solucionarlo .
Gracias.
Hasta próxima...
El código bueno :
<html>
<head>
<title>DOMEK</title>
</head>
<style type="text/css">
table.td {
font-size:20px;
margin-left: 10px;
margin-right: 10px;
}
</style>
<body>
<?php
$terminobusqueda = trim ($_POST['terminobusqueda']);
$tipobusqueda = trim($_POST['tipobusqueda']);
$terminobusqueda ="hogar";
echo $terminobusqueda;
@ $db = mysql_pconnect("localhost", "root", "");
if (!$db)
{
echo "Error: No se ha podido conectar a la base de datos. Por favor, prueba de nuevo más tarde.";
exit;
}
mysql_select_db("tienda");
$consulta = "select * from jugetes where grupo = 'hogar' ORDER BY 'articulo' ASC ";
$resultado = mysql_query($consulta);
$num_resultados = mysql_num_rows($resultado);
$num_rows = mysql_num_rows($result);
//aqu npego la funccionde una linea para un aray
//aqui acaba la funccion
echo "
<table border='1' cellpadding='8'>
";
echo "
<tr>
<h4>
<td>IMAGEN</br> DEL ARTICULO</td>
<td>NR ID. DEL </BR>ARTICULO</td>
<td>NOMBRE DEL ARTICULO</td>
<td>PRECIO</td>
<td>CANTIDAD</td>
<td>Total por</br> articulo</td>
</h4>
</tr>
";
for ($i=0; $i <$num_resultados; $i++)
{
$row = mysql_fetch_array($resultado);
if ("grupo") {
echo "
<tr>
";
echo "
<td>".$i."fila".$num_rows;
$title = "<img src=\"images/".($row["codigo_nuestro"]).".jpg\" border=0 height='60' width='80'>";
echo $title;
echo "
<td>";
echo stripslashes($row['codigo_nuestro']);
echo "</td>
";
echo "
<h5>
<td>";
echo stripslashes($row["articulo"]);
echo "</td>
";
echo "
<td>";
$precio = stripslashes($row["precio_venta"]);
echo $precio . "?</td>
";
?>
<form action=<?php echo $_SERVER['PHP_SELF'];?> method="post" >
<td align="center"><input name="cant[<?php echo $i; ?>]" size="5" type="text" />
</td>
<?php
echo "
<td>";
$total[$i] = stripslashes($row["precio_venta"]) * $_POST["cant"][$i] ;
echo $total[$i];
echo "</td>
";
echo "
</tr>
</h5>
";
} else {
echo "no";
}
}
echo "
</table>
";
for ($b=$_POST["cant"][0];$b < $_POST["cant"][900];$b++)
{
echo $_POST["cant"][0];
echo $_POST["cant"][1];
}
echo $total[$i];
?>
<input type="submit" value="Enviar Pedido">
</form>
<img src="imagen\image.jpg" height="60" width="80">
</body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas