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.