Autor
|
Tema: [resuelto] foreach solo devuelve un valor? habiendo 20 (Leído 2,945 veces)
|
venadHD
Desconectado
Mensajes: 94
Donde hay hackers, tambien hay crackers.
|
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? KEY: 0 , VALUE: 1 KEY: 1 , VALUE: yo no KEY: 2 , VALUE: me scripteo Numero de filas: 19 Codigo source: <html> <head> <title>VeNaD PHP Testing</title> </head> <!-- CODIGOS PHP INIT --> <?php //Conexion a base de datos $db['usuario'] = "root"; $db['contra'] = ""; $db['dbnombre'] = 'global'; $db['host'] = 'localhost'; $dbConnect = new mysqli($db['host'], $db['usuario'], $db['contra'], $db['dbnombre']); //Chequeo de conexion a base de datos if ($dbConnect->connect_errno) { if ($dbConnect->connect_error) { print("ERROR DE CONEXION DE MYSQL: ".$dbConnect->connect_error); } print("ERROR DE CONEXION DE MYSQL N: ".$dbConnect->connect_errno); } //Getter de datos de la base de datos $query = $dbConnect->query("select * from {$db['dbnombre']}"); $numero_filas = $query->num_rows; $dbarray = $query->fetch_array(MYSQLI_NUM); $dbConnect->query("insert into global values(NULL,'uptime', '1')"); //tabla de datos foreach ($dbarray as $key => $value) { printf("KEY: %s , VALUE: %s <br>", $key, $value); } ?> <!-- PAGINA UTIL --> <body> <?php //getter de filas print("Numero de filas: $numero_filas <br>"); ?> </body> </html> <?php $dbConnect->close(); ?>
|
|
« Última modificación: 20 Julio 2015, 10:58 am por venadHD »
|
En línea
|
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
Cuando haces: $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: while($row= $query->fetch_array(MYSQLI_NUM)) { //Imprimes los valores de la fila $row }
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
Mensajes: 94
Donde hay hackers, tambien hay crackers.
|
Cuando haces: $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: while($row= $query->fetch_array(MYSQLI_NUM)) { //Imprimes los valores de la fila $row }
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 $values = 0; $totalValues = -1; while ($row = $query->fetch_array(MYSQLI_ASSOC)) { $values++; $totalValues = $totalValues + $row['value']; } $porcentaje = $totalValues/$values*100; print("Numero de valores totales: $values >> Suma de todos $totalValues"); print("Uptime: $porcentaje %"); //Esto es lo que me da los decimales
|
|
|
En línea
|
|
|
|
MinusFour
|
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 $values = 0; $totalValues = -1; while ($row = $query->fetch_array(MYSQLI_ASSOC)) { $values++; $totalValues = $totalValues + $row['value']; } $porcentaje = $totalValues/$values*100; print("Numero de valores totales: $values >> Suma de todos $totalValues"); 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
|
|
|
|
|
|
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,447
|
27 Agosto 2011, 02:27 am
por AlxSpy
|
|
|
Foreach solo se reproduce 20 veces
PHP
|
Crash_RPM
|
3
|
2,207
|
30 Mayo 2014, 02:31 am
por JorgeEMX
|
|
|
[Resuelto] Jquery y foreach
Desarrollo Web
|
dimitrix
|
3
|
2,853
|
6 Febrero 2015, 01:08 am
por dimitrix
|
|
|
[Resuelto] problema con foreach en php para hacer insert
PHP
|
tecasoft
|
3
|
2,899
|
19 Octubre 2015, 23:55 pm
por tecasoft
|
|
|
contador de palabras, con funcion que devuelve valor erroneo
Programación C/C++
|
Angel20810
|
2
|
2,452
|
4 Marzo 2017, 15:10 pm
por integeroverflow
|
|