Foros del Web » Programando para Internet » PHP »

problema con array y bases de datos

Estas en el tema de problema con array y bases de datos en el foro de PHP en Foros del Web. Resulta que hice un formulario, en el que ingreso la cantidad de ítems que voy a vender. Cuando procesa, muestra la cantidad de campos solicitada. ...
  #1 (permalink)  
Antiguo 12/05/2010, 16:45
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 15 años, 3 meses
Puntos: 1
problema con array y bases de datos

Resulta que hice un formulario, en el que ingreso la cantidad de ítems que voy a vender. Cuando procesa, muestra la cantidad de campos solicitada.
El tema es que luego tengo que procesar este último formulario, y no sé cómo pasar los nombres de los inputs (que se llaman nombre1, nombre2, nombre3 y así).
Quizá alguien pueda ayudarme, creo que es fácil para los expertos, yo estoy medio perdido:

Código:
if ($cantidad_rep=="")
{
?>
<form action="vender.php" method="post" enctype="multipart/form-data" name="form1">
<input type="hidden" name="que" value="repuesto"/>		
Indique la cantidad de ítems diferentes que venderá en la operación:
<input type="text" name="cantidad_rep" />
<input type="submit" name="Submito" value="Enviar">	
</form>

<?php

}
else
{

if ($Submit=="")
{
?>
  <form action="vender.php" method="post" enctype="multipart/form-data" name="form1">
 <input type="hidden" name="cantidad_rep" value="<?php echo $cantidad_rep; ?>"/>
 
	    <p class="negrita">Vender repuesto </p>
<table width="400%" border="0">
  <tr>
    <td>Cantidad</td>
    <td>Precio unitario</td>
    <td>Repuesto</td>
  </tr>
<?php 
for ($i=1; $i <= $cantidad_rep; $i++)
  {    
?>
  <tr>
    <td><input name="cantidad<?php echo $i; ?>" type="text" id="cantidad" value="1" size="4" /></td>
    <td>$ <input name="importe<?php echo $i; ?>" type="text" id="importe" size="6" /></td>
    <td><select name="repuesto<?php echo $i; ?>" id="repuesto">
        <? require ("requires/repuestos.php"); ?>
        </select></td>
  </tr>
<?php
  }  


?>
</table>


      </form>
<?

}

else
{
		for ($i=1; $i <= $cantidad_rep; $i++)
		  {    
		
			$result = mysql_query("SELECT * from luga_repuestos where id_repuesto='$repuesto$i'", $conexion);	
			while ($row=mysql_fetch_array($result)){
			$costo[$i]=$row['precio'];
			}	  

			/*TOMA EL NOMBRE DEL REPUESTO COMO REPUM*/
			$sql22a = "SELECT * FROM luga_listarepuestos WHERE id = '$repuesto$i'"; 
			$result22a = mysql_query($sql22a, $conexion); 
			if ($row = mysql_fetch_array($result22a)){ 
			mysql_field_seek($result22a,0); 
			do { 
			$repum[$i]="$cantidad$i ".$row['modelo']." (".$row['descripcion'].")";
				
			}
			while ($row = mysql_fetch_array($result22a)); 
			} 
			$importe[$i]=($importe[$i]*$cantidad[$i]);

}
el tema está en los arrays que inventé $importe[$i] y otros por el estilo...

alguna ayuda?

Gracias!
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 12/05/2010, 17:05
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 14 años, 4 meses
Puntos: 55
Respuesta: problema con array y bases de datos

lo q tienes q aprovechar es los arrays pero directamente en el input

si utilizas

<input type="text" name="importe[]" value="mi primer importe"/>
<input type="text" name="importe[]" value="el segundo"/>
<input type="text" name="importe[]" value="III"/>

esto cuando lo recibis en el $_POST o $_GET
te llega como un array, osea si haces un var_dump($_POST['importe'])
te dara
array(
0=>"mi primer importe",
1=>"el segudno",
2=>'III"
);

de esta forma con un simple bucle foreach o for podes manejarlo de forma dinamica sin tener q preocuparte por cuando elementos hay o inventandoles nombres a cada uno

espero te sirva la ayuda
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 13/05/2010, 08:00
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: problema con array y bases de datos

Emiliodeg, muchas gracias por la respuesta.
No quiero abusar, pero no estoy muy familiariazo con los foreach ni los arrays...

¿cómo haría un bucle que ingrese un registro en la db por cada valor diferente?

Para cada ítem ingresado yo necesito que tome de la base de datos su precio de costo:
Código:
$result = mysql_query("SELECT * from luga_repuestos where id_repuesto='$repuesto'", $conexion);	
			while ($row=mysql_fetch_array($result)){
			$costo=$row['precio'];
			}
de esta manera podré saber si hubo pérdida o ganancia en la venta, sacando una diferencia con el precio pagado
Código:
$diferencia=($importe-$costo);
finalmente, multiplico la cantidad de repuestos vendidos por su precio de venta:
Código:
$total_rep=($importe*$cantidad);
y debo sumar todos los $total_rep de cada elemento del array para obtener el importe total a facturar....

es muy complicado, no?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #4 (permalink)  
Antiguo 19/05/2010, 09:38
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: problema con array y bases de datos

Trataré de ser más claro en mi exposición, para ver si podés ayudarme:
Vamos a suponer que el número ingresado es 3 (vamos a vender tres repuestos diferentes).
Entonces, esto generaria: cantidad[1], importe[1] y repuesto[1], cantidad[2], importe[2] y repuesto[2],y cantidad[3], importe[3] y repuesto[3].

Luego, se harían las consultas a la base de datos por cada conjunto:

obtener el precio de costo de cada repuesto[],
disminuir el stock en cantidad[] para cada repuesto
ingresar la operación contable por la cual:

Al precio de venta importe[] le restamos el precio de costo y multiplicamos esto por la cantidad[] para ver cuánto se obtuvo de ganancia. y se registra esta ganancia.


Alguna idea de cómo puedo encarar todo esto?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar

Etiquetas: bases
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:47.