elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [resuelto] foreach solo devuelve un valor? habiendo 20
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [resuelto] foreach solo devuelve un valor? habiendo 20  (Leído 2,713 veces)
venadHD

Desconectado Desconectado

Mensajes: 94

Donde hay hackers, tambien hay crackers.


Ver Perfil WWW
[resuelto] foreach solo devuelve un valor? habiendo 20
« en: 19 Julio 2015, 01:03 am »

no entiendo bien, segun foreach es para cada valor de un array, la pagina me devuelve esto: Como tendria que hacer para que imprimiera todos los valores?

Código:
KEY: 0 , VALUE: 1 
KEY: 1 , VALUE: yo no
KEY: 2 , VALUE: me scripteo
Numero de filas: 19

Codigo source:
Código
  1. <html>
  2. <head>
  3. <title>VeNaD PHP Testing</title>
  4. </head>
  5. <!-- CODIGOS PHP INIT -->
  6. <?php
  7. //Conexion a base de datos
  8. $db = array();
  9. $db['usuario'] = "root"; $db['contra'] = ""; $db['dbnombre'] = 'global'; $db['host'] = 'localhost';
  10. $dbConnect = new mysqli($db['host'], $db['usuario'], $db['contra'], $db['dbnombre']);
  11. //Chequeo de conexion a base de datos
  12. if ($dbConnect->connect_errno) {
  13. if ($dbConnect->connect_error) {
  14. print("ERROR DE CONEXION DE MYSQL: ".$dbConnect->connect_error);
  15. die();
  16. }
  17. print("ERROR DE CONEXION DE MYSQL N: ".$dbConnect->connect_errno);
  18. die();
  19. }
  20. //Getter de datos de la base de datos
  21. $query = $dbConnect->query("select * from {$db['dbnombre']}");
  22. $numero_filas = $query->num_rows;
  23. $dbarray = $query->fetch_array(MYSQLI_NUM);
  24. $dbConnect->query("insert into global values(NULL,'uptime', '1')");
  25. //tabla de datos
  26. foreach ($dbarray as $key => $value) {
  27. printf("KEY: %s , VALUE: %s <br>", $key, $value);
  28. }
  29. ?>
  30. <!-- PAGINA UTIL -->
  31. <body>
  32. <?php
  33. //getter de filas
  34. print("Numero de filas: $numero_filas <br>");
  35. ?>
  36. </body>
  37. </html>
  38. <?php $dbConnect->close(); ?>


« Última modificación: 20 Julio 2015, 10:58 am por venadHD » En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: [Ayuda] foreach solo devuelve un valor? habiendo 20
« Respuesta #1 en: 19 Julio 2015, 03:20 am »

Cuando haces:

Código
  1. $dbarray = $query->fetch_array(MYSQLI_NUM);

Obtienes por cada llamada a ese método (fetch_array()) 1 fila en forma de array donde los indices son numéricos y los valores del array son los valores en los campos. Puedo ver que tu tabla tiene tres columnas. Por eso te salen 3 valores.

Debes incluir eso en un array en un while, algo así como:

Código
  1. while($row= $query->fetch_array(MYSQLI_NUM))
  2. {
  3.  //Imprimes los valores de la fila $row
  4. }

Nota: Yo, en vez de MYSQLI_NUM, utilizaría MYSQLI_ASSOC, y el array sería asociativo, donde los indices en vez de ser números serían los nombres de las columnas (campos de tu tabla), o simplemente en vez del método fetch_array(), utilizaría el método fetch_assoc()

Espero haberte ayudado! Cualquier cosa pregunta.

Salu2s


En línea

venadHD

Desconectado Desconectado

Mensajes: 94

Donde hay hackers, tambien hay crackers.


Ver Perfil WWW
Re: [Ayuda] foreach solo devuelve un valor? habiendo 20
« Respuesta #2 en: 20 Julio 2015, 01:26 am »

Cuando haces:

Código
  1. $dbarray = $query->fetch_array(MYSQLI_NUM);

Obtienes por cada llamada a ese método (fetch_array()) 1 fila en forma de array donde los indices son numéricos y los valores del array son los valores en los campos. Puedo ver que tu tabla tiene tres columnas. Por eso te salen 3 valores.

Debes incluir eso en un array en un while, algo así como:

Código
  1. while($row= $query->fetch_array(MYSQLI_NUM))
  2. {
  3.  //Imprimes los valores de la fila $row
  4. }

Nota: Yo, en vez de MYSQLI_NUM, utilizaría MYSQLI_ASSOC, y el array sería asociativo, donde los indices en vez de ser números serían los nombres de las columnas (campos de tu tabla), o simplemente en vez del método fetch_array(), utilizaría el método fetch_assoc()

Espero haberte ayudado! Cualquier cosa pregunta.

Salu2s


Bien bien, puse MYSQLI_ASSOC y va mucho mejor, no tengo que andar contando las columnas xD

Por no hacer otro tema distinto a este y porque se ve muy profesional aqui a todos, esto es mas en referencia a funciones matematicas, tengo un numero con decimales, como podria reducirlo a numero absoluto? osea si tengo  96.551724137931, que simplemente ponga "96", pero no 97!, es decir que lo vuelva absoluto, pero no aproximar, nose si me explique

Código
  1. $values = 0;
  2. $totalValues = -1;
  3. while ($row = $query->fetch_array(MYSQLI_ASSOC)) {
  4. $values++;
  5. $totalValues = $totalValues + $row['value'];
  6. }
  7. $porcentaje = $totalValues/$values*100;
  8. print("Numero de valores totales: $values >> Suma de todos $totalValues");
  9. print("Uptime: $porcentaje %"); //Esto es lo que me da los decimales
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Ayuda] foreach solo devuelve un valor? habiendo 20
« Respuesta #3 en: 20 Julio 2015, 01:38 am »

Bien bien, puse MYSQLI_ASSOC y va mucho mejor, no tengo que andar contando las columnas xD

Por no hacer otro tema distinto a este y porque se ve muy profesional aqui a todos, esto es mas en referencia a funciones matematicas, tengo un numero con decimales, como podria reducirlo a numero absoluto? osea si tengo  96.551724137931, que simplemente ponga "96", pero no 97!, es decir que lo vuelva absoluto, pero no aproximar, nose si me explique

Código
  1. $values = 0;
  2. $totalValues = -1;
  3. while ($row = $query->fetch_array(MYSQLI_ASSOC)) {
  4. $values++;
  5. $totalValues = $totalValues + $row['value'];
  6. }
  7. $porcentaje = $totalValues/$values*100;
  8. print("Numero de valores totales: $values >> Suma de todos $totalValues");
  9. print("Uptime: $porcentaje %"); //Esto es lo que me da los decimales

Se sale fuera del tema pero ¿Estas pensando en truncar el numero? Tienes que usar floor.

http://php.net/manual/en/function.floor.php
En línea

venadHD

Desconectado Desconectado

Mensajes: 94

Donde hay hackers, tambien hay crackers.


Ver Perfil WWW
Re: [resuelto] foreach solo devuelve un valor? habiendo 20
« Respuesta #4 en: 20 Julio 2015, 11:05 am »

Muchas gracias a todos por la colaboracion a pesar de que ese ultimo era distinto del tema original :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[RESUELTO]¿como comprobar varios resultados en un solo valor? - GetFileAttribute
Programación Visual Basic
AlxSpy 4 3,105 Último mensaje 27 Agosto 2011, 02:27 am
por AlxSpy
Foreach solo se reproduce 20 veces
PHP
Crash_RPM 3 2,040 Último mensaje 30 Mayo 2014, 02:31 am
por JorgeEMX
[Resuelto] Jquery y foreach
Desarrollo Web
dimitrix 3 2,535 Último mensaje 6 Febrero 2015, 01:08 am
por dimitrix
[Resuelto] problema con foreach en php para hacer insert
PHP
tecasoft 3 2,662 Último mensaje 19 Octubre 2015, 23:55 pm
por tecasoft
contador de palabras, con funcion que devuelve valor erroneo
Programación C/C++
Angel20810 2 2,136 Último mensaje 4 Marzo 2017, 15:10 pm
por integeroverflow
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines