Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Almacenar datos de una sentencia en un array php

Estas en el tema de Almacenar datos de una sentencia en un array php en el foro de PHP en Foros del Web. Se que es una duda simple, pero toy empezando, agradezco a todo el que me conteste (si puede ser lo más simple del mundo xD). ...
  #1 (permalink)  
Antiguo 20/07/2015, 06:04
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Almacenar datos de una sentencia en un array php

Se que es una duda simple, pero toy empezando, agradezco a todo el que me conteste (si puede ser lo más simple del mundo xD).


Mi código hasta el momento:

<?php

$mysqli = new mysqli(" ", " ", " ", "bd");

if ($mysqli->connect_errno) {
echo "Fallo al contenctar a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$consulta = "SELECT email from emails where activo = 0 " ;

$resultado = $mysqli->query($consulta) ;

$tope=$resultado->num_rows;

$fila = mysqli_fetch_array($resultado);





?>

He llegado a hacer la consulta, el num-rows de la consulta es 3, pero no consigo que me rellene un array cn los diferentes resultados. H
Un saludo!
  #2 (permalink)  
Antiguo 20/07/2015, 06:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Almacenar datos de una sentencia en un array php

@Morod0:
Lo primero que debes hacer si estás aprendiendo, es leer el manual de referencia, y consultarlo cada vez que tengas una duda, antes de tirar una pregunta en cualquier foro (este o cualquier otro).
Se aprecia mucho que el forista intente resolver el problema por su cuenta, y nos informe qué fue lo que intentó para hacerlo, antes de preguntar.
Ayuda a no repetir respuestas de cosas que ya se intentaron.

De haberlo hecho así, hubieses encontrado la respuesta en mas o menos unos tres segundos, porque existe un método en la librería MYSQLI para eso:

http://php.net/manual/es/mysqli-result.fetch-all.php
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/07/2015, 06:52
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por gnzsoloyo Ver Mensaje
@Morod0:
Lo primero que debes hacer si estás aprendiendo, es leer el manual de referencia, y consultarlo cada vez que tengas una duda, antes de tirar una pregunta en cualquier foro (este o cualquier otro).
Se aprecia mucho que el forista intente resolver el problema por su cuenta, y nos informe qué fue lo que intentó para hacerlo, antes de preguntar.
Ayuda a no repetir respuestas de cosas que ya se intentaron.

De haberlo hecho así, hubieses encontrado la respuesta en mas o menos unos tres segundos, porque existe un método en la librería MYSQLI para eso:

[url]http://php.net/manual/es/mysqli-result.fetch-all.php[/url]


Gracias por la respuesta, no sabía que existía una preocupación tan grande por la entrada de nuevos post en el foro...

Voy a echarle un ojo al enlace que me has pasado, aunque viendo por encima tengo claro que me lo se de memoria(otra cosa es que sepa implementarlo) ya que llevo "pegándome tortazos" con este problema más de tres días, comprendo que no hay ningún tipo de dificultad para ti en esto, pero para alguien que acaba de empezar y que no ha recibido ningún tipo de enseñanza al respecto, la hay y mucho y entrar en un foro a preguntar es de lo ultimo que hago.

Un saludo
  #4 (permalink)  
Antiguo 20/07/2015, 07:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Almacenar datos de una sentencia en un array php

No es una "preocupación", sería largo de explicarlo, pero el tema es que lo primero que siempre sugerimos con temas base es que usen el buscador del foro ya que lo más probable es que l tema se haya tratado antes en más de una ocasión. Como podrás imaginarte, responder N veces la misma pregunta a N nuevos miembros en ocasión puede terminar siendo poco interesante. Sin pretender ofender.
El riesgo de preguntar cosas que se resuelvan en el manual (y esto pasa en CUALQUIER foro de programadores) es que no te respondan, o bien que te manden a leer el manual...

TODOS leemos el manual. Sea de programación, Bases de Detos, especificaciones de redes, telecomunicaciones, sistemas operativos, o lo que fuese, porque NADIE se pone a memorizar todo.

Leer un manual no es una vergüenza. Es parte de la tarea diaria de cualquier desarrollador, por lo cual no debes sentirte molesto ni herido si alguien te dice que la respuesta está alli.
¿Tienes una idea de cuantos manuales consulto de Sistemas de Bases de Datos todas las semanas para verificar detalles, y yo me dedico profesionalmente al tema?
Muchos. Y no me molesta que me digan que revise la documentación...

¿Se entiende?


Revisa los ejemplos del manual. Son bastante instructivos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 20/07/2015, 10:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Almacenar datos de una sentencia en un array php

¿Más de tres días perdiendo el tiempo sin leer el manual?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 21/07/2015, 01:25
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No es una "preocupación", sería largo de explicarlo, pero el tema es que lo primero que siempre sugerimos con temas base es que usen el buscador del foro ya que lo más probable es que l tema se haya tratado antes en más de una ocasión. Como podrás imaginarte, responder N veces la misma pregunta a N nuevos miembros en ocasión puede terminar siendo poco interesante. Sin pretender ofender.
El riesgo de preguntar cosas que se resuelvan en el manual (y esto pasa en CUALQUIER foro de programadores) es que no te respondan, o bien que te manden a leer el manual...

TODOS leemos el manual. Sea de programación, Bases de Detos, especificaciones de redes, telecomunicaciones, sistemas operativos, o lo que fuese, porque NADIE se pone a memorizar todo.

Leer un manual no es una vergüenza. Es parte de la tarea diaria de cualquier desarrollador, por lo cual no debes sentirte molesto ni herido si alguien te dice que la respuesta está alli.
¿Tienes una idea de cuantos manuales consulto de Sistemas de Bases de Datos todas las semanas para verificar detalles, y yo me dedico profesionalmente al tema?
Muchos. Y no me molesta que me digan que revise la documentación...

¿Se entiende?


Revisa los ejemplos del manual. Son bastante instructivos.

Gracias por la aclaración!
  #7 (permalink)  
Antiguo 21/07/2015, 01:27
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Más de tres días perdiendo el tiempo sin leer el manual?
Te explico, concretamente, el link que me ha puesto el moderador ya lo he consultado unas cuantas bastantes veces, pero no consigo implementarlo, a mi parecer me falta entender la lógica de php, pero vamos, que la proxima vez hasta que no me sangren los ojos no pregunto.
  #8 (permalink)  
Antiguo 21/07/2015, 03:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Almacenar datos de una sentencia en un array php

OK.
Si has intentado algo, y no te sale porque aun no lo terminas de entender, pues postea el código que probaste y pregunta tus dudas.
Si no vemos lo que haces no podemos guiarte.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 21/07/2015, 05:28
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por gnzsoloyo Ver Mensaje
OK.
Si has intentado algo, y no te sale porque aun no lo terminas de entender, pues postea el código que probaste y pregunta tus dudas.
Si no vemos lo que haces no podemos guiarte.
Ok! muchas gracias, ya he conseguido obtener en un array los resultados a través de $resultado->fetch_assoc() , ahora me falta averiguar como separar los resultados, ya que me sale todo en una sola fila. Sigo peleandome!


Que vaya bien!
  #10 (permalink)  
Antiguo 21/07/2015, 05:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Almacenar datos de una sentencia en un array php

Y... seré curioso....
¿Por qué no posteas el código que tienes, como te digo?
¿Realmente necesitas guía o lo quieres resolver por ti mismo?

Pregunto porque sería bueno no tratar de volver a inventar el agujero del mate... El mate ya tiene uno.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 21/07/2015, 06:48
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Y... seré curioso....
¿Por qué no posteas el código que tienes, como te digo?
¿Realmente necesitas guía o lo quieres resolver por ti mismo?

Pregunto porque sería bueno no tratar de volver a inventar el agujero del mate... El mate ya tiene uno.
me gusta pelearme porque realmente asi es como más aprendo, pero si es verdad que llega un momento en el que el desespero me puede, por eso empece a buscar foros y este me pareció el mejor.


<?php

$mysqli = new mysqli(" host ", "user", "pass", "bd");

if ($mysqli->connect_errno) {
echo "Fallo al contenctar a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$consulta = "SELECT email from emails where activo = 0 " ;

$resultado = $mysqli->query($consulta) ;

while ($fila = $resultado->fetch_assoc()) {

$emails= $fila;

}


?>

No sé como lo poneis vosotros que se ve como si fuera el propio IDE, pero bueno siento ponerlo así.

Ahora mismo tengo en $emails una fila con todos los emails que cumplen la consulta, eso si, todos juntos en una sola fila sin separaciones, así que estoy pasando la mañana para ver como separarlo en un array por posiciones, he intentado con por ejemplo "explode", pero nada, la verdad es que pensaba que fetch_assoc() me lo iba a dar más facilito .

Un saludo y muchas gracias por el interés.
  #12 (permalink)  
Antiguo 21/07/2015, 14:45
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Almacenar datos de una sentencia en un array php

si lo haces asi???
Código PHP:
Ver original
  1. <?php
  2.  
  3. $mysqli = new mysqli(" host ", "user", "pass", "bd");
  4.  
  5. if ($mysqli->connect_errno) {
  6. echo "Fallo al contenctar a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
  7. }
  8.  
  9. $consulta = "SELECT email from emails where activo = 0 " ;
  10.  
  11. $resultado = $mysqli->query($consulta) ;
  12.  
  13. while ($fila = $resultado->fetch_array()) {
  14.  
  15. echo $fila['email']."<br>";
  16.  
  17. }
  18.  
  19.  
  20. ?>
aclaro no se que es lo que necesitas en realidad
__________________
[email protected]
HITCEL
  #13 (permalink)  
Antiguo 21/07/2015, 14:55
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Almacenar datos de una sentencia en un array php

En la sección del manual de PHP en donde se trata sobre la función mysqli_fetch_array que es la que usas para la fila de resultados, un usuario publicó un ejemplo en donde realiza precisamente lo que buscas hacer. Aquí el enlace.

Solo como consejo, siempre consulta el manual antes de publicar una duda y hazlo varias veces porque no siempre se logra dar con lo que se busca en la primera búsqueda.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 21/07/2015 a las 15:33 Razón: Redundancia
  #14 (permalink)  
Antiguo 21/07/2015, 15:15
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Almacenar datos de una sentencia en un array php

no necesitas hacer ningun xplode ni nada de eso, no al menos en este caso
Código PHP:
Ver original
  1. <?php
  2.  
  3. $mysqli = new mysqli(" host ", "user", "pass", "bd");
  4.  
  5. if ($mysqli->connect_errno) {
  6. echo "Fallo al contenctar a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
  7. }
  8.  
  9. $consulta = "SELECT email from emails where activo = 0 " ;
  10.  
  11. $resultado = $mysqli->query($consulta) ;
  12.  
  13. //aqui creo el array
  14. while ($fila = $resultado->fetch_array()) {
  15.  
  16. //aqui separo cada email y creo una columna con ellos por separado, pero igual los puedes arreglar en lo que necesites, una tabla por ejemplo
  17. echo $fila['email']."<br>";
  18.  
  19. }
  20.  
  21.  
  22. ?>
__________________
[email protected]
HITCEL
  #15 (permalink)  
Antiguo 21/07/2015, 15:25
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Almacenar datos de una sentencia en un array php

aqui muestras los registros numerados en una tabla:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $mysqli = new mysqli(" host ", "user", "pass", "bd");
  4.  
  5. if ($mysqli->connect_errno) {
  6. echo "Fallo al contenctar a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
  7. }
  8.  
  9. $consulta = "SELECT email from emails where activo = 0 " ;
  10.  
  11. $resultado = $mysqli->query($consulta) ;
  12.  
  13. //aqui creo el array
  14.  
  15. //creo una tabla
  16. echo    "<table>";
  17. echo        "<tr><th>Nº</th><th>Email</th></tr>";
  18.  
  19. //inicio el contador
  20. $con=0;
  21.  
  22. //inicio el array
  23. while ($fila = $resultado->fetch_array()) {
  24.  
  25. //celda que se repite con los registros
  26. echo "<tr><td>".$con."</td><td>".$fila['email']."</td></tr>";
  27.  
  28. $con++;
  29. }
  30.  
  31. //cierro la tabla
  32. echo "</table>";
  33.  
  34. ?>
__________________
[email protected]
HITCEL
  #16 (permalink)  
Antiguo 22/07/2015, 00:21
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por Alexis88 Ver Mensaje
En la sección del manual de PHP en donde se trata sobre la función mysqli_fetch_array que es la que usas para la fila de resultados, un usuario publicó un ejemplo en donde realiza precisamente lo que buscas hacer. [URL="http://php.net/manual/es/mysqli-result.fetch-array.php#95881"]Aquí el enlace[/URL].

Solo como consejo, siempre consulta el manual antes de publicar una duda y hazlo varias veces porque no siempre se logra dar con lo que se busca en la primera búsqueda.

Saludos
lo comenté ayer, ya miré el manual y lo intenté implementar mil veces, el problema es que me he metido a hacer cosas sin haber aprendido lo más básico, por eso me cuesta interpretarlo aun con los ejemplos, ahora ya más o menos lo voy pillando! gracias por el consejo
  #17 (permalink)  
Antiguo 22/07/2015, 00:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Almacenar datos de una sentencia en un array php

No sé si viste el ejemplo al que me refería, pero con copiar y pegar lo que se muestra ahí y reemplazar datos como los de la conexión y la tabla y campo de la consulta, así como su condición, era suficiente.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #18 (permalink)  
Antiguo 22/07/2015, 00:57
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por xfxstudios Ver Mensaje
aqui muestras los registros numerados en una tabla:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $mysqli = new mysqli(" host ", "user", "pass", "bd");
  4.  
  5. if ($mysqli->connect_errno) {
  6. echo "Fallo al contenctar a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
  7. }
  8.  
  9. $consulta = "SELECT email from emails where activo = 0 " ;
  10.  
  11. $resultado = $mysqli->query($consulta) ;
  12.  
  13. //aqui creo el array
  14.  
  15. //creo una tabla
  16. echo    "<table>";
  17. echo        "<tr><th>Nº</th><th>Email</th></tr>";
  18.  
  19. //inicio el contador
  20. $con=0;
  21.  
  22. //inicio el array
  23. while ($fila = $resultado->fetch_array()) {
  24.  
  25. //celda que se repite con los registros
  26. echo "<tr><td>".$con."</td><td>".$fila['email']."</td></tr>";
  27.  
  28. $con++;
  29. }
  30.  
  31. //cierro la tabla
  32. echo "</table>";
  33.  
  34. ?>
Vale, me da el mismo resultado utilizando fetch_array() que * assoc(), leí que para el caso es lo mismo.

El tema era simplemente hacer un select a la bd y meter los resultados en un array, con lo que tu me has puesto he visto una cosa que no sabía, puesto que si es verdad que se puede mostrar los resultados separados, por lo que entiendo, que con cada pasada del while se muestra un resultado(obvio :S), pero ahora bien, porque narices no funciona esto :

$i = 1;

$array = array();

while ($fila = $resultado->fetch_array()) {

$array[$i] = $fila['email'];

$i++ ;
}
echo $array[1] ;



Se supone que en $array [] se va guardando el resultado, pero esto así no funciona, no me da error pero si me sale en blanco, alguna idea?

Muchas gracias por la ayuda!
  #19 (permalink)  
Antiguo 22/07/2015, 01:01
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por Alexis88 Ver Mensaje
No sé si viste el ejemplo al que me refería, pero con copiar y pegar lo que se muestra ahí y reemplazar datos como los de la conexión y la tabla y campo de la consulta, así como su condición, era suficiente.
si si, al final obtuve los resultados en un array, pero ahora el problema esta en el tratamiento de los datos, si yo quisiera hacer un bucle que lo recorra necesitaría tener posición del array x resultado , es decir, array[1],array[2],array[3]... pero no, me devuelve todo en una sola posición..gracias por la ayuda!
  #20 (permalink)  
Antiguo 22/07/2015, 01:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Almacenar datos de una sentencia en un array php

Por favor, haz lo siguiente:

Código PHP:
Ver original
  1. echo '<pre>';
  2. print_r($array); //$array es tu array resultante
  3. echo '</pre>';

Y muéstranos el resultado.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #21 (permalink)  
Antiguo 22/07/2015, 01:33
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Almacenar datos de una sentencia en un array php

Cita:
Iniciado por Alexis88 Ver Mensaje
Por favor, haz lo siguiente:

Código PHP:
Ver original
  1. echo '<pre>';
  2. print_r($array); //$array es tu array resultante
  3. echo '</pre>';

Y muéstranos el resultado.


Array
(
[1] => [email protected]
)
Array
(
[1] => [email protected]
[2] => [email protected]
)
Array
(
[1] => [email protected]
[2] => [email protected]
[3] => [email protected]
)

Dios, el problema estaba en que estaba pintando el resultado dentro del bucle.....


Muchisimas gracias a todos!!!! La próxima vez me aseguraré de no repetir temas y demás, menudo dolor de cabeza acaba de desaparecer, un saludo!

Etiquetas: almacenar, mysql, select, sentencia
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 11:43.