Foros del Web » Programando para Internet » PHP »

Ayuda con foreach!!!!

Estas en el tema de Ayuda con foreach!!!! en el foro de PHP en Foros del Web. Buenas tardes, mi probrema es el siguiente; Estoy llamando filas desde la tabla de productos a un formulario, para que al confirmar envie los datos ...
  #1 (permalink)  
Antiguo 08/08/2009, 16:56
 
Fecha de Ingreso: mayo-2009
Ubicación: Colombia
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Exclamación Ayuda con foreach!!!!

Buenas tardes, mi probrema es el siguiente; Estoy llamando filas desde la tabla de productos a un formulario, para que al confirmar envie los datos a la tabla inventario , es decir; si hay 3 productos para confirmar selecciono los 3 checkbox "si", y me envia los tres productos a inventario, Aqui surge el problema, NO me envia los tres registros, me envia unicamente el ultimo registro tres veces...Dejo los codigos..

**FORMULARIO**
Código PHP:
<?php
include 'db.php';
$link=conectarse();
$result=mysql_query("select * FROM productos ORDER BY producto",$link);
if(
$row=mysql_fetch_array($result))
{
echo 
"<br>";
echo 
"<form action='productoconf.php' name='formulario' method='post'><table border='0' width='600'>";
echo 
"<tr><td><span class='Estilo6'><b><center>PRODUCTO</td><td><span class='Estilo6'><center><b>CANTIDAD</CENTER></td><td><span class='Estilo6'><b><center>UNIDAD MEDIDA</td><td><span class='Estilo6'><b><center>VALOR UNIDAD</td><td><span class='Estilo6'><center><b>Si</CENTER></td><td><span class='Estilo6'><center><b>NO</CENTER></td></tr></b>";
do{
    
$fecha=date("Y-m-d ");
    
$id=$row['idproducto'];
echo 
"<tr><td><center>
<input type='hidden' size='20' value='"
.$row["referencia"]."' name='referencia'>
<input type='text' span class='Estilo6' size='30' value='"
.$row["producto"]."' name='producto' readonly ></td>
<td><input type='text' span class='Estilo6' size='20' value='"
.$row["cantidad"]."' name='cantidad' ></td>
<td><input type='text' span class='Estilo6' size='15' value='"
.$row["unidadmed"]."'name='unidadmed' id='unidadmed'>
<td><input type='text' span class='Estilo6' size='15' value=''name='valor' id='valor'>
 <td><input type='checkbox' value='$id' name='chk[]'><br> </td><center>
<td><input type='checkbox' value='$id' name='chk2[]'><br></td>
<input type='hidden' size='10'  value='$fecha' name='fecha' id='fecha'></td>
"
;}
while(
$row=mysql_fetch_array($result));
echo 
"<tr><td colspan='6'><center><input type=image src='imagenes/confirmar.png' onClick='return(validar()); MM_validateForm()' ></tr></td></table></form>";
}
else{echo
"<br";
echo 
"<center><i><b><span class='Estilo6'><br><h2>En este momento no hay productos para confirmar</h2>";}

echo 
" <br><a href='administrador.php'>...Atras</a>";

?>
**PROCESA.PHP**
Código PHP:
<?php 
$fecha
=$_REQUEST['fecha'];
$unidadmed=$_REQUEST['unidadmed'];
$referencia=$_REQUEST['referencia'];
$producto=$_REQUEST['producto'];
$producto=strtoupper($producto);
$cantidad=$_REQUEST['cantidad'];
$valor=$_REQUEST['valor'];

include 
'db.php';
$link=conectarse();


$chk = isset($_POST["chk"]) ? $_POST["chk"]:null

if((
$_POST["chk"])){
foreach(
$chk as $checkbox){ 
$sql="INSERT INTO inventarios(referencia,producto,cantidad,unidadmed,valor,fecha) VALUES ('$referencia','$producto','$cantidad','$unidadmed', '$valor','$fecha')";
$result=mysql_query($sql,$link);
$sql="INSERT INTO inventarios2(referencia,producto,cantidad,unidadmed,valor,fecha) VALUES ('$referencia','$producto','$cantidad','$unidadmed', '$valor','$fecha')";
$result=mysql_query($sql,$link);
$sql="DELETE FROM productos WHERE idproducto='$checkbox'";
$result=mysql_query($sql,$link);
}}
?>
De antemano les agradezco su ayuda..!!
  #2 (permalink)  
Antiguo 08/08/2009, 17:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Ayuda con foreach!!!!

es obvio, porque el name="referencia" (etcétera) es el mismo para todos los <input/> dentro de tu do-while

para lograrlo debes usar name's del tipo array()

Código HTML:
<input name="referencia[]"/> 
y así, lo puedes tratar con PHP como una arreglo... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/08/2009, 19:24
 
Fecha de Ingreso: mayo-2009
Ubicación: Colombia
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con foreach!!!!

Gracias por responder pateketrueke, ahora pasa lo siguiente, al confirma los productos voy y consulto la base de datos y en todos los campos me almacena la palablra "array"....
  #4 (permalink)  
Antiguo 08/08/2009, 22:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Ayuda con foreach!!!!

vas a tener que crear otro foreach dentro del foreach para que busque la informacion que hay en ese array
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 09/08/2009, 11:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Ayuda con foreach!!!!

Cita:
Iniciado por jdarkname Ver Mensaje
Gracias por responder pateketrueke, ahora pasa lo siguiente, al confirma los productos voy y consulto la base de datos y en todos los campos me almacena la palablra "array"....
mira... no se si sepas, pero no somos adivinos!!


así que si dices, me sale "array" ¿pues como vamos a saber que estas haciendo??

necesitas colocar tu código actual, para ver que sucede... si no, pues no!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 09/08/2009, 19:54
 
Fecha de Ingreso: mayo-2009
Ubicación: Colombia
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Ayuda con foreach!!!!

hay va el codigo, lo que le modifique con respecto al de arriba han sido los name`s de los campos del formulario por tipo array []

***FORMULARIO***
Código PHP:
<?php
include 'db.php';
$link=conectarse();
$result=mysql_query("select * FROM productos ORDER BY producto",$link);
if(
$row=mysql_fetch_array($result))
{
echo 
"<br>";
echo 
"<form action='productoconf.php' name='formulario' method='post'><table border='0' width='600'>";
echo 
"<tr><td><span class='Estilo6'><b><center>PRODUCTO</td><td><span class='Estilo6'><center><b>CANTIDAD</CENTER></td><td><span class='Estilo6'><b><center>UNIDAD MEDIDA</td><td><span class='Estilo6'><b><center>VALOR UNIDAD</td><td><span class='Estilo6'><center><b>Si</CENTER></td><td><span class='Estilo6'><center><b>NO</CENTER></td></tr></b>";
do{
    
$fecha=date("Y-m-d ");
    
$id=$row['idproducto'];
echo 
"<tr><td><center>
<input type='hidden' size='20' value='"
.$row["referencia"]."' name='referencia[]'>
<input type='text' span class='Estilo6' size='30' value='"
.$row["producto"]."' name='producto[]' readonly ></td>
<td><input type='text' span class='Estilo6' size='20' value='"
.$row["cantidad"]."' name='cantidad[]' ></td>
<td><input type='text' span class='Estilo6' size='15' value='"
.$row["unidadmed"]."'name='unidadmed[]'>
<td><input type='text' span class='Estilo6' size='15' value=''name='valor[]'>
 <td><input type='checkbox' value='$id' name='chk[]'><br> </td><center>
<td><input type='checkbox' value='$id' name='chk2[]'><br></td>
<input type='hidden' size='10'  value='$fecha' name='fecha' id='fecha'></td>
"
;}
while(
$row=mysql_fetch_array($result));
echo 
"<tr><td colspan='6'><center><input type=image src='imagenes/confirmar.png' onClick='return(validar()); MM_validateForm()' ></tr></td></table></form>";
}
else{echo
"<br";
echo 
"<center><i><b><span class='Estilo6'><br><h2>En este momento no hay productos para confirmar</h2>";}

echo 
" <br><a href='administrador.php'>...Atras</a>";

?>


**PROCESA.PHP***
Código PHP:
<?php 
$fecha
=$_REQUEST["fecha"];
$unidadmed=$_REQUEST["unidadmed"];
$referencia=$_REQUEST["referencia"];
$producto=$_REQUEST["producto"];
$producto=strtoupper($producto);
$cantidad=$_REQUEST["cantidad"];
$valor=$_REQUEST["valor"];

include 
'db.php';
$link=conectarse();


$chk = isset($_POST["chk"]) ? $_POST["chk"]:null

if((
$_POST["chk"])){
    foreach(
$chk as $checkbox){ 

$sql="INSERT INTO inventarios(referencia,producto,cantidad,unidadmed,valor,fecha) VALUES ('$referencia','$producto','$cantidad','$unidadmed', '$valor','$fecha')";
$result=mysql_query($sql,$link);
$sql="INSERT INTO inventarios2(referencia,producto,cantidad,unidadmed,valor,fecha) VALUES ('$referencia','$producto','$cantidad','$unidadmed', '$valor','$fecha')";
$result=mysql_query($sql,$link);
$sql="DELETE FROM productos WHERE idproducto='$checkbox'";
$result=mysql_query($sql,$link);
}}


$cont="<h2><b>Las reserva seleccionada ha sido eliminada</b></h2>";
$chk = isset($_POST["chk2"]) ? $_POST["chk2"]:null;
if((
$_POST["chk2"])){
foreach(
$chk as $radio){ 
    
$sql="SELECT * FROM prestamos";
    
$result=mysql_query($sql$link);
    
$sql="delete from  prestamos WHERE  idprestamo='$radio'";
    
$result=mysql_query($sql$link);
    

}}
?>

Gracias.........
  #7 (permalink)  
Antiguo 09/08/2009, 22:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Ayuda con foreach!!!!

ya te he dicho.... si el name="referencia[]" es del tipo array(), debes tratarlo como array !!!

Código PHP:
$referencia $_POST['referencia']; 
si solo imprimes... $referencia, pues por eso te sale la palabra "Array"

como te mencione, debes tratarlo como un array si lo haces así como así, pues he ahí tu problema.... no el mio!!


por favor, analiza mas lo que estas haciendo y si no sabes como hacer estas consultas.... revisa el manual de PHP para saber como utilizar los array...

http://php.net/array


suerte...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 22:18.