Autor Tema: Duda en entrega de curso PHP CU00842B ejercicio while mysqli_fetch_array  (Leído 6116 veces)

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Buenas otra vez. Este es el enunciado:
El ejercicio 2 de la entrega: https://www.aprenderaprogramar.es/index.php?option=com_content&view=article&id=613:ejemplo-consulta-php-mysql-select-bucle-while-mysqlifetcharray-recorrer-resultados-query-cu00842b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193

Y mi código es:
Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<?php
$link mysqli_connect("sql311.byethost7.com""b7_15257931""199199");
mysqli_select_db($link"b7_15257931_nombreElegido");
$tildes $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente
$result mysqli_query($link"SELECT * FROM ciudades");
while ($fila mysqli_fetch_array($result)){
$numHabitantes $numHabitantes $fila[habitantes];
$conMetro $conMetro $fila[tieneMetro];
}
echo "La suma de habitantes de México D.F., Barcelona, Buenos Aires, Medellín, Lima, Caracas, Santiago, Antigua, Quito y La Habana es: $numHabitantes habitantes";
echo "<br>";
echo "De estas ciudades tienen metro: $conMetro ciudades.";
mysqli_free_result($result);
mysqli_close($link);
?>

</body>
</html>

Y este es mi resultado:
La suma de habitantes de México D.F., Barcelona, Buenos Aires, Medellín, Lima, Caracas, Santiago, Antigua, Quito y La Habana es: 5663886 habitantes
De estas ciudades tienen metro: 0 ciudades.

Es decir, no consigo hacer que cuente las ciudades con metro.
¿Alguna idea?
Muchas gracias
« Última modificación: 12 de Noviembre 2014, 07:57 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Duda en entrega de PHP CU00842B
« Respuesta #1 en: 12 de Noviembre 2014, 07:56 »
Hola, introduce comillas simples donde indicas los nombres de las columnas:

$numHabitantes = $numHabitantes + $fila['habitantes'];
$conMetro = $conMetro + $fila['tieneMetro'];

Comprueba también que los nombres de las columnas sean los correctos.

Coméntanos si te da resultado. Saludos ;)

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Duda en entrega de curso PHP CU00842B ejercicio while mysqli_fetch_array
« Respuesta #2 en: 12 de Noviembre 2014, 08:10 »
Una cuestión adicional que debes comprobar es con qué tipo de dato tienes definida la columna tieneMetro en la base de datos. Si es boolean, deberás hacer una comprobación del tipo:

$conMetro =0;
while ($fila = mysqli_fetch_array($result)){
   $numHabitantes = $numHabitantes + $fila['habitantes'];
   if ($fila['tieneMetro'] == true) { $conMetro = $conMetro+1;}
}

Si lo tienes definido como valor numérico, tienes que comprobar qué valores numéricos intervienen.

Es decir, revisa el tipo de datos y qué valores intervienen porque a lo mejor el problema viene de estar tratando de sumar elementos de una columna que no pueden ser sumados.

Para comprobar qué estás recibiendo puedes hacer:

echo 'Desde base de datos se recibe: '.$fila['tieneMetro'];

Así ves qué estás recibiendo.

Saludos


erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en entrega de curso PHP CU00842B ejercicio while mysqli_fetch_array
« Respuesta #3 en: 13 de Noviembre 2014, 20:56 »
Buenas, pues lo de las comillas simples no funciona... y lo de los tipos de datos tampoco...
tieneMetro es boolean, pero esto tampoco funciona:
Código: [Seleccionar]
$conMetro =0;
while ($fila = mysqli_fetch_array($result)){
   $numHabitantes = $numHabitantes + $fila['habitantes'];
   if ($fila['tieneMetro'] == true) { $conMetro = $conMetro+1;}
}
cree la tabla sguiendo el ejercicio de esta entrega: https://www.aprenderaprogramar.es/index.php?option=com_content&view=article&id=611:crear-tablas-mysql-con-phpmyadmin-tipos-de-datos-basicos-varchar-int-float-insertar-filas-cu00840b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193
Cuando hago:
echo 'Desde base de datos se recibe: '.$fila['tieneMetro'];
me da esto:
Desde base de datos se recibe:
es decir, no sale nada...
Gracias por la ayuda
« Última modificación: 13 de Noviembre 2014, 20:59 por erniker »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Duda en entrega de curso PHP CU00842B ejercicio while mysqli_fetch_array
« Respuesta #4 en: 14 de Noviembre 2014, 08:24 »
Hola, he creado la base de datos y la tabla ciudades en la base de datos, con cotejamiento utf8_unicode_ci. En tipo de dato para tieneMetro he puesto BOOLEAN, que automáticamente se ha transformado en tinyint(1)

He probado con el mismo código que pusiste tú inicialmente. Me ha funcionado correctamente, sin necesidad de probar ninguno de los cambios que te había comentado.

Dado que todo me ha funcionado correctamente pienso que el problema pueda estar en:

- Alguno de los parámetros de conexión a la base de datos que no lo tengas bien

- Algún detalle relativo al nombre de la tabla o el nombre de los campos que no lo tengas bien

- Algún otro detalle relacionado con el nombre de las tablas o el nombre de columnas ó nombre de usuario, base de datos, etc.

Te sugiero que revises punto por punto los datos de conexión y los nombres de columnas en la base de datos, etc. , como te digo a mí me ha funcionado sin problemas.

Saludos.

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en entrega de curso PHP CU00842B ejercicio while mysqli_fetch_array
« Respuesta #5 en: 14 de Noviembre 2014, 14:33 »
De acuerdo, Mario, revisare todo lo que me dices.
Muchas gracias!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".