Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - pedro,,

Páginas: 1 ... 42 43 44 45 46 [47] 48 49 50 51 52 ... 65
921
Hola Ryche.

Tu código hace lo que pide el enunciado.

Pero usar while(true), esto es una mala práctica, usarlo como ejemplo puede valer, pero para resolver ejercicios u otra clase de programas, no, porque esto implica que para salir del blucle, necesitemos usar break, porque true siempre valdrá true. Y usar break es una forma poco elegante de salir de un bucle.

Te recomiendo que veas esta solución para ayudarte.

https://www.aprenderaprogramar.com/foros/index.php?topic=2108.msg10350#msg10350

Saludos. ;D


922
Buenas.

Todo correcto.

Nada que añadir.

 ;D

923
Hola bermartinv.

Lo veo todo bien.
Buenas respuestas.

Saludos. ;D

924
Hola SantiagoArg.

Veo bien tu ejercicio, además de bien comentado, que siempre ayuda a la hora de revisar código.

Saludos. ;D

925
Buenas bermartinv.

Veo todas las respuestas bien.

Saludos. ;D

926
Hola bermartinv.

Veto todos tus comentarios bien.

Solo aclarar que isNan() es una función, creo que cambiaste términos al responder la pregunta b.

Saludos. ;D

927
Si, tienes razón, lo probé quitando esa parte del inicio del archivo php y ya solo devuelve la cadena con formato json.

Saludos.

928
Buenas.

El código ahora va bien.

En cuanto a lo segundo, pues como dice Alex, no es algo fácil. Pero puedes encontrar mucha información por la red.

En cuanto al caso que comentas sobre un switch o varios if,else if enlazados en algunos sitios leí que el switch es más rápido por aquello de no tener que hacer la comprobación en cada caso, pero de manera demostrada, quiero decir con tiempos de ejecución y demás no me encontré nada.
Lo que sí vi en bastantes sitios es que es mas rápido usar un objeto y referirnos a sus propiedades en vez de usar switch o if enlazados.
Te pongo un ejemplo y así no te lío mas, el ejemplo está realizado sobre el ejercicio que se plantea en la entrega CU01120E.

Código: [Seleccionar]
<html>
<head>
<title>Curso JavaScript aprenderaprogramar.com. CU01120E</title> <meta charset="utf-8">
<script type="text/javascript">
function usandoObjeto() {
var tipoMotor = Number(prompt('Introduzca el tipo de motor de una bomba para mover fluidos (del 1 al 4)'));
var motor = {
1: 'agua',
2: 'gasolina',
3: 'hormigón',
4: 'alimentación'
}
if(motor[tipoMotor]){
alert('La bomba es una bomba de ' + motor[tipoMotor]);
} else {
alert('No hay establecido un valor definido para el tipo de bomba.');
}
}
function usandoSwitch() {
var tipoMotor;
tipoMotor = prompt('Introduzca el tipo de motor de una bomba para mover fluidos (del 1 al 4)');
tipoMotor = Number(tipoMotor);
switch(tipoMotor){
case 0:
alert('No hay establecido un valor definido para el tipo de bomba.');
break;
case 1:
alert('La bomba es una bomba de agua.');
break;
case 2:
alert('La bomba es una bomba de gasolina.');
break;
case 3:
alert('La bomba es una bomba de hormigón.');
break;
case 4:
alert('La bomba es una bomba de pasta alimenticia.');
break;
default:
alert('No existe un tipo de bomba válido para tipo de motor ' + tipoMotor + '.')
break;
}
}
</script>
</head>
<body>
<div>
<p>Desarrolla un script donde trabajas con tipos de motor(suponemos que se trata del motor de una bomba para mover fluidos)</p>
<p>Pinche sobre la imagen para comenzar...</p>
<button onclick="usandoObjeto()">Tipo de motor usando objetos</button>
<button onclick="usandoSwitch()">Tipo de motor usando switch</button>
</div>
</body>
</html>

Saludos.  ;D

929
Hola bermartinv.

Si selecciono por ejemplo 'México' y sin tocar nada en el select de ciudades, luego cambio el país por 'elija país', en el select de ciudades solo deja seleccionar las ciudades que pertenecen a 'México' aunque en el select de países ya no este seleccionado.

Si selecciono 'México' y en el select de ciudades selecciono una de las ciudades que pertenecen a 'México', después ya no hay forma de seleccionar ninguna otra cosa, ni siquiera 'elija país' ni 'elija ciudad' a no ser que se actualice la página.

Así que toca rectificar.

Saludos. ;D

930
Hola Alex.

La respuesta que se obtiene con responseText es:
Código: [Seleccionar]
var jsonResponse = xmlhttp.responseText =
<meta charset="utf-8"/>{"nombreCiudad":["Madrid","Barcelona","Valencia","Sevilla","Zaragoza","Malaga","Murcia"]}

De ahí que realice el split con '>'.
Después de hacer el split, jsonResponse[1] contendrá la linea que comentas.

Código: [Seleccionar]
jsonResponse[1] = {"nombreCiudad":["Madrid","Barcelona","Valencia","Sevilla","Zaragoza","Malaga","Murcia"]}
Si sigues el enlace y activas la consola verás las comprobaciones que dejé.

http://aprendehtml.byethost3.com/Ajax/CU01216F/ejercicioCU01216F.html

Seguramente halla alguna forma mejor de resolverlo, pero es la que se me ocurrió en ese momento. ;D

Saludos y gracias por tu tiempo.


931
Ahora me quedó bastante claro. Tiene su lógica lo que explicas.

Saludos.

932
Buenas. Aquí dejo una posible solución al ejercicio de la entrega CU01216F del curso de programación web Ajax desde cero.

Citar
EJERCICIO
Modifica el código que hemos usado como ejemplo para cumplir con el siguiente propósito:
a) Devolver como respuesta una cadena en formato JSON generada del lado del servidor.
b) Parsear la respuesta recibida del servidor para, ahora del lado del cliente, crear un objeto JavaScript usando JSON.parse.
c) Obtener resultados análogos a los que hemos obtenido, es decir, cuando se seleccione un país deberán mostrarse las ciudades importantes de ese país.
La diferencia entre el ejemplo que hemos visto y el de este ejercicio estará en qué se devuelve del lado del servidor y cómo se trata. En el ejemplo que hemos visto se devuelve una cadena de elementos separados por comas y se trata separándola, mientras que en este ejercicio debes devolver una cadena de texto con formato JSON y tratarla con notación de objetos.

ejercicioAjaxCU01216F.php
Código: [Seleccionar]
<meta charset="utf-8"/>
<?php
// Rescatamos el parámetro que nos llega mediante la url que invoca xmlhttp
$pais=$_POST["pais"];
//$resultadoConsulta = '';
$msg 'El pais recibido en segundo plano ahora es '.$pais;
if ($pais) {
$link mysqli_connect($hostname $nombreUsuario $contraseña);
mysqli_select_db($link$nombreConexión);
$tildes $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente
$result mysqli_query($link"SELECT a.nombreCiudad
FROM ciudades_importantes AS a, paises AS b
WHERE a.idPais = b.id
AND nombrePais = '"
.$pais."'");
$i=0;
while ($fila mysqli_fetch_array($result)){
$resultadoConsulta[$i++] = $fila['nombreCiudad'];
}

$resultadoConsulta1['nombreCiudad'] = $resultadoConsulta;

//Creamos un string en el que incluimos el contenido con formato JSON
$resultado json_encode($resultadoConsulta1);

/* Creamos un archivo con el contenido de $resultado para comprobar que se ha creado
 * un formato correcto JSON, esto solo lo utilizo como prueba.
 */
$archivo 'ciudades.json';
file_put_contents($archivo$resultado);

//Devolvemmos la cadena de respuesta
echo $resultado;
mysqli_free_result($result);
mysqli_close($link);
} else {
echo 'No se han recibido datos';
}
?>

y el html:

Código: [Seleccionar]
<!DOCTYPE html><html><head><title>Cursos aprende a programar</title><meta charset="utf-8">
<style type="text/css">
*{font-family:sans-serif;} a:link {text-decoration:none;} select{font-size:18px;}
div div {color: blue; background-color:#F1FEC6; font-size: 20px; float:left; border: solid; margin: 20px; padding:15px;}
</style>

<script>
function mostrarSugerencia(str) {
var paisElegido='';
if (str=='spain') {paisElegido='España';}
else if (str=='mexico') {paisElegido='México';}
else if (str=='argentina') {paisElegido='Argentina';}
else if (str=='colombia') {paisElegido='Colombia';}
else {paisElegido='none';}

var xmlhttp;
if (str.length==0 ||paisElegido=='none') {
document.getElementById("txtInformacion").innerHTML="no hay datos";
mostrarCiudades(); return;
}
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var jsonResponse = xmlhttp.responseText.split(">");
var objeto_json = JSON.parse(jsonResponse[1]);
ciudadesRecibidas = objeto_json.nombreCiudad;
document.getElementById("txtInformacion").innerHTML = 'Las ciudades recividas por post en segundo plano son:  ' + objeto_json.nombreCiudad;
mostrarCiudades(ciudadesRecibidas);
}
}
var cadenaParametros = 'pais='+encodeURIComponent(paisElegido);
xmlhttp.open('POST', 'ejercicioAjaxCU01216F.php'); // Método post y url invocada
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); // Establecer cabeceras de petición
xmlhttp.send(cadenaParametros); // Envio de parámetros usando POST

}

function mostrarCiudades (arrayCiudades) {
var nodoMostrarResultados = document.getElementById('listaCiudades');
if (!arrayCiudades) {nodoMostrarResultados.innerHTML = ''; return}
var contenidosAMostrar = '';
for (var i=0; i<arrayCiudades.length;i++) {
contenidosAMostrar = contenidosAMostrar+'<div id="ciudades'+i+'">';
contenidosAMostrar += '<a href="http://aprenderaprogramar.com">' + arrayCiudades[i]+ '</a></div>';
}
if (contenidosAMostrar) {nodoMostrarResultados.innerHTML = contenidosAMostrar;}
}
</script></head>

<body style="margin:20px;"><h2>Elige un país:</h2>
<form action="">
<select onchange="mostrarSugerencia(this.value)">
<option value="none">Elige</option>
<option value="spain">España</option>
<option value="mexico">México</option>
<option value="argentina">Argentina</option>
<option value="colombia">Colombia</option>
</select>
</form>
<br/>
<p>Informacion sobre operacion en segundo plano con Ajax: <span style="color:brown;" id="txtInformacion"></span></p>
<div id="listaCiudades"> </div>
</body></html>

http://aprendehtml.byethost3.com/Ajax/CU01216F/

Decir que me costó bastante llegar sacar el formato json en una cadena de texto, espero haber acertado.

Saludos.


934
Hola Alex.

Lo resolvía así, creo que sin pensarlo mucho, me imagino que como hice el anterior ejercico y este casi seguidos y en el anterior lo había estado usando pues lo usé este también. Pero pensándolo, tienes toda la razón, hay que ir a lo seguro. Ahora lo corregiré.

Gracias.


935
La verdad es que he tratado el archivo xml como si fuera el DOM de un html.
Hice bastantes pruebas con getElementById, pero no conseguí que  diese ningún error, incluso haciendo lo siguiente:

Código: [Seleccionar]
xmlDoc.getElementById('bk101').firstChild.nextSibling.innerHTML='hola'
que pensé que sería una buena forma de que diese error, porque sería como intentar cambiar datos en el archivo xml, pero devuelve 'hola' aunque el archivo no cambie y no da ningún error.

Gracias por tu tiempo Alex.

Saludos.


936
Hola Alex.

Dejo el código con la solución que propones, no ha habido que variar mucho:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Cursos aprende a programar</title>
<meta charset="utf-8">
<style type="text/css">
*{font-family:sans-serif;} a:link {text-decoration:none;} select{font-size:18px;}
#datosLibro {
font-size: 20px;
color: blue;
}
</style>
<script>
function mostrarDatosLibro(str) {
var libroElegido='';
if (str=='xmlDeveloper') {
libroElegido=101;
} else if(str=='midnightRain') {
libroElegido=102;
} else if(str=='maeveAscendat') {
libroElegido=103;
} else {
libroElegido='none';
}
var xmlhttp;
if (str.length == 0 || libroElegido == 'none') {
document.getElementById("txtInformacion").innerHTML = "no hay datos";
return;
}
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var xmlDoc = xmlhttp.responseXML;
librosRecibidos = xmlDoc.getElementsByTagName('book');
for (var i=0; i<librosRecibidos.length;i++) {
var idLibro = librosRecibidos[i].getElementsByTagName('idBook')[0].innerHTML;
console.log(idLibro);
if (idLibro == libroElegido) {
document.getElementById("txtInformacion").innerHTML = 'El id del libro recibido por get en segundo plano es ' + idLibro;
var msg = 'id: ' + idLibro;
msg += '<br/>Título: ' + librosRecibidos[i].getElementsByTagName('title')[0].innerHTML;
msg += '<br/>Autor: ' + librosRecibidos[i].getElementsByTagName('author')[0].innerHTML;
msg += '<br/>Precio: ' + librosRecibidos[i].getElementsByTagName('price')[0].innerHTML;
msg += '<br/>Fecha publicación: ' + librosRecibidos[i].getElementsByTagName('publish_date')[0].innerHTML;
document.getElementById('datosLibro').innerHTML = msg;
}
}
}
}
xmlhttp.open("GET","ejemplo_b.xml");
xmlhttp.send();
}
</script>
</head>
<body style="margin:20px;">
<h2>Elige un libro:</h2>
<form action="">
<select onchange="mostrarDatosLibro(this.value)">
<option value="none">Elige</option>
<option value="xmlDeveloper">XML Developer's Guide</option>
<option value="midnightRain">Midnight Rain</option>
<option value="maeveAscendat">Maeve Ascendant</option>
</select>
</form>
<br/>
<p>Informacion sobre operacion en segundo plano con Ajax: <span style="color:brown;" id="txtInformacion"></span></p>
<div id="datosLibro"> </div>
</body>
</html>

Para esta solución en el archivo xml tuve que cambiar los id, porque allí aparecían como, bk101, bk102... Dejándolos sólo como valores numéricos, 101, 102, 103...

http://aprendehtml.byethost3.com/Ajax/CU01210F/ejercicioCU01210F_1_b.html

Gracias por la corrección y los comentarios.

Saludos.

937
Hola inita07.

En este enlace se habla del mismo problema.

https://www.aprenderaprogramar.com/foros/index.php?topic=1842.0

Espero que te sirva. y cuentes si pudiste solucionarlo.

Saludos. ;D

938
Hola dimiste.

¿Que pasa si febrero tiene 28 días?

 ;D

939
Hola dimiste.

Ahora el código hace lo que pide el enunciado.

Cosas que podrías cambiar, usas demasiadas variables con ámbito global, sin ser necesario.
Las variables parrent02 ,parrent03, parrent04, parrent05 y parrent06 solo las usas dentro de la función verificarCorreo(), así que sería mas práctico declararlas con ámbito local dentro de dicha función.

También usas Nombre, Correo y Edad con ámbito global, para evitarlo podrías cambiar esta parte del código:
Código: [Seleccionar]
verificarNombre();
verificarCorreo();
verificarEdad();

por esta:

Código: [Seleccionar]
var nombre = verificarNombre();
var correo = verificarCorreo();
var edad = verificarEdad();
y desde esas funciones devolver true o false.
A parte de estas variables usas otras mas como msn01... Que seguro se podrían evitar.

Tienes que intentar corregir esto.

Saludos. ;D

940
Como te dije ante solo eran 'cosillas'.

Lo de no borrar el campo cuando coge el foco, es para poder tener la opción de rectificar lo que se halla escrito sin tener que escribirlo entero otra vez.

Solucionaste bien lo de las variables con ámbito global.

Ahora lo tienes todo perfecto.

Saludos. ;D

Páginas: 1 ... 42 43 44 45 46 [47] 48 49 50 51 52 ... 65

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".