Foros del Web » Programando para Internet » PHP »

problema con manejo de datos

Estas en el tema de problema con manejo de datos en el foro de PHP en Foros del Web. Hola amigos como puedo hacer lo siguiente Hago una consulta a la bd mysql, la cual me devuelve por ejemplo : CODIGO - PRODUCTO - ...
  #1 (permalink)  
Antiguo 23/08/2011, 21:26
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 10 años, 9 meses
Puntos: 7
problema con manejo de datos

Hola amigos como puedo hacer lo siguiente

Hago una consulta a la bd mysql, la cual me devuelve por ejemplo :
CODIGO - PRODUCTO - CANTIDAD
1 Lapiceros 50
2 Cuadernos 20
3 Libros 10

Solo necesito Producto y Cantidad.

Como puedo hacer para esos datos mostrarlos pon pantalla, pero en campos modificables, me refiero a que salgan en los input, no logro hacerlo.

Código PHP:
Ver original
  1. <table>
  2.                                     <thead>
  3.                                         <tr>
  4.                                             <th width="3%">#</th>
  5.                                             <th width="30%">Producto</th>
  6.                                             <th class="left" width="67%">Cantidad</th>
  7.                                         </tr>
  8.                                     </thead>
  9.                                     <?php            
  10.                                     $cantidad = 0;
  11.                                     $codigo_producto = 0;
  12.                                     $data = array(
  13.                                     'codigo_producto' => $codigo_producto,
  14.                                     'cantidad' => $cantidad,
  15.                                     );
  16.                                     $color_fila = 1;
  17.                                     for ($i = 1; $i <= 10; $i++) {   ?>
  18.  
  19.                                     <tbody>
  20.                                         <tr>
  21.                                             <td><?php echo $i; ?></td>
  22.                                             <?php foreach ($data as $key => $value) {
  23.                                                 if($key == 'codigo_producto'){ ?>
  24.                                             <td align="center"> <?php
  25.                                                 $query = "SELECT distinct(p.PROD_CODI), p.PROD_NOMB, um.UMED_NOMB
  26.                                                        FROM csto_pral pa
  27.                                                        INNER JOIN CSTO_PROD p ON p.PROD_CODI = pa.PROD_CODI
  28.                                                        INNER JOIN csto_alma al ON al.ALMA_CODI = pa.ALMA_CODI
  29.                                                        INNER JOIN csto_umed um ON um.UMED_CODI = p.UMED_CODI
  30.                                                        WHERE pa.ALMA_CODI = $ALMA_CODI
  31.                                                        ORDER BY p.PROD_NOMB ASC
  32.                                                    ";
  33.                                                 $result = mysql_query($query);
  34.                                                 echo '<SELECT name="data['.$i.']['.$key.']" >';
  35.                                                     while($fila = mysql_fetch_assoc($result)) {
  36.                                                         if($ResultadoDetalleMovimiento['PROD_CODI'] == $fila[$value])
  37.                                                             {echo "<OPTION value=\"".$fila['PROD_CODI']."\" selected>".$fila['PROD_NOMB']." - - - - - - - - - - ".$fila['UMED_NOMB']."</OPTION>\n";}
  38.                                                         else
  39.                                                             {echo "<OPTION value=\"".$fila['PROD_CODI']."\">".$fila['PROD_NOMB']." | ".$fila['UMED_NOMB']."</OPTION>\n";}
  40.                                                         }
  41.                                                     echo "<OPTION value=\"Seleccione\" selected>Seleccione</OPTION>\n";
  42.                                                 echo "</SELECT>";?>
  43.                                             </td>
  44.                                                 <?php } else{ ?>
  45.                                             <td align="center"><input type="text" name="data[<?php echo $i; ?>][<?php echo $key; ?>]" size="5" value="" /></td>
  46.                                             <?php } } } ?>
  47.                                         </tr>
  48.                                     </tbody>
  49.                                 </table>

Ese es mi codigo, por ejemplo alli me crea 10 lineas, para elegir mediante un combobox al producto y un input para agregar la cantidad, lo que quiero es ahora hacer un modificar y q me muestre todos los productos que devuelve la consulta, en este caso en el combobox que lo seleccione al producto indicado en cada linea, y en el input que llene el value con esa cantidad

espero ayuda porfavor, que no logro hacerlo.

Gracias por todo.
  #2 (permalink)  
Antiguo 23/08/2011, 22:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.979
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: problema con manejo de datos

Realmente no es tan dificil, suponiendo que tengas:

Código PHP:
Ver original
  1. ?>
  2. <tr>
  3.     <td><?php echo $cantidad; ?></td>
  4. </tr>
  5.  
  6. <?php
  7. // Simplemente lo cambiarias por:
  8. ?>
  9. <tr>
  10.     <td><input type="text" name="cantidad[]" value="<?php echo $cantidad; ?>" size="5" /></td>
  11. </tr>

Despues, al procesar el formulario, $_POST['cantidad'] sera un array y deberas recorrerlo con foreach o for($i...) o como prefieras. Lo mismo para los demas campos que necesites agregar, supongo que necesitaras por ahi la ID del producto, para saber donde aplicar cada cosa.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 24/08/2011, 09:19
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 10 años, 9 meses
Puntos: 7
Respuesta: problema con manejo de datos

pero no puedo poner el name=cantidad[] ya que ya esta usado como data[<?php echo $i; ?>][<?php echo $key; ?>]
  #4 (permalink)  
Antiguo 24/08/2011, 12:01
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.979
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: problema con manejo de datos

En realidad no entiendo porque te complicas tanto creando campos de esa forma, cuando lo mas facil seria:

Código HTML:
Ver original
  1. <input type="hidden" name="producto[]" value="id_producto" />
  2. <input type="text" name="cantidad[]" value ="" />

Logicamente el campo de producto no seria modificable, por eso mejor que vaya oculto y lo unico que se podria modificar es la cantidad.

Al recibir el formulario, ambos campos tendran la misma cantidad de elementos y podras recorrerlos facilmente.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 24/08/2011, 12:20
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 10 años, 9 meses
Puntos: 7
Respuesta: problema con manejo de datos

Me explico mejor, tengo una pantalla que me sirve de doble funcion, Nuevo y Modificar ( lo normal creo yo).

Haber quiza tienes razon cuando dices q me complico la vida, lo que quiero hacer es lo siguiente
Nuevo Producto

Tengo 10 lineas, en la primera columna tengo el nombre del producto(combobox) y en la segunda tengo la cantidad(input).

Si lleno por ejemplo asi:
Producto | Cantidad
-----------------------
Lapiz 50
Lapicero 100
Cuaderno 20

Como podria recibir en mi controlador esas 3 lineas y 2 columnas, si te daras cuenta mi metodo creo q no es el adecuado.

Y ahora para modificar seria:
Por ejemplo quiero modificar este detalle q grafique anteriormente, tiene q mostrarme esos 3 productos llenos en los combobox e inputs respectivamente.

esa es mi duda, no se si me deje entender mejor.

gracias.
  #6 (permalink)  
Antiguo 24/08/2011, 14:52
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.979
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: problema con manejo de datos

Ok, ya veo, el producto lo estas colocando con select y la cantidad con input, el HTML deberia ser mas o menos asi:

Código HTML:
Ver original
  1. <tr>
  2.     <td><select name="prod_codi[]">
  3.         <option value="codigo_producto_1">Nombre producto 1</option>
  4.         .....
  5.         <option value="codigo_producto_N">Nombre producto N</option>
  6.     </select></td>
  7.     <td><input type="text" name="cantidad[]" value="" />
  8. </tr>

Y repites tantos tr como productos quieras mostrar.

Un ejemplo para leerlos con PHP, usando for y suponiendo que trabajas con variables de sesion:

Código PHP:
Ver original
  1. <?php
  2. $_SESSION['pedido'] = array();
  3. for($i = 0; $i < count($_POST['prod_codi']; $i ++) {
  4.     $cod_prodi = $_POST['prod_codi'][$i];
  5.     $cantidad = $_POST['cantidad'][$i];
  6.     if($cantidad > 0) {
  7.         $_SESSION['pedido'][$cod_prodi] = $cantidad;
  8.     }
  9. }
  10. ?>

Si requieres editar, entonces para cada fila del producto que ya esta en el pedido debes agregar en el select selected="selected" y el valor en el input:

Código PHP:
Ver original
  1. // Cuando estas creando el select
  2. $selected = $cantidad = ''; // Si el producto no esta en el pedido
  3. if(isset($_SESSION['pedido'][$fila['prod_codi']])) {
  4.     // Si el producto es parte del pedido
  5.     $selected =  ' selected="selected"';
  6.     $cantidad = $_SESSION['pedido'][$fila['prod_codi']];
  7. }
  8. echo "<option value=\"{$fila['prod_codi']}\"$selected>{$fila['prod_nomb']}</option>";
  9.  
  10. // Al crear el input de cantidad
  11. echo "<input type=\"text\" name=\"cantidad[]\" value=\"$cantidad\" />";

Te faltarian algunos pequeños detalles, como ver si el producto esta repetido en el pedido para juntar las lineas en una sola, sumando las cantidades, pero eso ya queda para ti.

Si no entiendes el codigo o como adaptarlo en lo que ya tienes... entonces trata de explicarme como interpretas cada linea sugerida para tratar de aclarar tus dudas.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 24/08/2011, 16:07
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 10 años, 9 meses
Puntos: 7
Respuesta: problema con manejo de datos

como sacas el codigo de producto de la sesion ? xq alli segun un arregle es key => value no ? y como sacas el valor de key en este caso

echo $_SESSION['pedido'][$prod_codi] = sale la cantidad

y si quiero saber el codigo del producto ? hago otra sesion o desde esa misma sesion puedo sacarla ?
  #8 (permalink)  
Antiguo 24/08/2011, 19:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.979
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: problema con manejo de datos

Sabes usar la estructura foreach()?
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 25/08/2011, 09:47
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 10 años, 9 meses
Puntos: 7
Respuesta: problema con manejo de datos

Si claro ...

foreach ($var->fun()) as $one){ } ...

Etiquetas: manejo, mysql
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 01:54.