Foros del Web » Programando para Internet » PHP »

pasar fila de números a columnas

Estas en el tema de pasar fila de números a columnas en el foro de PHP en Foros del Web. Buen día. Tengo la siguiente duda. Estoy imprimiendo registros de mi base de datos mysql en php con forma de matriz. el problema es que ...
  #1 (permalink)  
Antiguo 10/11/2014, 22:51
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 11 años, 1 mes
Puntos: 0
pasar fila de números a columnas

Buen día. Tengo la siguiente duda. Estoy imprimiendo registros de mi base de datos mysql en php con forma de matriz. el problema es que me esta imprimiendo los números consultados en forma de fila y tienen que estar en forma de columna. Me explico:

Matriz que me está generando:

|7|5|3|
|1|2|4|
|6|5|3|

Matriz que quiero generar:

|7|1|6|
|5|2|5|
|3|4|3|

Adicional a esto, me está repitiendo varias veces la matriz.
Alguien es tan amable de colaborarme por favor.
La variable $valor es la que utilizo para imprimir los numeros.

Código PHP:
        <?             
        $sql
="SELECT crear_cuest.cod_crear_cuest,crear_cuest.cod_tema,crear_cuest.item,dilig_cuest.cod_crear_cuest,dilig_cuest.cod_experto,
                     dilig_cuest.valor  
              FROM crear_cuest,dilig_cuest
              WHERE crear_cuest.cod_tema=$_GET[id] AND crear_cuest.cod_crear_cuest=dilig_cuest.cod_crear_cuest
              "
;
       
$result=mysql_query($sql,$link);
       
$p=false;
       
$comprobar="";
       
$experto=array();
       
$items=array();
       
$i=0;
       
$valores=array();
            while(
$row=mysql_fetch_array($result))
            {
                if(
$comprobar==$row[item])
                    
$p=true;
                else {
                    
$comprobar=$row[item];
                    
$p=false;
                    
$i++;
                     }
           
               if(
$p==false){
                   
$items[$i]=$row[item];
                         }
               
$valores[$j]=$row[valor];
               
$experto[$j]=$row[cod_experto];    
               
$j++;    
         }
                 
         echo 
"<table border><tr><th>ITEM</th>";
         foreach(
$experto as $t=>$valor)
          {
          echo 
"<th>$valor</th>";
          }

         foreach(
$items as $k=>$items2)
         {
         echo 
"<tr>";    
         echo 
"<td> $items2</td>";
           foreach(
$valores as $t=>$valor)
           {
             echo 
"<td>$valor</td>";
           }
         echo 
"</tr>";
         }
         echo 
"</tr>";
         echo 
"</table>";
        
?>
Resultado:

http://subefotos.com/ver/?a37b6ea943...590efb9bdo.jpg

Última edición por andre___5025; 10/11/2014 a las 22:52 Razón: Cambio de numero
  #2 (permalink)  
Antiguo 11/11/2014, 08:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: pasar fila de números a columnas

Aquí hay soluciones creo....

http://stackoverflow.com/questions/7...-arrays-in-php
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 11/11/2014, 10:10
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: pasar fila de números a columnas

Mira por ejemplo tengo este código que me arroja lo siguiente:

ITEM |Jose|Maria|Juan|
Item1|10 |12 |3 |
Item2|10 |12 |3 |
Item3|10 |12 |3 |

Código PHP:
Ver original
  1. <?php
  2. $items=array("Item1","Item2","Item3");
  3. $experto=array("Jose","Maria","Juan");
  4. $valores=array(10,12,3);
  5. echo "<table border><tr><th>ITEM</th>";      
  6.          foreach($experto as $e=>$valor_exp)
  7.           {
  8.           echo "<th>$valor_exp</th>";
  9.           }
  10.  
  11.          
  12.          foreach($items as $i=>$valor_items)
  13.           {
  14.             echo "<tr>";
  15.             echo "<td>$valor_items</td>";
  16.                    foreach($valores as $v=>$valor_valores)
  17.                     {  
  18.                     echo "<td>$valor_valores</td>";
  19.                     }
  20.                     echo "</tr>";
  21.           }
  22.           echo "</tr>";
  23.           echo "</table>";
  24. ?>

Y quiero que me arroje lo siguiente:

ITEM |Jose|Maria|Juan|
Item1|10 |10 |10 |
Item2|12 |12 |12 |
Item3|3 |3 |3 |

Hay forma de transponer la matriz con el foreach?
  #4 (permalink)  
Antiguo 11/11/2014, 12:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: pasar fila de números a columnas

Facilmente puedes adaptar estos ejemplos...


Código PHP:
Ver original
  1. <?php
  2. $foo=array(
  3.     0 => array(
  4.             0 => 'a1',
  5.             1 => 'a2',
  6.             2 => 'a3'
  7.         ),
  8.  
  9.     1 => array(
  10.             0 => 'a1',
  11.             1 => 'a2',
  12.             2 => 'a3'
  13.         ),
  14.  
  15.     2 => array(
  16.             0 => 'a1',
  17.             1 => 'a2',
  18.             2 => 'a3'
  19.         )
  20.  
  21. );
  22.  
  23. $foo2 = array(
  24.     0 => array(
  25.        'a' => 'a1',
  26.        'b' => 'a2',
  27.        'c' => 'a3'
  28.     ),
  29.     1 => array(
  30.        'a' => 'b1',
  31.        'b' => 'b2',
  32.        'c' => 'b3'
  33.     ),
  34.     2 => array(
  35.        'a' => 'c1',
  36.        'b' => 'c2',
  37.        'c' => 'c3'
  38.     ),
  39.     3 => array(
  40.        'a' => 'd1',
  41.        'b' => 'd2',
  42.        'c' => 'd3'
  43.     )
  44. );
  45. echo "<pre>";
  46. print_r($foo);
  47. echo "</pre>";
  48.  
  49. $elements=count($foo, COUNT_RECURSIVE);
  50. $files=count($foo);
  51. $elementsFila=($elements-$files)/$files;
  52.  
  53. echo "<br />elements ".$elements.", ";
  54. echo "files ".$files.", ";
  55. echo "elementsFila ".$elementsFila."<br /><br />";
  56.  
  57. echo "Array tal cual<br /><br />";
  58.  
  59. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  60. for($f=0;$f<$files;$f++){
  61. echo "<tr>";
  62.     for($e=0;$e<$elementsFila;$e++){
  63.         echo "<td>".$foo[$f][$e]."</td>";
  64.     }
  65. echo "</tr>";
  66.     }
  67. echo  "</table>";
  68. echo  "<br /><br />";
  69. echo "Array transpuesta<br /><br />";
  70. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  71. for($e=0;$e<$elementsFila;$e++){
  72.         echo "<tr>";
  73.     for($f=0;$f<$files;$f++){
  74.             echo "<td>".$foo[$f][$e]."</td>";
  75.     }
  76.         echo "</tr>";
  77. }
  78. echo  "</table>";
  79. echo  "<br /><br />";
  80. echo "Array invertida<br /><br />";
  81. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  82. for($f=$files-1;$f>=0;$f--){
  83. echo "<tr>";
  84.     for($e=$elementsFila-1;$e>=0;$e--){
  85.         echo "<td>".$foo[$f][$e]."</td>";
  86.     }
  87. echo "</tr>";
  88.     }
  89. echo  "</table>";
  90.  
  91. echo "<br /><br />";
  92.  
  93. echo "<pre>";
  94. print_r($foo2);
  95. echo "</pre>";
  96.  
  97. $elements=count($foo2, COUNT_RECURSIVE);
  98. $files=count($foo2);
  99. $elementsFila=($elements-$files)/$files;
  100. $claus=array_keys($foo2[0]);
  101.  
  102. echo "<pre>";
  103. print_r($claus);
  104. echo "</pre>";
  105.  
  106.  
  107. echo "<br />elements ".$elements.", ";
  108. echo "files ".$files.", ";
  109. echo "elementsFila ".$elementsFila."<br /><br />";
  110.  
  111. echo "Array tal cual<br /><br />";
  112.  
  113. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  114. for($f=0;$f<$files;$f++){
  115. echo "<tr>";
  116.     for($e=0;$e<count($claus);$e++){
  117.         echo "<td>".$foo2[$f][$claus[$e]]."</td>";
  118.     }
  119. echo "</tr>";
  120.     }
  121. echo  "</table>";
  122. echo  "<br /><br />";
  123. echo "Array transpuesta<br /><br />";
  124. $foo3=array();
  125. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  126. for($e=0;$e<count($claus);$e++){
  127.         echo "<tr>";
  128.     for($f=0;$f<$files;$f++){
  129.             echo "<td>".$foo2[$f][$claus[$e]]."</td>";
  130.             $foo3[$claus[$e]][$f]=$foo2[$f][$claus[$e]];
  131.     }
  132.         echo "</tr>";
  133. }
  134.  
  135. echo  "</table>";
  136. echo  "<br /><br />";
  137. echo "Array invertida<br /><br />";
  138. echo "<table border='0' cellspacing='3' cellpadding='0'>";
  139. for($f=$files-1;$f>=0;$f--){
  140. echo "<tr>";
  141.     for($e=count($claus)-1;$e>=0;$e--){
  142.         echo "<td>".$foo2[$f][$claus[$e]]."</td>";
  143.     }
  144. echo "</tr>";
  145.     }
  146. echo  "</table>";
  147.  
  148. echo  "<br /><br />Aqui tenemos foo3 que es foo2 transpuesta<br /><br />";
  149.  
  150. echo "<pre>";
  151. print_r($foo3);
  152. echo "</pre>";
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 11/11/2014 a las 12:20

Etiquetas: columnas, fila, mysql, registro, select, sql, variable
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 20:41.