Foros del Web » Programando para Internet » PHP »

Resultado consulta sql a array multidimensional

Estas en el tema de Resultado consulta sql a array multidimensional en el foro de PHP en Foros del Web. Hola, a ver si alguien puede ayudarme en un script que estoy haciendo, necesito pasar los resultados de una consulta sql a un array multidimensional ...
  #1 (permalink)  
Antiguo 11/05/2006, 08:46
 
Fecha de Ingreso: mayo-2006
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Resultado consulta sql a array multidimensional

Hola, a ver si alguien puede ayudarme en un script que estoy haciendo, necesito pasar los resultados de una consulta sql a un array multidimensional en php. La consulta sql devuelve varias filas, cada una de ellas con 6 atributos y tengo que introducirlas en un array para despues pasarlo a flash mediante flashremoting. Estoy probando a utilizar la funcion mysql_fetch_assoc pero no consigo hacerlo.

Muchas gracias.
Salu2.
  #2 (permalink)  
Antiguo 11/05/2006, 08:58
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Si lo que queres es hacer un arreglo cuyos elementos son las filas de la consulta, lo podés hacer de esta forma:

Código PHP:
<? 
//Conectas con la base de datos y todo eso
$resultado mysql_query($consulta);
while (
$fila mysql_fetch_row($resultado)) {
$datos[] = $fila;  //cada elemento de $datos va a ser una fila del resultado;
}
Saludos.
  #3 (permalink)  
Antiguo 11/05/2006, 09:03
Avatar de ProWebDeveloper  
Fecha de Ingreso: julio-2005
Ubicación: Maracay - Edo. Aragua
Mensajes: 117
Antigüedad: 12 años, 4 meses
Puntos: 1
Tambien podria ser asi...

Código PHP:
 <?  
//Conectas con la base de datos y todo eso 
$resultado mysql_query($consulta); 
$i 0;
while (
$fila mysql_fetch_row($resultado)) { 
$datos[$i]['atributo_1']= $fila['campo_atributo_1'];
$datos[$i]['atributo_2']= $fila['campo_atributo_2'];
$datos[$i]['atributo_3']= $fila['campo_atributo_3'];
$datos[$i]['atributo_n']= $fila['campo_atributo_n'];
$i++;
?>
De esta forma todos los atributos 1 de cada fila estaran en el arreglo 'atributo_1' pero en diferentes poscisiones.. y asi suscesivamente con cada atributo (atributo 2, 3, 4. n) ...

Me imagino que los atributos estan en la misma tabla... y q cada fila de resultado tiene los atributos...

Saludos...
__________________
ProWebDeveloper
  #4 (permalink)  
Antiguo 11/05/2006, 09:21
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Cita:
Iniciado por ProWebDeveloper
Tambien podria ser asi...

Código PHP:
 <?  
//Conectas con la base de datos y todo eso 
$resultado mysql_query($consulta); 
$i 0;
while (
$fila mysql_fetch_row($resultado)) { 
$datos[$i]['atributo_1']= $fila['campo_atributo_1'];
$datos[$i]['atributo_2']= $fila['campo_atributo_2'];
$datos[$i]['atributo_3']= $fila['campo_atributo_3'];
$datos[$i]['atributo_n']= $fila['campo_atributo_n'];
$i++;
?>
De esta forma todos los atributos 1 de cada fila estaran en el arreglo 'atributo_1' pero en diferentes poscisiones.. y asi suscesivamente con cada atributo (atributo 2, 3, 4. n) ...
Si no me equivoco, creo que eso daria el mismo resultado que el script que publica en el post anterior.
Saludos.
  #5 (permalink)  
Antiguo 11/05/2006, 09:22
 
Fecha de Ingreso: mayo-2006
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Muchas gracias, todo resuelto
Vaya rapidez en el foro, la verdad es que no lo conocia... intentare resolver las dudas que pueda por aqui
  #6 (permalink)  
Antiguo 11/05/2006, 10:27
Avatar de ProWebDeveloper  
Fecha de Ingreso: julio-2005
Ubicación: Maracay - Edo. Aragua
Mensajes: 117
Antigüedad: 12 años, 4 meses
Puntos: 1
De acuerdo

Por cierto... Bienvenido _aisha_ a Foros del Web

Cita:
Iniciado por Notwen
Si no me equivoco, creo que eso daria el mismo resultado que el script que publica en el post anterior.
Saludos.
Si pero de esta forma lo organizas por atributo o campo... es decir son varios arreglos para cada atributo y asi puedes manejar mejor la informacion.. imaginatelo como si fuese una tabla o matriz.. por eso fue que puse que tambien servia de esta forma...

Saludos..
__________________
ProWebDeveloper
  #7 (permalink)  
Antiguo 11/05/2006, 11:44
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Insisto en que los arreglos serian idénticos. Es más, creo que generas dos arreglos, uno por cada script, y despues los comparas ($arreglo1 == $arreglo2) te va a devolver true.
Por otro lado, si utilizas mysql_fetch_row(), los índices del arreglo serían numéricos, por lo que no se prodría acceder a ellos como 'campo_atributo_1', etc. Para acceder de esa forma habría que utilizar mysql_fetch_assoc(). Ahí los índices de los arreglos serían distintos pero los valores seguirían siendo los mismos.
Saludos.
  #8 (permalink)  
Antiguo 11/05/2006, 12:56
Avatar de ProWebDeveloper  
Fecha de Ingreso: julio-2005
Ubicación: Maracay - Edo. Aragua
Mensajes: 117
Antigüedad: 12 años, 4 meses
Puntos: 1
De acuerdo

no mi amigo yo puedo acceder a un arreglo asi tambien...

por ejemplo...

Código PHP:
$arrFrutas[0]['Fruta'] = "Cambur";
$arrFrutas[1]['Fruta'] = "Patilla";
$arrFrutas[2]['Fruta'] = "Mango";

$arrFrutas[0]['Color'] = "Amarillo";
$arrFrutas[1]['Color'] = "Rojo";
$arrFrutas[2]['Color'] = "Verde";

for(
$i=0;$i<sizeof($arrFrutas);$i++){

    echo 
"El/La ".$arrFrutas[$i]['Fruta']." es de color ".$arrFrutas[$i]['Color'];


Hay varias formas de usar los arreglos.. esta es otra y es la que particularmente utilizo para "visualmente" y a manera de programacion, mantener el codigo y los resultados ordenados...

Saludos...
__________________
ProWebDeveloper
  #9 (permalink)  
Antiguo 11/05/2006, 13:37
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Insisto en que no encuentro la diferencia. La definicion de esa matriz es lo mismo que hacerla de esta forma:

Código PHP:
<?
$arrFrutas
[] = array('Fruta' => "Cambur"'Color'=> "Amarillo");
$arrFrutas[] = array('Fruta' => "Patilla"'Color'=> "Rojo");
$arrFrutas[] = array('Fruta' => "Mango"'Color'=> "Verde");
?>
que en definitiva es lo mismo que hace el script que publiqué. Como consejo, podrias utilizar foreach para recorrer la matriz en lugar de for ya que su utilización hace el código un poco más claro:

Código PHP:
<?
foreach ($arrFrutas as $valor) {
    echo 
"El/La ".$valor['Fruta']."    es de color ".$valor['Color'];
    }
?
Saludos.
  #10 (permalink)  
Antiguo 11/05/2006, 13:53
 
Fecha de Ingreso: septiembre-2002
Mensajes: 122
Antigüedad: 15 años, 3 meses
Puntos: 0
Totalmente de acuerdo contigo Notwen...las dos formas son soluciones pero como lo colocaste es mas eficiente.
  #11 (permalink)  
Antiguo 11/05/2006, 16:21
 
Fecha de Ingreso: mayo-2006
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Al final opte por hacerlo de esta forma porque me parecio mas intuitivo a la hora de verlo.
Código PHP:
<?  
//Conectas con la base de datos y todo eso 
$resultado mysql_query($consulta); 
$i 0;
while (
$fila mysql_fetch_row($resultado)) { 
$datos[$i]['atributo_1']= $fila['campo_atributo_1'];
$datos[$i]['atributo_2']= $fila['campo_atributo_2'];
$datos[$i]['atributo_3']= $fila['campo_atributo_3'];
$datos[$i]['atributo_n']= $fila['campo_atributo_n'];
$i++;
?>
Les puedo hacer una ultima pregunta?... es que tengo que desordenar el array, ya se que se puede hacer con sql, pero ademas quiero hacerlo en php, ya que cada array contiene datos de distintas consultas y al introducirse de forma escalonada se quedan ordenados por bloques.

He estado probando con la funcion shuffle(), pero no consigo lograrlo, al ser un array multidimensional no se si se podria con esta funcion...

Saludos
  #12 (permalink)  
Antiguo 12/05/2006, 10:01
 
Fecha de Ingreso: mayo-2006
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Ya logre hacerlo :), aqui dejo el codigo por si le sirve a alguien.

Código PHP:
$num range(1,4); //Numero de elementos del array
shuffle($num);
while (list(,
$numero) = each($num))
{
    
$array2[$numero]['idpregunta']=$array[$x]['idpregunta'];
    
$array2[$numero]['enunciado']=$array[$x]['enunciado'];
    
$array2[$numero]['resp1']=$array[$x]['resp1'];
    
$array2[$numero]['resp2']=$array[$x]['resp2'];
    
$array2[$numero]['resp3']=$array[$x]['resp3'];
    
$array2[$numero]['respcorrecta']=$array[$x]['respcorrecta'];
    
$x++;

Asi en el array2 quedan los mismo datos desordenados
  #13 (permalink)  
Antiguo 15/06/2006, 18:15
Avatar de K-Yezaad  
Fecha de Ingreso: octubre-2005
Mensajes: 140
Antigüedad: 12 años, 1 mes
Puntos: 3
Pues yo use el codigo de notwen y me creo la tabla perfectamente, use la funcion mysql_fetch_assoc y asi finalmente pude dar con el modo de indexar una aplicacion de posts sencilla que estoy haciendo para mantener organizado un sitio propio. Solo llamo a los array $blog[$post]['content'] $blog[$post]['title'] $blog[$post]['date'] y puedo llamar a cualquier post de un rango determinado de archivos.

Si el problema es lo intuitivo, pues basta conque conozcas como se llaman las columnas de tu tabla 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 18:37.