Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: erniker en 11 de Noviembre 2014, 22:04
-
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:
<!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
-
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 ;)
-
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
-
Buenas, pues lo de las comillas simples no funciona... y lo de los tipos de datos tampoco...
tieneMetro es boolean, pero esto tampoco funciona:
$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
-
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.
-
De acuerdo, Mario, revisare todo lo que me dices.
Muchas gracias!