Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: erniker en 02 de Noviembre 2014, 17:58
-
Hola otra vez.
Este es el enunciado:
Utilizando la tabla <<ciudades>> que hemos creado para el ejercicio de la entrega anterior del curso, cuyo contenido era:
Pongo link a la entrega mejor :P: https://www.aprenderaprogramar.es/index.php?option=com_content&view=article&id=612:php-consultas-mysql-mysqliconnect-selectdb-query-fetcharray-freeresult-close-ejemplos-cu00841b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193
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 muestra por pantalla los valores de país y ciudad de cada fila.
Ejemplo de resultados a obtener:
Los resultados de la consulta a la base de datos son los siguientes:
País: México --- Ciudad: México D.F.
País: España --- Ciudad: Barcelona
País: Argentina --- Ciudad: Buenos Aires
Mi codigo 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 //Ejemplo aprenderaprogramar.com
$link = mysql_connect("sql311.byethost7.com", "b7_15257931", "199199");
mysql_select_db("b7_15257931_nombreElegido", $link);
mysql_query("SET NAMES 'utf8'"); //Para que se muestren las tildes
$result = mysql_query("SELECT * FROM ciudades", $link);
for ($i = 0; $i<=count($result); $i++){
echo"Pais: ".mysql_result($result, $i, "pais")."<br>";
echo"Ciudad: ".mysql_result($result, $i, "ciudad")."<br>";
}
mysql_free_result($result);
mysql_close($link);
?>
</body>
</html>
El problema es que solo me presenta en pantalla esto:
Pais: México
Ciudad: México D.F.
Pais: España
Ciudad: Barcelona
Es decir, solo me toma las dos primeras filas de la tabla... no las 10... supongo que me habré equivocado a la hora de tomar la bariable para el bucle... pero ni idea...
Gracias!
-
Hola, el código normalmente debería usar mysqli en lugar de mysql, excepto si tu servidor no te admite mysqli.
También la extracción de datos deberás hacerla con un bucle while en lugar de con un bucle for, en general.
Aunque en esta entrega creo que no se habla nada de bucles, simplemente de extraer los datos, con lo que tendrías que hacer la extracción de datos uno a uno manualmente, y en las siguientes entregas ya trabajar con bucles.
Yo he probado pero me da un error en el acceso a base de datos, creo que alguno de los datos de la conexión puede ser erróneo (quizás este: b7_15257931_nombreElegido, resulta raro).
Lo primero que deberías hacer es probar a extraer los datos uno a uno, y luego si eso te funciona, intentarlo con un bucle.
El código que he probado yo pero no me funciona 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 //Ejemplo aprenderaprogramar.com
$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
$result = mysqli_query($link, "SELECT * FROM ciudades");
while ($fila = mysqli_fetch_array($result)){
echo "- País: ".$fila['pais']."<br/> ";
echo "- Ciudad: ".$fila['ciudad']."<br/> ";
}
mysqli_free_result($result);
mysqli_close($link);
?>
</body>
</html>
Saludos!