Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con Array

Estas en el tema de Problema con Array en el foro de PHP en Foros del Web. Buenas, tengo una consulta que extrae todos los datos de la tabla (coasub) los datos son: coasubID,period, y amount. La consulta que utilizo es la ...
  #1 (permalink)  
Antiguo 15/06/2015, 04:42
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Problema con Array

Buenas, tengo una consulta que extrae todos los datos de la tabla (coasub) los datos son: coasubID,period, y amount. La consulta que utilizo es la siguiente;

Código:
<?php
mysql_connect("localhost", "usuario_mysql", "contraseña_mysql") or
    die("No se pudo conectar: " . mysql_error());
mysql_select_db("mibd");

$resultado = mysql_query("SELECT coasubID,period,amount FROM coasub WHERE coasubID='$coasubID'");

while ($fila = mysql_fetch_array($resultado)) {
   
echo "<tr><td>".$fila['$coasubID']."</td>
          <td>".$fila['$period']."</td>
          <td>".$fila['$amount']."</td></tr>";

}
?>
con este código saco la info que necesito, pero no de la forma en la que necesito mostrarla. Me explico: Necesitaría que la variable $period, fuera una columna de la tabla en vez mostrarse en una fila.

He estado mirando codigos sobre arrays multidimensionales y creí que di con la solución pero no logro meter correctamente los arreglos en el código de arriba.

Alguien puede echarme una mano?

Muchas gracias de antemano! :)
  #2 (permalink)  
Antiguo 15/06/2015, 05:53
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: Problema con Array

La sintaxis correcta seria llamar al indice del array sin el $, osea:

Código PHP:
$fila['coasubID'
  #3 (permalink)  
Antiguo 15/06/2015, 06:56
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con Array

Hola jpint,

Oh perdona, es un error al pasar el codigo al foro. La query funciona perfectamente, el problema no es ese.
  #4 (permalink)  
Antiguo 15/06/2015, 08:14
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: Problema con Array

No me refería a la query sino al bucle php:

Código PHP:
while ($fila mysql_fetch_array($resultado)) {
   
echo 
"<tr><td>".$fila['coasubID']."</td>
          <td>"
.$fila['period']."</td>
          <td>"
.$fila['amount']."</td></tr>";


  #5 (permalink)  
Antiguo 15/06/2015, 08:23
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con Array

Cita:
Iniciado por jpint Ver Mensaje
No me refería a la query sino al bucle php:

Código PHP:
while ($fila mysql_fetch_array($resultado)) {
   
echo 
"<tr><td>".$fila['coasubID']."</td>
          <td>"
.$fila['period']."</td>
          <td>"
.$fila['amount']."</td></tr>";


Si, eso ya está arreglado en el codigo. El problema es que con ese bucle no imprimo los resultados poniendo los periodos en columnas... ese es el problema.

Sabrias como hacerlo?
  #6 (permalink)  
Antiguo 15/06/2015, 08:29
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: Problema con Array

Parece que el código es correcto, has creado la tabla antes, no?
Se me ocurre que puedas imprimir un mensaje para comprobar que te este entrando en el bucle x veces:

Código PHP:
echo "<table>";

while (
$fila mysql_fetch_array($resultado)) { 
    
//solo para depuracion
echo "entra en el bucle<br>";

echo 
"<tr><td>".$fila['coasubID']."</td> 
          <td>"
.$fila['period']."</td> 
          <td>"
.$fila['amount']."</td></tr>"

}  

echo 
"</table>"
  #7 (permalink)  
Antiguo 15/06/2015, 08:45
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con Array

Cita:
Iniciado por jpint Ver Mensaje
Parece que el código es correcto, has creado la tabla antes, no?
Se me ocurre que puedas imprimir un mensaje para comprobar que te este entrando en el bucle x veces:

Código PHP:
echo "<table>";

while (
$fila mysql_fetch_array($resultado)) { 
    
//solo para depuracion
echo "entra en el bucle<br>";

echo 
"<tr><td>".$fila['coasubID']."</td> 
          <td>"
.$fila['period']."</td> 
          <td>"
.$fila['amount']."</td></tr>"

}  

echo 
"</table>"
Si si entra en bucle correctamente. No me he explicado bien. el problema que tengo es el siguiente:

Tal y como está ahora imprime lo siguiente:
cta periodo importe
7050000 01 150000
6070000 01 250000
7050000 02 300000
6070000 02 450000

y lo que quiero imprimir es:

cta periodo 01 periodo2
7050000 150000 300000
6070000 250000 450000

Me estoy rompiendo la cabeza y no encuentro la solución
  #8 (permalink)  
Antiguo 15/06/2015, 09:17
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: Problema con Array

Prueba este ejemplo, a ver si es lo que esta buscando, se podría optimizar para hacerlo todo con el mismo array, pero no he podido probarlo en marcha:

Código PHP:
<?php

//array de coasubID
$ctas  = array();
//array con el resto de valores
$data = array();

$resultado mysql_query("SELECT coasubID,period,amount FROM coasub WHERE coasubID='$coasubID'");

while (
$fila mysql_fetch_array($resultado)) {
    
$cta $fila['coasubID'];
    
$period $fila['period'];
    
$amount $fila['amount'];

    
//comprueba ya existe el coasubID en el array
    //si no esta ya incluido, lo añade
    
if (!in_array($cta$ctas)) array_push($ctas$cta);

    
//guarda los otros dos valores (el priodo como indice y el importe como valor)
    
$data[$cta][$period] = $amount;

}

//-------------------------------------
//valor con el que se deberian de haber creado los arrays
// $ctas  = array("7050000", "6070000");
// $data["7050000"]["01"] = 150000;
// $data["7050000"]["02"] = 250000;
// $data["6070000"]["01"] = 300000;
// $data["6070000"]["02"] = 400000;


echo "<table> 
    <tr>
        <td>Cantidad</td>
        <td>Periodo 01</td>
        <td>Periodo 02</td>
    </tr>"
;

$cont 0;
foreach (
$data as $line) {
    echo 
"<tr>
        <td>"
.$ctas[$cont]."</td>
        <td>"
.$line["01"]."</td>
        <td>"
.$line["02"]."</td>
    </tr>"
;

    
$cont++;
}

echo 
"</table>";


?>
Si además van a poder existir más de dos periodos, tendras que tener ese campo en cuenta también.
  #9 (permalink)  
Antiguo 15/06/2015, 09:25
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con Array

Cita:
Iniciado por jpint Ver Mensaje
Prueba este ejemplo, a ver si es lo que esta buscando, se podría optimizar para hacerlo todo con el mismo array, pero no he podido probarlo en marcha:

Código PHP:
<?php

//array de coasubID
$ctas  = array();
//array con el resto de valores
$data = array();

$resultado mysql_query("SELECT coasubID,period,amount FROM coasub WHERE coasubID='$coasubID'");

while (
$fila mysql_fetch_array($resultado)) {
    
$cta $fila['coasubID'];
    
$period $fila['period'];
    
$amount $fila['amount'];

    
//comprueba ya existe el coasubID en el array
    //si no esta ya incluido, lo añade
    
if (!in_array($cta$ctas)) array_push($ctas$cta);

    
//guarda los otros dos valores (el priodo como indice y el importe como valor)
    
$data[$cta][$period] = $amount;

}

//-------------------------------------
//valor con el que se deberian de haber creado los arrays
// $ctas  = array("7050000", "6070000");
// $data["7050000"]["01"] = 150000;
// $data["7050000"]["02"] = 250000;
// $data["6070000"]["01"] = 300000;
// $data["6070000"]["02"] = 400000;


echo "<table> 
    <tr>
        <td>Cantidad</td>
        <td>Periodo 01</td>
        <td>Periodo 02</td>
    </tr>"
;

$cont 0;
foreach (
$data as $line) {
    echo 
"<tr>
        <td>"
.$ctas[$cont]."</td>
        <td>"
.$line["01"]."</td>
        <td>"
.$line["02"]."</td>
    </tr>"
;

    
$cont++;
}

echo 
"</table>";


?>
Si además van a poder existir más de dos periodos, tendras que tener ese campo en cuenta también.
Muchas gracias jpint!

Lo pruebo esta tarde mismo y te comento... l
  #10 (permalink)  
Antiguo 15/06/2015, 14:20
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con Array

Cita:
Iniciado por jlusc98 Ver Mensaje
Muchas gracias jpint!

Lo pruebo esta tarde mismo y te comento... l
jpint, oye muchisimas gracias, me has salvado la vida, estaba totalmente atascado con ese tema y no me dejaba tirar adelante el proyecto. Ahora no solo funciona este sino que ya he entendido como implementar las arrays para otros reports que necesito sacar de la bd.

  #11 (permalink)  
Antiguo 16/06/2015, 11:24
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: Problema con Array

Me alegro de que te haya sido útil.

Un saludo!

Etiquetas: mysql, select, sql, tabla, 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 16:30.