Buenas tardes. Hago entrega de los ejercicios de la entrega CU00842B del curso básico de programador web: PHP desde cero.
EJERCICIO 1
Utilizando la tabla agenda que hemos empleado en los ejemplos y funciones para manejo de cadenas PHP, realiza una consulta a la base de datos para extraer todos los nombres y determina cuántos nombres en la base de datos empiezan por M.
Ejemplo de resultados a obtener: En la base de datos los nombres que empiezan por M son: 2
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo aprenderaprogramar.com</title>
</head>
<body>
<?php
function buscarLetraIniciaNombre($fila){
$cadena = "M";
$contador = 0;
if(strncasecmp($fila['nombre'], $cadena, 1) == 0){
$contador = 1;
}
return $contador;
}
$link = mysqli_connect("localhost", "root");
mysqli_select_db($link, "mibasededatos");
$tildes = $link -> query("SET NAMES 'utf8'");
$result = mysqli_query($link, "SELECT * FROM agenda");
$coincidencia = 0;
while($fila = mysqli_fetch_array($result)){
buscarLetraIniciaNombre($fila);
$coincidencia = $coincidencia + buscarLetraIniciaNombre($fila);
}
echo "En la base de datos los nombre que empiezan por M son: ".$coincidencia;
mysqli_free_result($result);
mysqli_close($link);
?>
</body>
</html>
EJERCICIO 2
Utilizando la tabla <<ciudades>> que hemos utilizado para ejercicios de entregas anteriores del curso,
Crea un archivo php donde se realice una consulta a la base de datos para extraer todos los datos de la tabla y a continuación calcula la suma de habitantes de todos los países y cuántas de estas ciudades tienen metro. Muestra el resultado por pantalla.
Ejemplo de resultados a obtener:
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: 5 ciudades.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo aprenderaprogramar.com</title>
</head>
<body>
<?php
$link = mysqli_connect("localhost", "root");
mysqli_select_db($link, "prueba");
$tildes = $link -> query("SET NAMES 'utf8'");
$result = mysqli_query($link, "SELECT * FROM ciudades");
$habitantes = 0;
$metro = 0;
$msg = "La suma de habitanes de: ";
$pasadasDeWhile = 1;
while($fila = mysqli_fetch_array($result)){
disponibilidadMetro($fila);
if($pasadasDeWhile == 10){
$msg = $msg.$fila['ciudad'];
}else{
$msg = $msg.$fila['ciudad'].", ";
}
$habitantes = $habitantes + $fila['habitantes'];
$metro = $metro + disponibilidadMetro($fila);
$pasadasDeWhile++;
}
function disponibilidadMetro($fila){
$contador = 0;
if($fila['tieneMetro'] == 1){
$contador = 1;
}
return $contador;
}
echo $msg." es: ".$habitantes;
echo "<br><br>De estas ciudades tienen metro: ".$metro." ciudades.";
mysqli_free_result($result);
mysqli_close($link);
?>
</body>
</html>
Mi pregunta es: en la parte del código:
while($fila = mysqli_fetch_array($result)){
disponibilidadMetro($fila);
if($pasadasDeWhile == 10){
$msg = $msg.$fila['ciudad'];
}else{
$msg = $msg.$fila['ciudad'].", ";
}
$habitantes = $habitantes + $fila['habitantes'];
$metro = $metro + disponibilidadMetro($fila);
$pasadasDeWhile++;
}
Puede especificar el último registro de la tabla, porque sé que hay 10 registros. Pero como puede hacer esta condicional:
if($pasadasDeWhile == 10)
sin haber mirado la table en phpMyAdmin? No puedo hacer algo como:
if($pasadasDeWhile == count($result))
Evidentemente no me funciona, porque lo probé y el método "count($result)" me devuelve un valor de "12". Que por cierto, no sé de donde sale, porque los registros en la tabla "ciudades" son 10.
Me tiene intrigado. He mirado por internet y veo que hay unas instrucciones como:
Imaginemos que nuestra tabla "libros" contiene muchos registros. Para averiguar la cantidad sin necesidad de contarlos manualmente usamos la función "count()":
select count(*) from libros;
pero no consigo aplicarlo.
Gracias.