Foros del Web » Programando para Internet » PHP »

envio multiple de formulario

Estas en el tema de envio multiple de formulario en el foro de PHP en Foros del Web. Hola os pongo un ejemplo del codigo para enviar varios campos a la vez de un formulario y que me actualice la base de datos ...
  #1 (permalink)  
Antiguo 03/07/2011, 04:24
 
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 12 años, 8 meses
Puntos: 0
envio multiple de formulario

Hola os pongo un ejemplo del codigo para enviar varios campos a la vez de un formulario y que me actualice la base de datos con esos valores que se han enviado por el formulario.He leido en este foro que ponga en name esto [] es decir name=producto[] y en el archivo cambiar.php que me manda el formulario que ponga esto : foreach ($_POST['producto'] as $key => $value) pero $key $value no se que valores tienen y tampoco como armar el cambiar.php
Una idea sobre algo me iria bien ,muchas gracias.
Código PHP:
<?php 
$hostname 
""
$database ""
$username ""
$password ""
$connection mysql_pconnect($hostname$username$password) or trigger_error(mysql_error(),E_USER_ERROR); 
?> 
<?php 
mysql_select_db
($database$connection); 
$qry "SELECT * FROM catalogo WHERE exist IN(1,0) and  (categoria='Frutas' or categoria='Frutas_por_piezas')  order by producto asc"
$limite_columna1 sprintf("%s LIMIT %d, %d"$qry0,8); 
$resultados1 mysql_query($limite_columna1$connection) or die(mysql_error()); 
$columna1 mysql_fetch_assoc($resultados1); 
$limite_columna2 sprintf("%s LIMIT %d, %d"$qry88); 
$resultados2 mysql_query($limite_columna2$connection) or die(mysql_error()); 
$columna2 mysql_fetch_assoc($resultados2); 
?>
<form id="form1" name="form1" method="post" action="Untitled-2.php">
<input type=hidden name=id value=<?php echo $columna1['id']; ?>>
    <table width="344" align="center" cellpadding="0" cellspacing="0" style="border: 1px solid #000000;">
 
      <?php 
//mostramos todos nuestros 
//artículos, viendo si han 
//sido agregados o no a nuestro 
//carro de compra 
do { 
?>

      <tr valign="middle" class="catalogo" bgcolor="<?php echo $color?>">
  
      
        
<td width="120" rowspan="3"  style="font-size:12px"><?php echo $columna1['cant']; ?> <?php echo $columna1['producto']; ?>
   <input name="cant[]" type="text" id="cant" value="" size="1">     
<input name="producto[]" type="text" id="producto" value="" size="20">
<?php echo $columna1['precio']; ?>
<input name="precio[]" type="text" id="precio" value="" size="1"> 
&euro;
<?php echo $columna1['unidades']; ?>
<input name="unidades" type="text" id="unidades" value="" size="5">uni


        </td>
      </tr>
      <?php } while ($columna1 mysql_fetch_assoc($resultados1)); ?>
    </table>
     
     
    



    <table width="344" align="center" cellpadding="0" cellspacing="0" style="border: 1px solid #000000;">
  
         </tr>
      <?php 
//mostramos todos nuestros 
//artículos, viendo si han 
//sido agregados o no a nuestro 
//carro de compra 
do { 
?>

      <tr valign="middle" class="catalogo" bgcolor="<?php echo $color?>">
        
      
        
        <td width="120" rowspan="3"  style="font-size:12px"><?php echo $columna2['cant']; ?> <?php echo $columna2['producto']; ?>
   <input name="cant[]" type="text" id="cant" value="" size="1">     
<input name="producto[]" type="text" id="producto" value="" size="20">
<?php echo $columna2['precio']; ?>
<input name="precio[]" type="text" id="precio" value="" size="1"> 
&euro;
<?php echo $columna2['unidades']; ?>
<input name="unidades" type="text" id="unidades" value="" size="5">uni


        </td>
      
       
      </tr>
    
      <?php } while ($columna2 mysql_fetch_assoc($resultados2)); ?>
    </table>
     
     
    
    <input type="submit" name="Submit" value="Cambiar" style="font-size: 10px"/>
</form>
  #2 (permalink)  
Antiguo 03/07/2011, 08:30
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: envio multiple de formulario

bueno puedes empezar revisando lo que contiene $key con

var_dump($key);
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 05/07/2011, 21:30
 
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: envio multiple de formulario

lo miraré , gracias johhan.
  #4 (permalink)  
Antiguo 05/07/2011, 22:48
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 6 meses
Puntos: 188
Respuesta: envio multiple de formulario

Yo tengo una buena idea.

En alguna biblioteca (o por internet) busca algun libro de programacion (C,C++,PHP,JAVA,) cualquiera vale. Y consulta la parte de Arreglos.

Verás que cuando colocas los corchetes [] en la declaracion de una variable estas creando un arreglo.

Un arreglo visto en la vida real vendría siendo una Matriz. Una matriz es un objeto que sirve para guardar informacion en casillas de manera ordenada. Utilizando un solo corchete significa que los datos se guardaran 1 por fila, simultaneamente.

variable[1] = "valor 1;
variable[2] = "Valor 2";
variable[2] = "amarillo";
etc....

Todas las variables son la misma; variable, pero esta variable es un objeto Matriz que almacena de manera ordenada los valores respetivos a los cuales accede utilizando el indice que esta dentro de los corchetes.

Cuando en la declaracion de una variable haces esto

$variable[]

Es porque no conoces la dimencion de tu matriz, es decir que no sabes el numero de filas que va a tener.

Bueno, posteriormente viene el foreach(); este metodo es utilizado para recorrer arreglos.

En tu caso tienes:

foreach ($_POST['producto'] as $key => $value)

$_POST['producto'] es el tipo de dato
$key será la nueva referencia "temporal" y value sera el valor para cada elemento recorrido del foreach

El foreach se utiliza cuando no se sabe la dimencion de la matriz, lo unico que hace es recorrer esta matriz elemento a elemento, asignarle el valor en el que este el puntero a la variable temporal que se indica en

as $key,


Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #5 (permalink)  
Antiguo 14/08/2011, 12:22
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: envio multiple de formulario

Hola , deciros que soy el mismo usuario que castellon11 ,he visto la respuesta de iovan y creo que entiendo lo que quiere decir pero no me sale, en el formulario tengo este input para la id
Código PHP:
Ver original
  1. <input type=hidden name=id value=<?php echo $columna1['id']; ?>>
y este para el producto (que es lo que quiero cambiar)
Código PHP:
Ver original
  1. <input name="producto[]" type="text" id="producto" value="" size="20">
Luego en archivo que recibe el formulario para actualizarlo tengo esto
Código PHP:
Ver original
  1. <?php
  2.    
  3.  
  4. foreach ($_POST['producto'] as $key =>  $value)
  5. {
  6.  
  7.  
  8. mysql_query("UPDATE catalogo SET producto = '$value'
  9. WHERE id = '$id' ");
  10.  
  11.     }
  12. ?> 
  13. <?php
  14. header("Location:Frutas_por_piezas.php");
  15. ?>
algo hago mal en el update con la id porque si pongo
echo $value . '<br />';
echo $_POST['precio'][$key] . '<br />';
echo $_POST['cant'][$key] . '<br />';
me lo imprime bien , lo que tampoco cosigo es imprimir la id
muchas garacias
  #6 (permalink)  
Antiguo 17/08/2011, 05:07
 
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: envio multiple de formulario

Ya lo resolví, en input de id lo puse asi
Código HTML:
Ver original
  1. <input type=hidden name="id[]" value="<?php echo $columna1['id']; ?>">

el del producto asi
Código HTML:
Ver original
  1. <input name="producto[]" type="text" id="producto" value="" size="20">

y el archivo que recoge los datos
Código PHP:
Ver original
  1. <?php
  2. foreach ($_POST['producto'] as $key =>  $value)
  3. {
  4. $producto=$value;  
  5. $id=$_POST['id'][$key];
  6. mysql_connect("","","");
  7. if ($producto!= "")
  8. {
  9. mysql_query("UPDATE catalogo SET producto = '$producto'
  10. WHERE id = '$id' ");
  11. }
  12.  }
  13. ?>

esto solo funciona poniendo el formulario en la primera columna
  #7 (permalink)  
Antiguo 18/08/2011, 14:34
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 6 meses
Puntos: 188
Respuesta: envio multiple de formulario

ahora si tu foreach se ve más correcto.

Los campos de los formularios no están bien, el name no debe llevar los corchetes.

Código HTML:
Ver original
  1. Ejemplo:
  2. <input type="hidden" name="id" value="<?php echo $columna1['id']; ?>"> <!-- Sin los corchetes -->

Cita:
Iniciado por castellon11 Ver Mensaje
esto solo funciona poniendo el formulario en la primera columna
Por supuesto, y es debido a ésta linea que tienes por ahí:

Código PHP:
Ver original
  1. <?php } while ($columna1 = mysql_fetch_assoc($resultados1)); ?>

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: formulario
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 05:20.