Foros del Web » Programando para Internet » PHP »

Problemas con matriz

Estas en el tema de Problemas con matriz en el foro de PHP en Foros del Web. Genero la siguiente accion al crear una matriz. Código PHP: $rws = mysql_query ( $sql , $conx ); $fila = mysql_num_rows ( $rws ); if( ...
  #1 (permalink)  
Antiguo 10/03/2008, 08:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 11
Antigüedad: 16 años, 8 meses
Puntos: 0
Problemas con matriz

Genero la siguiente accion al crear una matriz.
Código PHP:
$rws=mysql_query($sql,$conx);
$fila=mysql_num_rows($rws);
if(
$fila!=0){
while (
$rwr=mysql_fetch_array($rws))
 {
             
$cod_produ=$rwr[0];
            
$cantidad=$rwr[2];
            
$precio=$rwr[3];

            
$fila=$fila++;

             
$nombre[$fila][0]=$fila;
            
$nombre[$fila][1]=$cod_produ;
            
$nombre[$fila][3]=$cantidad;
            
$nombre[$fila][4]=$precio
Hasta aqui todo bien por que me desplega todos los datos que quiera llamar respecto a la matriz.

El problema esta es que al hacer un insert de los datos que pueda desplegarme,
mediante un foreach solo inserta la ultima fila de lo que me desplega en pantalla.


OJO SOY MUY NOVATO AL RESPECTO HE TRATADO Y ME ILSUTRADO MUCHO AL RESPECTO PERO CREO QUE LA SINTAXIS DEL FOREACH AL SER UNA MATRIZ MULTIDIMENSIONAL NO LA EJECUTO CORRECTAMENTE.

ES POR ELLO QUE ACUDO A USTEDES PARA QUE ME ORIENTE Y DEN INSTRUCCIONES DE COMO HACERLO.

Última edición por GatorV; 10/03/2008 a las 09:14 Razón: Agregar tags PHP y titulo
  #2 (permalink)  
Antiguo 10/03/2008, 09:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Problemas con matriz

Hola Rodlake, bienvenido al foro, te pido que en un futuro uses títulos de temas mas descriptivos.

Respecto a como recorrer una matriz con el foreach lo puedes hacer así:
Código PHP:
foreach( $nombre as $row ) {
      list( 
$fila$cod_produ$cantidad$precio ) = $row;

      
// ya aquí tienes como variables $fila, $cod_produ, $cantidad y $precio

Saludos.
  #3 (permalink)  
Antiguo 10/03/2008, 09:38
 
Fecha de Ingreso: marzo-2008
Mensajes: 11
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas con matriz

Estimado, se agradece su bienvenida y tomare los resguardos indicados para futuras preguntas. Ahora respecto a sus indicaciones he generado lo siguiente, si estoy mal en lo que pude interpretar ruego me disculpen ya que estoy en estoy hace muy poco y se que pecare muchas veces de ignorante. Pero si no pregunto a expertos nunca aprendere.

Lo que hice ahora:

foreach( $nombre as $row ) {
list( $fila, $cod_produ, $cantidad, $precio ) = $row;

$qry="
INSERT INTO `detalle_docto` ( `COD_PRODUCTO` , `DOCTO_ID` , `ID_TIPO_DOCTO` , `DET_PRECIO_UNITARIO` , `DET_INGRESO` , `DET_EGRESO` , `DET_MERMA`, `ID_SUCURSAL`,`DET_PRECIO_COMPRA`,`ENT_ID`,`FECHA_ HORA`,`USU_ID`,`ID_ESTADO`,`id_turno`)
VALUES (
'".$nombre[$fila][1]."' , '$mayor', '$tipo_docto', ' ".round($nombre[$fila][4]*1.19)."' , '0' , '".$nombre[$fila][3]."' , '0' ,'$sucursal','0','$proveedor','$fecha $hora', '$usuario' , '$estado', '$id_turno')
";
mysql_query($qry,$conx);
}


Al Verfificar la BD sigue insertando la ultima fila de la consulta anterior. Snif snif no se que hacer .... Nuevamente gracias.
  #4 (permalink)  
Antiguo 10/03/2008, 10:05
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 5 meses
Puntos: 49
Re: Problemas con matriz

Código PHP:
foreach( $nombre as $row ) {
list( 
$fila$cod_produ$cantidad$precio ) = $row;

Las variables que necesitas insertar son $fila, $cod_producto, $cantidad, $precio, ya no necesitas trabajar directamente con el array $nombre pues ya has asignado valores para cada elemento de tu array.


Saludos.
  #5 (permalink)  
Antiguo 10/03/2008, 10:22
 
Fecha de Ingreso: marzo-2008
Mensajes: 11
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas con matriz

Cita:
Código PHP:
$sql="select
detalle_docto.COD_PRODUCTO,
DESC_PRODUCTO,
DET_EGRESO,
DET_PRECIO_UNITARIO
from docto
join detalle_docto on docto.docto_id=detalle_docto.docto_id
join producto on detalle_docto.cod_producto = producto.cod_producto
where docto.docto_id ='$docto_id' and  docto.id_tipo_docto = '9'
 ";
$rws=mysql_query($sql,$conx);
$fila=mysql_num_rows($rws);
if($fila!=0){
while ($rwr=mysql_fetch_array($rws))
 {


             $cod_produ=$rwr[0];
            $cantidad=$rwr[2];
            $precio=$rwr[3];


            $fila=$fila++;


             $nombre[$fila][0]=$fila;
            $nombre[$fila][1]=$cod_produ;
            $nombre[$fila][3]=$cantidad;
            $nombre[$fila][4]=$precio;


            $pventa=round($rwr[3]*1.19);
             $total=$rwr[2] * $pventa;



    ?>

    <tr>

        <td   bgcolor="#CCCCCC" class="odd Estilo2" style="border-bottom: 1 solid #525284;border-left: 1 solid #525284;border-right: 1 solid #525284;border-top: 1 solid #525284"><?php echo $nombre[$fila][1];?></td>

      <td   bgcolor="#CCCCCC" class="odd Estilo2" style="border-bottom: 1 solid #525284;border-left: 1 solid #525284;border-right: 1 solid #525284;border-top: 1 solid #525284"><?php echo $rwr[1];?></td>

      <td   bgcolor="#CCCCCC" class="odd" style="border-bottom: 1 solid #525284;border-left: 1 solid #525284;border-right: 1 solid #525284;border-top: 1 solid #525284"><div align="center" class="Estilo2"><?php echo $nombre[$fila][3];?></div></td>

      <td    bgcolor="#CCCCCC" class="odd" style="border-bottom: 1 solid #525284;border-left: 1 solid #525284;border-right: 1 solid #525284;border-top: 1 solid #525284"><div align="center" class="Estilo2">Unidades</div></td>

      <td   bgcolor="#CCCCCC" class="odd" style="border-bottom: 1 solid #525284;border-left: 1 solid #525284;border-right: 1 solid #525284;border-top: 1 solid #525284"><div align="center" class="Estilo2"><?php echo  round($nombre[$fila][4]*1.19);?> </div></td>

      <td   bgcolor="#CCCCCC" class="odd" style="border-bottom: 1 solid #525284;border-left: 1 solid #525284;border-right: 1 solid #525284;border-top: 1 solid #525284"><div align="right" class="Estilo2"><?php echo $total?></div></td>

    </tr>
    <?php

 $total_general
=($total_general+$total);
  }
Espero salga el codigo completo
  #6 (permalink)  
Antiguo 10/03/2008, 10:26
 
Fecha de Ingreso: marzo-2008
Mensajes: 11
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas con matriz

Cita:
Iniciado por Rodlake Ver Mensaje

foreach( $nombre as $row ) {
list( $fila, $cod_produ, $cantidad, $precio ) = $row;

$qry="
INSERT INTO `detalle_docto` ( `COD_PRODUCTO` , `DOCTO_ID` , `ID_TIPO_DOCTO` , `DET_PRECIO_UNITARIO` , `DET_INGRESO` , `DET_EGRESO` , `DET_MERMA`, `ID_SUCURSAL`,`DET_PRECIO_COMPRA`,`ENT_ID`,`FECHA_ HORA`,`USU_ID`,`ID_ESTADO`,`id_turno`)
VALUES (
'".$nombre[$fila][1]."' , '$mayor', '$tipo_docto', ' ".round($nombre[$fila][4]*1.19)."' , '0' , '".$nombre[$fila][3]."' , '0' ,'$sucursal','0','$proveedor','$fecha $hora', '$usuario' , '$estado', '$id_turno')
";
mysql_query($qry,$conx);
}




He Aqui el problema a mis males, la neurona no me da para mas. No se como sacar correctamente el insert.
SOY UN NOVATO. No se molesten si replico lo mismo. Si no necesitara la ayuda de expertos no estaria aqui molestando.
  #7 (permalink)  
Antiguo 10/03/2008, 10:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Problemas con matriz

Como ya te dijo Carlojas, solo tienes que pasar los datos correctos al INSERT, si ya los tienes, solo pasalos:
Código PHP:
foreach( $nombre as $row ) {
list( 
$fila$cod_produ$cantidad$precio ) = $row;

$qry="
INSERT INTO `detalle_docto` ( `COD_PRODUCTO` , `DOCTO_ID` , `ID_TIPO_DOCTO` , `DET_PRECIO_UNITARIO` , `DET_INGRESO` , `DET_EGRESO` , `DET_MERMA`, `ID_SUCURSAL`,`DET_PRECIO_COMPRA`,`ENT_ID`,`FECHA_ HORA`,`USU_ID`,`ID_ESTADO`,`id_turno`)
VALUES (
'"
.$cod_produ."' , '$mayor', '$tipo_docto', ' ".round($precio*1.19)."' , '0' , '".$cantidad."' , '0' ,'$sucursal','0','$proveedor','$fecha $hora', '$usuario' , '$estado', '$id_turno')
"
;
mysql_query($qry,$conx) or die( mysql_error() );

Saludos.
  #8 (permalink)  
Antiguo 10/03/2008, 11:00
 
Fecha de Ingreso: marzo-2008
Mensajes: 11
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas con matriz

Estimados, se agradece su buena voluntad, pero sigue insertandose la ultima fila.
Seguire analisando cada detalle de lo que me han indicado.
Si tiene otra sugerencia estare atento a ella.

Rodrigo Lagos
  #9 (permalink)  
Antiguo 10/03/2008, 11:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Problemas con matriz

Acabo de detectar que tu problema es a la hora de crear tu matriz:
Código PHP:
$rws=mysql_query($sql,$conx);
$fila=mysql_num_rows($rws);
if(
$fila!=0){
$contador 0;
while (
$rwr=mysql_fetch_array($rws))
 {
             
$cod_produ=$rwr[0];
            
$cantidad=$rwr[2];
            
$precio=$rwr[3];

            
$nombre[$contador][0]=$fila;
            
$nombre[$contador][1]=$cod_produ;
            
$nombre[$contador][3]=$cantidad;
            
$nombre[$contador][4]=$precio;  
            
$contador++; 
Tu problema era que tomabas la variable $fila de mysql_num_rows, y así no ibas a poder ciclar correctamente.

Saludos.
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 21:22.