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.


Temas - Dimitar Stefanov

Páginas: 1 2 3 [4] 5 6 7 8 9 ... 14
61
Buenas tardes. Mediante la presente expongo una posible solución del ejercicio CU00521F del curso lenguajeC desde cero.

Citar
EJERCICIO

Transforma el siguiente código:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int main() {
    // Esta declaracion es valida aunque extraña
    int
    a
    =
    3;
    printf("a vale %d\n\n\n", a);
    printf( "En el caso de tener una linea muy larga podemos cerrar comillas en un linea"
                " y abrir comillas en otra para crear una continuidad en un texto\n");
    return 0; // Ejemplo aprenderaprogramar.com
}

Citar
Con el objetivo de dejar el código en el mínimo número de líneas que sea posible para su compilación y ejecución. Si es posible que ocupe solo una línea, deberás dejarlo en una sola línea. Si son necesarias dos, deberás dejarlo en dos. Si son necesarias tres, deberás dejarlo en tres y así sucesivamente. Tienes que determinar cuál es el número mínimo de líneas necesarias.

Responde a las siguientes cuestiones:

a) ¿Cuál es el código del programa que has definido?

Código: [Seleccionar]
#include <stdio.h> #include <stdlib.h>
int main(){int a=3;printf("a vale %d\n\n\nEn el caso de tener una linea muy larga podemos cerrar comillas en un linea y abrir comillas en otra para crear una continuidad en un texto\n", a);return 0;}

Citar
b) ¿Cuáles son los resultados que obtienes por pantalla al ejecutar el programa?

a vale 3

En el caso de tener una linea muy larga podemos cerrar comillas en un linea y abrir comillas en otra para crear una continuidad en un texto

Citar
c) ¿Cuántas líneas ocupa tu código?

2

Gracias.

62
Buenas tardes. Propongo una posible solución del ejercicio CU00520F del curso de programación con lenguaje C desde cero.

Citar
EJERCICIO

Tomando como punto de partida el código que hemos visto de ejemplo de uso de funciones matemáticas, define un programa análogo que realice lo siguiente. En primer lugar define una variable de tipo double de nombre num1 y valor 15.75, una variable de tipo entero de nombre num2 y valor 45, y una variable de tipo double a la que denominaremos Pi, con el valor del número Pi expresado con cinco decimales. A continuación muestra el contenido de cada variable por pantalla. A continuación muestra por pantalla el resultado de multiplicar num1 por -1. A continuación muestra por pantalla el resultado de aplicarle la función valor absoluto a la multiplicación de num1 por -1. A continuación muestra el valor en radianes de la variable num2. Para ello debes realizar la operación matemática oportuna, si no recuerdas cómo hacerlo consulta en internet. A continuación muestra por pantalla el valor del seno del ángulo anterior, recuerda que debes expresarlo en radianes. A continuación muestra por pantalla el valor del coseno del ángulo anterior, recuerda que debes expresarlo en radianes. A continuación muestra por pantalla el redondeo al entero superior de num1. Finalmente muestra por pantalla el redondeo al entero inferior de num1.

 Responde a las siguientes cuestiones:

a) ¿Cuál es el código del programa que has definido?

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {

    double num1 = 15.75;
    int num2 = 45;
    const double Pi = 3.14159;

    printf("num1 vale %g, num2 vale %d, Pi vale %g\n", num1, num2, Pi);
    printf("num1 * -1 vale %g\n", num1*-1);
    printf("el resultado de aplicarle la función valor absoluto a la multiplicación de num1 por -1 vale %g\n", fabs(num1*-1));
    printf("el valor en radianes de la variable num2 vale %g\n", (num2*Pi)/180);
    double anguloEnRadianes = (num2*Pi)/180;
    printf("el valor del seno del ángulo vale %g\n", sin(anguloEnRadianes));
    printf("el valor del coseno del ángulo vale %g\n", cos(anguloEnRadianes));
    printf("el redondeo al entero superior de num1 vale %g\n", ceil(num1));
    printf("el redondeo al entero inferior de num1 vale %g\n", floor(num1));

    return 0;
}

Citar
b) ¿Cuáles son los resultados que obtienes por pantalla al ejecutar el programa?

num1 vale 15.75, num2 vale 45, Pi vale 3.14159
num1 * -1 vale -15.75
el resultado de aplicar la función valor absoluto a la multiplicación de num1 por -1 vale 15.75
el valor en radianes de la variable num2 vale 0.785397
el valor del seno del ángulo vale 0.707106
el valor del coseno del ángulo vale 0.707107
el redondeo al entero superior de num1 vale 16
el redondeo al entero inferior de num1 vale 15

Gracias.

63
Buenas.

Dejo una posible solución del ejercicio CU00519F del curso lenguajeC desde cero.

Citar
EJERCICIO

Dadas las variables de tipo entero con valores A = 5, B = 3, C = -12 indicar si la evaluación de estas expresiones daría como resultado verdadero o falso:

a) A > 3                                                            b) A > C                                               c) A < C

d) B < C                                                            e) B != C                                               f) A == 3

g) A * B == 15                                                   h) A * B == -30                                    i) C / B < A

j) C / B == -10                                                    k) C / B == -4                                       l) A + B + C == 5

m) (A+B == 8 ) && (A-B == 2)                       n) (A+B == 8 ) || (A-B == 6)

o) A > 3 && B > 3 && C < 3                           p) A > 3 && B >= 3 && C < -3

a) Verdadero
b) Verdadero
c) Falso
d) Falso
e) Verdadero
f) Falso
g) Verdadero
h) Falso
i) Verdadero
j) Falso
k) Verdadero
l) Falso
m) Verdadero
n) Verdadero
o) Falso
p) Verdadero


64
Buenas tardes. Dejo una posible solución del ejercicio CU00518F del curso lenguajeC desde cero.

Citar
EJERCICIO

Tomando como punto de partida el código que hemos visto de ejemplo de uso de operadores aritméticos, define un programa análogo que realice lo siguiente. En primer lugar define cuatro variables enteras a las que denominaremos num1, num2, num3 y num4 cuyos valores serán 28, 7, 15 y 3. A continuación muestra el contenido de cada variable por pantalla. A continuación muestra por pantalla el resultado de multiplicar num1 por 3. A continuación muestra por pantalla el resultado de sumar num1 y num2. A continuación muestra por pantalla el resultado de restarle num2 a num1. A continuación muestra por pantalla el resultado de dividir num1 entre num2. A continuación muestra el resto de la división entre num1 y num3. A continuación muestra por pantalla el resto de la división entre num1 y num2. Finalmente muestra por pantalla de nuevo el valor de cada una de las variables. El valor final debe ser igual al valor inicial puesto que no hemos indicado que deba modificarse ninguna variable.

 Responde a las siguientes cuestiones:

a) ¿Cuál es el código del programa que has definido?

El código:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num1 = 28;
    int num2 = 7;
    int num3 = 15;
    int num4 = 3;

    printf("num1 vale %d, num2 vale %d, num3 vale %d, num4 vale %d\n", num1, num2, num3, num4);
    printf("num1 por 3 vale %d\n", num1 * 3);
    printf("num1 más num2 vale %d\n", num1 + num2);
    printf("num2 menos num1 vale %d\n", num2 - num1);
    printf("num1 entre num2 vale %d\n", num1 / num2);
    printf("num1 entre num3 vale %d\n", num1 / num3);
    printf("el resto de la división entre num1 y num2 vale %d\n", num1 % num2);
    printf("num1 vale %d, num2 vale %d, num3 vale %d, num4 vale %d\n", num1, num2, num3, num4);

    return 0;
}

Citar
b) ¿Cuáles son los resultados que obtienes por pantalla al ejecutar el programa?

num1 vale 28, num2 vale 7, num3 vale 15, num4 vale 3
num1 por 3 vale 84
num1 más num2 vale 35
num2 menos num1 vale -21
num1 entre num2 vale 4
num1 entre num3 vale 1
el resto de la división entre num1 y num2 vale 0
num1 vale 28, num2 vale 7, num3 vale 15, num4 vale 3

Gracias.

65
Buenas. Os dejo una posible solución del ejercicio CU00517F del curso lenguajeC desde cero.

Citar
EJERCICIO

El siguiente código es un código en lenguaje C. No te preocupes por el código en sí, ya que hay aspectos que todavía no hemos explicado, fíjate únicamente en los comentarios. Responde a las siguientes preguntas:

a) ¿Cuántos comentarios en línea existen en el código?

5

Citar
b) ¿Cuántos comentarios en bloque existen en el código?

4

Gracias.

66
Buenas tardes. Presento una posible solución del ejercicio CU00516F del curso lenguajeC desde cero.

Citar
EJERCICIO

Responde razonadamente a estas preguntas:

a) ¿Crees que sería posible escribir código C utilizando un editor simple como el bloc de notas de Windows?

Sí se podría escribir.

Citar
b) Si no es posible, ¿por qué? Si es posible, ¿crees que podríamos compilar y ejecutar ese código sin usar Code::Blocks?

No se podría compilar, porque necesitaríamos un compilador y el block de notas no es un IDE y no tiene un compilador incorporado. Tampoco lo podríamos ejecutar si no lo compilamos previamente.

Citar
c) ¿En qué casos piensas que puede resultar útil tener el Spell Checker o corrector ortográfico de Code::Blocks activado?

Podría ser útil en la ortografía de las cadenas de texto tipo mensajes por pantalla (printf).

Citar
d) ¿Crees que si escribimos un código C en Code::Blocks bajo Windows, ese mismo código podría ser compilado y ejecutado en Linux ó en Macintosh?

Sí se podría compilar en Linux o Macintosh. El código es el mismo sea cual sea el sistema operativo. Lo que importa es de que forma lo compilamos (con que extensión).

Gracias.

67
Hola. Os dejo una posible solución del ejercicio CU00515F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un array de elementos enteros y tres dimensiones denominado ventasEmpleadoOficinaEdificio. La primera dimensión tendrá 6 elementos, la segunda 10 y la tercera 2. Establece para el elemento con índices 3, 7, 2 un valor igual a 4234. A continuación haz que se muestre por pantalla (ventana de consola) el texto: “El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido 4234 unidades”, donde 4234 estará definido referenciando al elemento del array creado previamente.

El código del programa:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ventasEmpleadoOficinaEdificio[6][10][2];

    ventasEmpleadoOficinaEdificio[3][7][2]=4234;

    printf("El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido: %d unidades\n", ventasEmpleadoOficinaEdificio[3][7][2]);

    return 0;
}

Código: [Seleccionar]
Responde a estas preguntas:

a) ¿Cuántos elementos componen el array multidimensional?

Un elemento con los índices 3,7,2.

Citar
b) ¿Qué ocurre si intentamos mostrar por pantalla un valor con un índice que no está definido para ese array multidimensional?

Depende del compilador con el que estamos trabajando. Puede producirse un error a la hora de intentar compilar el código, puede ejecutarse el programa pero no imprimir nada por pantalla en el lugar del array con localizador no inicializado o puede imprimirse un valor impredecible.

Citar
c) Modifica el valor de productos vendidos para que pase a ser el valor anterior más diez. A continuación muestra el mismo mensaje que anteriormente. En esta ocasión, dado que hemos modificado el contenido, deberá mostrarse por pantalla: “El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido 4244 unidades”.

El código del programa:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ventasEmpleadoOficinaEdificio[6][10][2];

    ventasEmpleadoOficinaEdificio[3][7][2]=4234;

    printf("El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido: %d unidades\n", ventasEmpleadoOficinaEdificio[3][7][2]);

    ventasEmpleadoOficinaEdificio[3][7][2]=ventasEmpleadoOficinaEdificio[3][7][2]+10;

    printf("El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido: %d unidades\n", ventasEmpleadoOficinaEdificio[3][7][2]);

    return 0;
}

Gracias.

68
Buenas tardes. Expongo una posible solución del ejercicio CU00514F del tutorial de programación en lenguaje C desde cero.

Citar
EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un array de caracteres denominado arrayDeCincoChar. Establece para cada uno de los índices del array que el contenido sean los caracteres a, b, e, t, o. A continuación haz que se muestre por pantalla (ventana de consola) el texto: “La palabra en el array es abeto”, donde abeto estará definido letra a letra utilizando los elementos del array.

El código del programa:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char arrayDeCincoChar[5];
    arrayDeCincoChar[0]='a';
    arrayDeCincoChar[1]='b';
    arrayDeCincoChar[2]='e';
    arrayDeCincoChar[3]='t';
    arrayDeCincoChar[4]='o';

    printf("La palabra en el array es: %c%c%c%c%c\n", arrayDeCincoChar[0], arrayDeCincoChar[1], arrayDeCincoChar[2], arrayDeCincoChar[3], arrayDeCincoChar[4]);

    return 0;
}

Citar
Responde a estas preguntas:

a) ¿Qué índice o localizador tiene el primer elemento del array? ¿Y el último?

El primer localizador es 0, y el último es 4.

Citar
b) ¿Qué ocurre si intentamos mostrar por pantalla una letra con un índice que no está definido para ese array de caracteres?

Depende del compilador con el que estamos trabajando. Puede producirse un error a la hora de intentar compilar el código, puede ejecutarse el programa pero no imprimir nada por pantalla en el lugar del array con localizador no inicializado o puede imprimirse un valor impredecible.

Citar
c) Modifica la tercera letra de la cadena para que pase a ser la letra a. A continuación muestra el mismo contenido que anteriormente. En esta ocasión, dado que hemos modificado la tercera letra, deberá mostrarse por pantalla: “La palabra en el array es abata”.

El código del programa:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char arrayDeCincoChar[5];
    arrayDeCincoChar[0]='a';
    arrayDeCincoChar[1]='b';
    arrayDeCincoChar[2]='e';
    arrayDeCincoChar[3]='t';
    arrayDeCincoChar[4]='o';

    printf("La palabra en el array es: %c%c%c%c%c\n", arrayDeCincoChar[0], arrayDeCincoChar[1], arrayDeCincoChar[2], arrayDeCincoChar[3], arrayDeCincoChar[4]);

    arrayDeCincoChar[2]='a';
    printf("La palabra en el array es: %c%c%c%c%c\n", arrayDeCincoChar[0], arrayDeCincoChar[1], arrayDeCincoChar[2], arrayDeCincoChar[3], arrayDeCincoChar[4]);


    return 0;
}

Gracias.

69
Hola a todos los campañeros y equipo de aprenderaprogramar.com. Les dejo una posible solución del ejercicio CU00513F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un tipo definido por el usuario que se llame TipoVectorDe10 y que contenga 10 elementos de tipo entero. Declara una variable de nombre edadesConcursantes que sea de tipo TipoVectorDe10. Establece las siguientes edades para cada uno de los elementos del array (arreglo): 55, 24, 34, 26, 46, 62, 45, 24, 31, 61. Muestra por pantalla, haciendo uso de los elementos del array, mensajes informando de la edad de las personas. Por ejemplo: La edad de la primera persona es 55 annos. La edad de la segunda persona es 24 annos. La edad de la tercera persona es… etc. (No usamos la eñe).

El código:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    typedef int TipoVectorDe10[10];
    TipoVectorDe10 edadesConcursantes;
    edadesConcursantes[0]=55;
    edadesConcursantes[1]=24;
    edadesConcursantes[2]=34;
    edadesConcursantes[3]=26;
    edadesConcursantes[4]=46;
    edadesConcursantes[5]=62;
    edadesConcursantes[6]=45;
    edadesConcursantes[7]=24;
    edadesConcursantes[8]=31;
    edadesConcursantes[9]=61;

    printf("La edad de la primera persona es: %d\n", edadesConcursantes[0]);
    printf("La edad de la segunda persona es: %d\n", edadesConcursantes[1]);
    printf("La edad de la tercera persona es: %d\n", edadesConcursantes[2]);
    printf("La edad de la cuarta persona es: %d\n", edadesConcursantes[3]);
    printf("La edad de la quinta persona es: %d\n", edadesConcursantes[4]);
    printf("La edad de la sexta persona es: %d\n", edadesConcursantes[5]);
    printf("La edad de la séptima persona es: %d\n", edadesConcursantes[6]);
    printf("La edad de la octava persona es: %d\n", edadesConcursantes[7]);
    printf("La edad de la novena persona es: %d\n", edadesConcursantes[8]);
    printf("La edad de la décima persona es: %d\n", edadesConcursantes[9]);
}

70
Buenos días. Hago entrega del ejercicios CU00512F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un array de enteros denominado numeroDeHijos que contenga 10 elementos. Declara una variable tipo int que se llame T. Establece el valor de T en 8 y el valor de numeroDeHijos para un localizador de valor T en 3. Procede a mostrar en pantalla un mensaje que indique cuál es el valor T y el número de hijos para el valor T. Finalmente, modifica únicamente la asignación de valor a T de modo que en vez de 3 sea 5 y ejecuta de nuevo el programa. Responde a estas preguntas:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int numeroDeHijos[10];
    int T = 8;
    numeroDeHijos[T] = 3;
    printf("La variable T tiene un valor: %d y el numero de hijos para el valor T: %d\n",T ,numeroDeHijos[T]);
    numeroDeHijos[T] = 5;
    printf("Ahora el valor del numero de hijos para el valor T es: %d", numeroDeHijos[T]);
    return 0;
}

Citar
a) ¿Qué significado podríamos atribuir a los índices del array? (Supón que se trata de un programa donde debes atribuirle un significado, si no tuvieran un significado en un programa, ¿para qué nos servirían?).

Podrían ser diferentes personas y el número de hijos que tiene dicha persona.

Citar
b) ¿Cuál será el primer índice del array?

0

Citar
c) ¿Cuál será el último índice del array?

9

Gracias.

71
Buenas noches. Expongo una posible solución el ejercicio CU00511F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea un programa en C que paso a paso contenga lo siguiente:

a) Los include que ya conocemos.

b) El int main de la misma forma que hemos visto.

c) Declarar una variable de tipo decimal doble denominada precio e inicializarla con un valor de 100.

d) Declarar una variable de tipo decimal doble e inicializarla con un valor del 4 por ciento (0.04).

e) Declarar una variable de nombre precioConImpuestos y asignarle como valor el resultado de multiplicar el contenido de la variable precio por la variable impuesto.

f) Mostrar un mensaje por pantalla que diga cuál es el precio con impuestos, utilizando la sintaxis que hemos visto.

¿Cuál es el resultado que se obtiene si en lugar de precio 100 usamos un valor de precio igual a 58.34?

La solución:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    double precio = 100;
    double impuesto = 0.04;
    double precioConImpuestos = (precio * impuesto) + precio;
    printf("El precio con impuesto de un producto que vale 100 es: %lf\n", precioConImpuestos);
    precio = 58.34;
    precioConImpuestos = (precio * impuesto)+precio;
    printf("El precio de un producto que vale 58.34 con el impuesto es: %lf", precioConImpuestos);
    return 0;
}

Lo que no entendí como se imprimer los variables. En el ejemplo de la entrega lo hicimos con "%d", pero veo que ahora tuve que utilizar "%lf". Supongo que se explicará más adelante en el curso.

Gracias.

72
Buenas tardes a todo el equipo de aprenderaprogramar.com

Mediante la presente hago entrega de la última entrega CU01216F del curso de programación web con Ajax desde cero.

Quería agradecer, una vez más, el gran esfuerzo que hace todo el equipo de aprenderaprogramar.com y decir que me ha gustado mucho este curso también. Se me ha brindado la oportunidad de aprender aún más. Gracias.

El ejercicio:

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.

Código utilizado en la entrega como ejemplo:

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;
var contenidosRecibidos = new Array();
var nodoMostrarResultados = document.getElementById('listaCiudades');
var contenidosAMostrar = '';

if (str.length==0) { document.getElementById("txtInformacion").innerHTML=""; nodoMostrarResultados.innerHTML = ''; return; }

xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    contenidosRecibidos = xmlhttp.responseText.split(",");
    document.getElementById("txtInformacion").innerHTML=contenidosRecibidos[0];
    for (var i=1; i<contenidosRecibidos.length;i++) {
    contenidosAMostrar = contenidosAMostrar+'<div id="ciudades'+i+'"> <a href="http://aprenderaprogramar.com">' + contenidosRecibidos[i]+ '</a></div>';
    }
    nodoMostrarResultados.innerHTML = contenidosAMostrar;
    }
}
var cadenaParametros = 'pais='+encodeURIComponent(paisElegido);
xmlhttp.open('POST', 'ajaxCU01216F.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
}
</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 POST y Ajax: <span style="color:brown;" id="txtInformacion"></span></p>
<div id="listaCiudades"> </div>
</body>
</html>

Solución del ejercicio:

Código 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;
          var objeto_json = JSON.parse(jsonResponse);
          ciudadesRecibidas = objeto_json.ciudadImportante;
          document.getElementById("txtInformacion").innerHTML = 'El país recibido por post en segundo plano son:  ' + objeto_json.ciudadImportante[0];
          mostrarCiudades(ciudadesRecibidas);
        }
      }
      var cadenaParametros = 'pais='+encodeURIComponent(paisElegido);
      xmlhttp.open('POST', 'CU01216F(01).php');
      xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
      xmlhttp.send(cadenaParametros);

    }
   
    function mostrarCiudades(arrayCiudades){
      var nodoMostrarResultados = document.getElementById('listaCiudades');
      if(!arrayCiudades){
        nodoMostrarResultados.innerHTML = '';
        return
      }

      var contenidosAMostrar = '';
      for(var i=1; 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> 

Código PHP:

Código: [Seleccionar]
<?php
// Rescatamos el parámetro que nos llega mediante la url que invoca xmlhttp
$pais=$_POST["pais"];
$msg 'El pais recibido en segundo plano ahora es '.$pais;
if ($pais){
$link mysqli_connect($servidor,$usuario,$contrasena);
mysqli_select_db($link$baseDeDatos);
$tildes $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente
$result mysqli_query($link"SELECT a.ciudadImportante FROM ciudades_importantes AS a, paises AS b WHERE a.idPais = b.id AND nombrePais = '".$pais."'");

$paisYCiudades[0] = $pais;
$i=1;
while ($fila mysqli_fetch_array($result)){
$paisYCiudades[$i++] = $fila['ciudadImportante'];
}

$consulta['ciudadImportante'] = $paisYCiudades;

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

Debo reconocer que para la solución del presente ejercicio he tenido que consultar la solución del compañero Pedro desde el hilo:
https://www.aprenderaprogramar.com/foros/index.php?topic=4287.msg17916#msg17916

Gracias.

73
Buenas tardes. Os dejo una posible solución del ejercicio de la entrega CU01215F del curso Ajax desde cero.

Citar
EJERCICIO

Modifica el código que hemos usado como ejemplo para realizar la petición de datos con ajax mediante POST en lugar de mediante GET.

Código de ejemplo que se ha usado en la entrega:

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;
    var objeto_json = JSON.parse(jsonResponse);
    paisesRecibidos = objeto_json.listadoPaises.pais;
 
    for (var i=0; i<paisesRecibidos.length;i++) {
    var nombrePais = objeto_json.listadoPaises.pais[i].nombre;
        if (nombrePais==paisElegido) {
        document.getElementById("txtInformacion").innerHTML = 'El pais recibido por get en segundo plano es '+nombrePais+ ' y tiene indice '+i;
        var ciudadesPais = objeto_json.listadoPaises.pais[i].ciudadImportante;
        mostrarCiudades(ciudadesPais);
        }
    }
   
}
}

xmlhttp.open("GET","listadoPaises.json?nocache=' + (new Date()).getTime()");
xmlhttp.send();
}

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>

Solución del ejercicio:

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;
            var objeto_json = JSON.parse(jsonResponse);
            paisesRecibidos = objeto_json.listadoPaises.pais;
         
          for(var i=0; i<paisesRecibidos.length;i++){
            var nombrePais = objeto_json.listadoPaises.pais[i].nombre;
            if(nombrePais==paisElegido){
              document.getElementById("txtInformacion").innerHTML = 'El pais recibido por get en segundo plano es '+nombrePais+ ' y tiene indice '+i;
              var ciudadesPais = objeto_json.listadoPaises.pais[i].ciudadImportante;
              mostrarCiudades(ciudadesPais);
            }
          }
        }
      }

      var cadenaParametros = 'pais='+encodeURIComponent(str);
      xmlhttp.open("POST","listadoPaises.json");
      xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
      xmlhttp.send(cadenaParametros);
    }

    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>

Gracias.

74
Buenas. Les dejo una posible solución del ejercicio CU01214F del tutorial programación web con Ajax desde cero.

Citar
EJERCICIO

Analiza el siguiente código y responde a las preguntas indicadas más abajo:

Código JSON:

Código: [Seleccionar]
{
    "ResultSet": {
        "totalResultsAvailable": "1827221",
        "totalResultsReturned": 2,
        "firstResultPosition": 1,
        "Result": [
            {
                "Title": "potato jpg",
                "Summary": "Kentang Si bungsu dari keluarga Solanum tuberosum L ini ternyata memiliki khasiat untuk mengurangi kerutan  jerawat  bintik hitam dan kemerahan pada kulit  Gunakan seminggu sekali sebagai",
                "Url": "https://www.aprenderaprogramar.com/spaw/uploads /images/potato.jpg",
                "ClickUrl": "http://www. aprenderaprogramar.com/spaw/uploads/images/potato.jpg",
                "RefererUrl": "http://www.mediaindonesia.com/mediaperempuan/index.php?ar_id=Nzkw",
                "FileSize": 22630,
                "FileFormat": "jpeg",
                "Height": "362",
                "Width": "532",
                "Thumbnail": {
                    "Url": "http://thm-a01.yimg.com/nimage/557094559c18f16a",
                    "Height": "98",
                    "Width": "145"
                }
            },
            {
                "Title": "potato jpg",
                "Summary": "Introduction of puneri aloo This is a traditional potato preparation flavoured with curry leaves and peanuts and can be eaten on fasting day  Preparation time   10 min",
                "Url": "http://www.infovisual.info/01/photo/potato.jpg",
                "ClickUrl": "http://www.infovisual.info/01/photo/potato.jpg",
                "RefererUrl": "http://aprenderaprogramar.com.com/puneri-aloo-indian-%20recipe",
                "FileSize": 119398,
                "FileFormat": "jpeg",
                "Height": "685",
                "Width": "1024",
                "Thumbnail": {
                    "Url": "http://thm-a01.yimg.com/nimage/7fa23212efe84b64",
                    "Height": "107",
                    "Width": "160"
                }
            }
        ]
    }
}

Citar
a) Obtén el código XML equivalente usando 2 webs de conversión on-line. Indica qué webs has utilizado, el resultado obtenido y si el resultado es el mismo con ambas herramientas. Si no es el mismo indica por qué crees que no es el mismo.

1. http://www.freeformatter.com/json-to-xml-converter.html#ad-output

2. http://codebeautify.org/jsontoxml

Código XML con la primera página:

Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8"?>
<root>
   <ResultSet>
      <Result>
         <element>
            <ClickUrl>http://www. aprenderaprogramar.com/spaw/uploads/images/potato.jpg</ClickUrl>
            <FileFormat>jpeg</FileFormat>
            <FileSize>22630</FileSize>
            <Height>362</Height>
            <RefererUrl>http://www.mediaindonesia.com/mediaperempuan/index.php?ar_id=Nzkw</RefererUrl>
            <Summary>Kentang Si bungsu dari keluarga Solanum tuberosum L ini ternyata memiliki khasiat untuk mengurangi kerutan  jerawat  bintik hitam dan kemerahan pada kulit  Gunakan seminggu sekali sebagai</Summary>
            <Thumbnail>
               <Height>98</Height>
               <Url>http://thm-a01.yimg.com/nimage/557094559c18f16a</Url>
               <Width>145</Width>
            </Thumbnail>
            <Title>potato jpg</Title>
            <Url>https://www.aprenderaprogramar.com/spaw/uploads /images/potato.jpg</Url>
            <Width>532</Width>
         </element>
         <element>
            <ClickUrl>http://www.infovisual.info/01/photo/potato.jpg</ClickUrl>
            <FileFormat>jpeg</FileFormat>
            <FileSize>119398</FileSize>
            <Height>685</Height>
            <RefererUrl>http://aprenderaprogramar.com.com/puneri-aloo-indian-%20recipe</RefererUrl>
            <Summary>Introduction of puneri aloo This is a traditional potato preparation flavoured with curry leaves and peanuts and can be eaten on fasting day  Preparation time   10 min</Summary>
            <Thumbnail>
               <Height>107</Height>
               <Url>http://thm-a01.yimg.com/nimage/7fa23212efe84b64</Url>
               <Width>160</Width>
            </Thumbnail>
            <Title>potato jpg</Title>
            <Url>http://www.infovisual.info/01/photo/potato.jpg</Url>
            <Width>1024</Width>
         </element>
      </Result>
      <firstResultPosition>1</firstResultPosition>
      <totalResultsAvailable>1827221</totalResultsAvailable>
      <totalResultsReturned>2</totalResultsReturned>
   </ResultSet>
</root>

Código XML con la segunda página:

Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet>
    <totalResultsAvailable>1827221</totalResultsAvailable>
    <totalResultsReturned>2</totalResultsReturned>
    <firstResultPosition>1</firstResultPosition>
    <Result>
        <Title>potato jpg</Title>
        <Summary>Kentang Si bungsu dari keluarga Solanum tuberosum L ini ternyata memiliki khasiat untuk mengurangi kerutan  jerawat  bintik hitam dan kemerahan pada kulit  Gunakan seminggu sekali sebagai</Summary>
        <Url>https://www.aprenderaprogramar.com/spaw/uploads /images/potato.jpg</Url>
        <ClickUrl>http://www. aprenderaprogramar.com/spaw/uploads/images/potato.jpg</ClickUrl>
        <RefererUrl>http://www.mediaindonesia.com/mediaperempuan/index.php?ar_id=Nzkw</RefererUrl>
        <FileSize>22630</FileSize>
        <FileFormat>jpeg</FileFormat>
        <Height>362</Height>
        <Width>532</Width>
        <Thumbnail>
            <Url>http://thm-a01.yimg.com/nimage/557094559c18f16a</Url>
            <Height>98</Height>
            <Width>145</Width>
        </Thumbnail>
    </Result>
    <Result>
        <Title>potato jpg</Title>
        <Summary>Introduction of puneri aloo This is a traditional potato preparation flavoured with curry leaves and peanuts and can be eaten on fasting day  Preparation time   10 min</Summary>
        <Url>http://www.infovisual.info/01/photo/potato.jpg</Url>
        <ClickUrl>http://www.infovisual.info/01/photo/potato.jpg</ClickUrl>
        <RefererUrl>http://aprenderaprogramar.com.com/puneri-aloo-indian-%20recipe</RefererUrl>
        <FileSize>119398</FileSize>
        <FileFormat>jpeg</FileFormat>
        <Height>685</Height>
        <Width>1024</Width>
        <Thumbnail>
            <Url>http://thm-a01.yimg.com/nimage/7fa23212efe84b64</Url>
            <Height>107</Height>
            <Width>160</Width>
        </Thumbnail>
    </Result>
</ResultSet>

Los resultados de conversión no son idénticas porque en la primera página nos pide "Nombre del elemento raíz" y "Nombre del elemento de entradas de matriz JSON" y posteriormente los incorpora en el archivo XML convertido.

También, tendremos que tener en cuenta que, en el archivo JSON, a veces entre "nombre" y "valor" hay un espacio que prodría afectar en la conversión.

Citar
b) Minifica los datos JSON. ¿Cuántos caracteres ocupan los datos minificados JSON? Minifica los datos XML. ¿Cuántos caracteres ocupan los datos minificados XML?

Los datos minificados JSON ocupan 1294 caracteres y los datos minificados XML ocupan 1571 caracteres.

Citar
c) Explica qué crees que representan los datos y da una breve explicación de cómo se organizan.

Los datos representar una búsqueda de archivos en la cual se han obtenido 2 resultados de 1827221 disponibles.

En el archivo existe un único objeto de datos compuesto por 4 pares nombre - valor. El cuarto par tiene como valor un array de dos objetos JSON. Cada objeto JSON del array está compuesto de 10 pares nombre - valor.  El décimo par nombre - valor de cada objeto JSON del array  tiene como valor un objeto de tres pares nombre - valor.

Citar
d) Indica cuántos datos numéricos (number según la especificación oficial JSON) se pueden encontrar, en total, en el archivo.


Se pueden encontrar 4 datos numéricos. Los números puestos entre comillas se consideran una cadena de texto.

75
Hola a todos los compañeros. Aquí os dejo una posible solución del ejercicio CU01213F del curso Ajax desde cero.

Citar
EJERCICIO

Transforma los datos en formato JSON mostrados a continuación en datos en formato XML y responde:

Código JSON:

Código: [Seleccionar]
{
    "personas": [
        {
            "nombre": "Juan Pérez Galones",
            "altura": 1.72,
            "peso": 75,
            "pasatiempos": [
                "Comics",
                "Baloncesto",
                "Gaming"
            ],
            "soltero": true,
            "direccion": {
                "calle": "Avenida Soleares",
                "numero": "44",
                "pais": "Chile"
            }
        },
        {
            "nombre": "Pedro Motos Sandez",
            "altura": 1.69,
            "peso": 72,
            "pasatiempos": [
                "Programación",
                "Senderismo"
            ],
            "soltero": true,
            "direccion": {
                "calle": "Torero Pedro Cano",
                "numero": "78",
                "pais": "México"
            }
        }
    ]
}

Citar
a) Muestra el código XML equivalente.

Código XML:

Código: [Seleccionar]
<?xml version="1.0" ?>
<persona>
<nombre>Juan Pérez Galones</nombre>
<altura>1.72</altura>
<peso>75</peso>
<pasatiempos>Comics</pasatiempos>
<pasatiempos>Baloncesto</pasatiempos>
<pasatiempos>Gaming</pasatiempos>
<soltero>true</soltero>
<direccion>
<calle>Avenida Soleares</calle>
<numero>44</numero>
<pais>Chile</pais>
</direccion>
</persona>
<persona>
<nombre>Pedro Motos Sandez</nombre>
<altura>1.69</altura>
<peso>72</peso>
<pasatiempos>Programación</pasatiempos>
<pasatiempos>Senderismo</pasatiempos>
<soltero>true</soltero>
<direccion>
<calle>Torero Pedro Cano</calle>
<numero>78</numero>
<pais>México</pais>
</direccion>
</persona>

Citar
b) Compara el número de caracteres que forma una codificación y otra. ¿Cuántos caracteres ocupa la codificación JSON? ¿Cuántos caracteres ocupa la codificación XML? (Nota: el número de caracteres se puede contar con un editor de texto).

La codificación JSON ocupa: 385. En cambio, la codificación XML ocupa: 612.

Citar
c) Transforma la notación JSON para que toda la información quede en una sola línea. ¿Crees que el contenido en una sola línea es equivalente al contenido inicial? ¿Qué ventajas e inconvenientes le ves a tener toda la información en una sola línea?

El contenido en una sola línea es equivalente al contenido inicial. La ventaja es que el archivo en el cual la codificación está en una sola línea es menos pesado que en el cual no está en una sola línea. El inconveniente es que por humanos es más fácil leer codificación que no esté en una sola línea que si lo estuviera.

Citar
d) Transforma la notación XML para que toda la información quede en una sola línea. ¿Qué línea resulta más larga, la línea con notación JSON o la línea con notación XML?

La línea con notación de XML es más larga.

76
Buenas tardes. Propongo una posible solución del ejercicio CU01212F del curso Ajax desde cero.

Citar
EJERCICIO

Muchas validaciones se realizan del lado del cliente usando JavaScript, pero otras se realizan del lado del servidor (por ejemplo comprobar si un nombre de usuario está libre para dar de alta a un usuario, o comprobar si un correo electrónico está libre para registrar a un usuario en un foro).

Crea un documento HTML que conste de:

a) Un título H1 con el texto “Alta de usuarios”

b) Un formulario con un campo Nombre, otro Apellidos y otro Nombre de Usuario.

c) Una utilidad Ajax que informe si el nombre de usuario ya existe cada vez que el campo correspondiente a nombre del usuario pierda el foco. En ese momento deberá mostrarse un mensaje “Nombre de usuario libre” ó si no está libre, “Nombre de usuario no disponible”.

Para comprobar si ya existe el nombre de usuario debes realizar una invocación al archivo comprobarUsuarios.php donde deberás definir la lista de nombres de usuario existentes como un array php (por ejemplo puedes usar el array nombreExistente[0]='juan'; nombreExistente[1]='pedro'; nombreExistente[2]='alfredo'; nombreExistente[3]='luis';) y añadir el código necesario para obtener la funcionalidad deseada.

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo aprenderaprogramar.com</title>
<script type="text/javascript">

function comprobarUsuario(str){

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
alert(xmlhttp.response);
}
}

var cadenaParametros = 'usuario='+encodeURIComponent(str);
xmlhttp.open("POST", "CU01212F(01).php");
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(cadenaParametros);
}

</script>
</head>
<body>
<h1>Alta de usuario</h1>
<form action="">
<label for="nombre">Nombre: <input type="text" id="nombre" name="nombre"></label><br><br>
<label for="apellidos">Apellidos: <input type="text" id="apellidos" name="apellidos"></label><br><br>
<label for="usuario">Nombre de Usuario: <input type="text" id="usaurio" name="usaurio" onblur="comprobarUsuario(this.value)"></label><br><br>
<label for="submit"><input type="submit" value="Enviar"></label>
</form>
</body>
</html>

Código PHP:

Código: [Seleccionar]
<?php 

$nombreExistente[0]='juan'
$nombreExistente[1]='pedro'
$nombreExistente[2]='alfredo'
$nombreExistente[3]='luis';

$usuario $_POST['usuario'];
if($usuario == $nombreExistente[0] || $usuario == $nombreExistente[1] || $usuario == $nombreExistente[2] || $usuario == $nombreExistente[3]){
echo "Nombre de usuario no disponible";
}else{
echo "Nombre de usuario libre";
}

?>

Gracias.

77
Buenas tardes. Expongo una posible solución del ejercicio CU01211F del curso Ajax desde cero.

Citar
EJERCICIO                                                                                                       

Lee este texto que hemos extraído del artículo: ¿Qué es y para qué sirve XML? disponible en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=102:ique-es-y-para-que-sirve-el-lenguaje-de-etiquetas-xml-extensible-markup-language&catid=46:lenguajes-y-entornos&Itemid=163

 Las etiquetas XML pueden tener atributos, que son una manera de incorporar características o propiedades a las etiquetas de un documento. El atributo consta de dos partes: La propiedad del elemento y el valor  de la propiedad, que siempre va entre comillas doble (“) o simple (‘). Por ejemplo: modelo y color serian atributos de la etiqueta Vehiculo:
 <Vehiculo marca="Toyota" modelo="45 TC" color="plomo">En venta</Vehiculo>

Considera el siguiente documento xml al que denominamos ejemplo.xml:

Código: [Seleccionar]
<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <price type="high">44.95</price>
      <publish_date>2000-10-01</publish_date>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <price type="low">5.95</price>
      <publish_date>2000-12-16</publish_date>
   </book>
   <book id="bk103">
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <price type="low">5.95</price>
      <publish_date>2000-11-17</publish_date>
   </book>
</catalog>

Citar
A priori podríamos pensar en usar getElementById para recuperar información del documento xml con Ajax. Pero esta función no responde con documentos XML, como explica este texto en inglés:

Non-HTML documents. The DOM implementation must have information that says which attributes are of type ID. Attributes with the name "id" are not of type ID unless so defined in the document's DTD. The id attribute is defined to be of ID type in the common cases of XHTML, XUL, and other. Implementations that do not know whether attributes are of type ID or not are expected to return null.

a) Usa el archivo ejemplo.xml y coloca un botón que intente recuperar usando ajax y getElementById el contenido del elemento con id="bk101" ¿Qué código has empleado? ¿Qué resultado obtienes?

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo Ajax</title>
<script type="text/javascript">

function recuperarDatos(){

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
var xmlDoc = xmlhttp.responseXML;
var nodoBook = xmlDoc.getElementById("bk101");
alert(nodoBook.innerHTML);

}
}

xmlhttp.open("GET", "CU01211F(01).xml");
xmlhttp.send();
}

</script>
</head>
<body>
<button onclick="recuperarDatos()">Recuperar Datos</button>
</body>
</html>

Puedo visualizar  el contenido del elemento con id="bk101".

Citar
b) Usa el archivo ejemplo.xml y coloca un botón que intente recuperar usando ajax y la función que hemos visto anteriormente getElementByIdMXL(the_node,the_id) el contenido del elemento con id="bk101" ¿Qué código has empleado? ¿Qué resultado obtienes?

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo Ajax</title>
<script type="text/javascript">

function recuperarDatos(){

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
var xmlDoc = xmlhttp.responseXML;
var nodoBook = getElementByIdMXL(xmlDoc, 'bk101');
alert(nodoBook.innerHTML);

}
}

xmlhttp.open("GET", "CU01211F(01).xml");
xmlhttp.send();
}

function getElementByIdMXL(the_node,the_id) {
    //Nos traemos todos los nodos con cualquier tag del documento xml
    node_tags = the_node.getElementsByTagName('*');
    for (i=0;i<node_tags.length;i++) {
    // Comprobamos si existe un atributo id
        if (node_tags[i].hasAttribute('id')) {
            // Si existe el atributo id comprobamos si coincide con el buscado
            if (node_tags[i].getAttribute('id') == the_id) {
                // Devolvemos el nodo que tiene el id buscado, solo el primero ya que debe ser único
                return node_tags[i];
            }
        }
    }
}

</script>
</head>
<body>
<button onclick="recuperarDatos()">Recuperar Datos</button>
</body>
</html>

Puedo visualizar el contenido del elemento con id="bk101".

Citar
c) Usa el archivo ejemplo.xml y coloca un botón que intente recuperar usando ajax y la función que hemos visto anteriormente getElementsByAttribute(the_attribute, the_value, the_node) todos los precios que lleven como atributo type "low" ¿Qué código has empleado? ¿Qué resultado obtienes?

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo Ajax</title>
<script type="text/javascript">

function recuperarDatos(){

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
var xmlDoc = xmlhttp.responseXML;
var nodoBook = getElementsByAttribute('type', 'low', xmlDoc);
for(var i=0; i<nodoBook.length; i++){
alert(nodoBook[i].innerHTML);
}


}
}

xmlhttp.open("GET", "CU01211F(01).xml");
xmlhttp.send();
}

function getElementsByAttribute(the_attribute, the_value, the_node) {
if(the_node == null){
the_node = document;
}
var node_tags = the_node.getElementsByTagName('*');
var results = new Array();
for (i=0, j=0; i<node_tags.length;i++){
    if(node_tags[i].hasAttribute(the_attribute)){
        if(node_tags[i].getAttribute(the_attribute) == the_value){
            results[j] = node_tags[i];
            j++;
            }
        }
}
return results;
}

</script>
</head>
<body>
<button onclick="recuperarDatos()">Recuperar Datos</button>
</body>
</html>

Recuperamos todos los precios que lleven como atributo type "low".

De los tres apartados del ejercicio concluyo que anteriormente no funcionaba el método "getElementById" en XML y Ajax, pero en la actualidad sí. Llego a esta conclusión, porque en el primer apartado me funcionó bien dicho método.

Gracias.

78
Buenas noches.

Expongo una posible solución del ejercicio CU01210F del curso Ajax desde cero.

Citar
EJERCICIO                                                                                                       

Considera el siguiente documento xml al que denominamos ejemplo.xml:

Código original XML:

Código: [Seleccionar]
<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
   </book>
   <book id="bk103">
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
   </book>
</catalog>

Citar
a) Transforma el archivo xml para que id en lugar de ser un atributo de etiqueta sea una etiqueta

Código XML:

Código: [Seleccionar]
<?xml version="1.0" ?>
<catalog>
   <book>
      <id>bk101</id>
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
   </book>
   <book>
      <id>bk102</id>
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
   </book>
   <book>
      <id>bk103</id>
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
   </book>
</catalog>

Citar
b) Crea un archivo html que permita elegir el título (title) y dinámicamente recupere desde el archivo xml el contenido de todas las demás etiquetas incluido el id y los muestre por pantalla.


Código 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 libroElegido='';
if(str=='bk101'){
libroElegido='bk101';
}else if(str=='bk102'){
libroElegido='bk102';
}else if(str=='bk103'){
libroElegido='bk103';
}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 = obtenerArrayNodosPorTag(xmlDoc, 'book');
   
    for(var i=0; i<librosRecibidos.length;i++){
        var tituloLibro = obtenerArrayNodosPorTag(librosRecibidos[i], 'title')[0].innerHTML;
        var autorLibro = obtenerArrayNodosPorTag(librosRecibidos[i], 'author')[0].innerHTML;
        var precioLibro = obtenerArrayNodosPorTag(librosRecibidos[i], 'price')[0].innerHTML;
        var publicacionLibro = obtenerArrayNodosPorTag(librosRecibidos[i], 'publish_date')[0].innerHTML;
        var idLibro = obtenerArrayNodosPorTag(librosRecibidos[i], 'id')[0].innerHTML;
        if(idLibro==libroElegido){
        document.getElementById("txtInformacion").innerHTML = 'El libro recibido por get en segundo plano es '+tituloLibro+ ' y tiene id '+idLibro+'. Su autor es '+autorLibro+', cuesta '+precioLibro+' y está publicado '+publicacionLibro;
        }
    }
}
}

xmlhttp.open("GET","CU01210F(01).xml");
xmlhttp.send();
}

 

function obtenerArrayNodosPorTag(nodoRaiz, nombreTag){
var arrayNodos = nodoRaiz.getElementsByTagName(nombreTag);
return arrayNodos;
}

</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="bk101">XML Developer's Guide</option>
  <option value="bk102">Midnight Rain</option>
  <option value="bk103">Maeve Ascendant</option>
</select>
</form>
<br/>
<p>Informacion sobre operacion en segundo plano con Ajax: <span style="color:brown;" id="txtInformacion"></span></p>
</body>
</html>

Gracias.

79
Buenas tardes.

A continuación expongo una posible solución de los ejercicios de la entrega CU01209F del curso Ajax desde cero.

Citar
EJERCICIO Nº1                                                                                               

Crea un archivo denominado respuesta.php que contenga el código necesario para devolver lo siguiente:

a) Si se recibe el parámetro nombre con valor alberto, la frase “Alberto está realizando un curso de programación”.

b) Si se recibe el parámetro nombre con valor juan, la frase “Juan está realizando prácticas de ingeniería de sistemas”

c) Si el parámetro viene vacío o no existe, la frase “No hay información. Revise la petición”.

En un archivo denominado peticion.html crea una casilla de texto que pida un nombre y un botón chequear, de modo que al pulsarse el botón chequear se produzca una petición vía Ajax para obtener los resultados contenidos en el archivo respuesta.php. Dichos resultados deberán mostrarse en una ventana de alerta JavaScript cada vez que se pulse el botón chequear.

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo Ajax</title>
<script type="text/javascript">

var xmlhttp = new XMLHttpRequest();

function mostrarMensaje(){
var nombre = document.getElementById('nombre').value;

xmlhttp.open("GET", "CU01209F(01).php?nombre="+nombre);
xmlhttp.send();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
alert(xmlhttp.responseText);
}
}

}

</script>
</head>
<body>
<form action="">
Nombre: <input type="text" name="nombre" id="nombre"><br>
<input type="button" value="chequear" onclick="mostrarMensaje();">
</form>
</body>
</html>

Código PHP:

Código: [Seleccionar]
<?php 

$alberto "Alberto está realizando un curso de programación";
$juan "Juan está realizando prácticas de ingeniería de sistemas";
$porDefinicion "No hay información. Revise la petición";

$nombre $_REQUEST['nombre'];

if($nombre=="alberto"){
echo $alberto;
}else if($nombre=="juan"){
echo $juan;
}else{
echo $porDefinicion;
}

?>


Me surge una duda: ¿Por qué así funciona?:

Código: [Seleccionar]
<script type="text/javascript">

var xmlhttp = new XMLHttpRequest();

function mostrarMensaje(){
var nombre = document.getElementById('nombre').value;

xmlhttp.open("GET", "CU01209F(01).php?nombre="+nombre);
xmlhttp.send();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
alert(xmlhttp.responseText);
}
}

}

</script>

y así no:

Código: [Seleccionar]
<script type="text/javascript">

var xmlhttp = new XMLHttpRequest();

function mostrarMensaje(){
var nombre = document.getElementById('nombre').value;

xmlhttp.open("GET", "CU01209F(01).php?nombre="+nombre);
xmlhttp.send();


if(xmlhttp.readyState==4 && xmlhttp.status==200){
alert(xmlhttp.responseText);
}


}

</script>

¿Por qué es obligatoria utilizar la propiedad "onreadystatechange" del objeto "XMLHttpRequest"? ¿No basta sólo con tal de utilizar una de las propiedades: "readyState" o "status"?

Y otra cuestión: ¿cómo van ordenadas las sentencias en el uso del objeto "XMLHttpRequest"? Yo creo que primero se tiene que abrir con: "XMLHttpRequest.open()", luego enviarlo con: "XMLHttpRequest.send()" y luego ya invocar las demás propiedades, como por ejemplo, "XMLHttpRequest.responseText()". Pero en los ejemplos del curso, por lo menos hasta la entrega CU01209F, los métodos "open()" y "send()" aparacen al final del script.

Citar
EJERCICIO Nº2                                                                                               

Crea un archivo denominado respuesta1.txt que contenga varias líneas de texto y súbelo al servidor. Haz lo mismo para los archivos respuesta2.txt y respuesta3.txt. A continuación crea un archivo html donde usando Ajax y tres botones denominados “Ver archivo 1”, “Ver archivo 2” y “Ver archivo 3” puedas visualizar el contenido de cada archivo en un div preparado para ello encima del cual aparecerá “Contenido del archivo solicitado es:”.

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejemplo Ajax</title>
<script type="text/javascript">

var xmlhttp = new XMLHttpRequest();

function mostrarTexto(texto){
xmlhttp.open("GET", texto);
xmlhttp.send();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
var nodo = document.getElementById('contenedor');
nodo.innerHTML = xmlhttp.responseText;
}
}

}


</script>
</head>
<body style="text-align: center;">
<button onclick="mostrarTexto('respuesta1.txt');">Ver archivo 1</button>
<button onclick="mostrarTexto('respuesta2.txt');">Ver archivo 2</button>
<button onclick="mostrarTexto('respuesta3.txt');">Ver archivo 3</button>
<h1>El contendio del archivo solicitado es:</h1>
<div id="contenedor"></div>
</body>
</html>

Los archivos "respuesta1.txt, respuesta2.txt y respuesta3.txt" tienen los siguientes contenidos:

respuesta1.txt

Citar
Hola
Esto es el contendio del
primer texto

respuesta2.txt

Citar
Hola
Esto es el contendio del
segundo texto

respuesta3.txt

Citar
Hola
Esto es el contendio del
tercer texto


Gracias.

80
Buenas noches.

Aquí expongo una posible solución del ejercicio CU01207F del curso Ajax desde cero.

Citar
EJERCICIO

Tomando como punto de partida el código de ejemplo Ajax con el que estamos trabajando:

a) Modifica el código para que cuando se produzca una transmisión de información se muestre en una tabla el valor de todas las propiedades del objeto XMLHttpRequest.

Código 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;
}
td, th{
border: solid;
}
</style>
<script>

function mostrarSugerencia(str){
var xmlhttp;
var contenidosAMostrar = '';
var paises = str;

xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==1){
var msg = "<td>Estado 1</td><td>conexión con servidor establecida. Indica que se ha abierto la conexión pero todavía no se ha enviado la petición (no se ha llamado a send)</td>";
document.getElementById('fila1').innerHTML = msg;
alert('Estado 1');
}
if(xmlhttp.readyState==2){
msg = "<td>Estado 2</td><td>recibida petición en servidor. Indica que el servidor ya ha recibido la petición (se ha llamado a send)</td>";
document.getElementById('fila2').innerHTML = msg;
alert('Estado 2');
}
if(xmlhttp.readyState==3){
msg = "<td>Estado 3</td><td>enviando información. Se está enviando la información por parte del servidor, todavía no se ha completado la recepción.</td>";
document.getElementById('fila3').innerHTML = msg;
alert('Estado 3');
}
if(xmlhttp.readyState==4){
msg = "<td>Estado 4</td><td>completado. Se ha recibido la información del servidor y está lista para operar con ella.</td>";
document.getElementById('fila4').innerHTML = msg;
alert('Estado 4');
}

}

xmlhttp.open("GET","CU01206F(01).php?pais="+str);
xmlhttp.send();
}

</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">
<table>
<tr>
<th style="border: solid;">
Estado
</th>
<th>
Descripción
</th>
</tr>
<tr id="fila1">
</tr>
<tr id="fila2">
</tr>
<tr id="fila3">
</tr>
<tr id="fila4">
</tr>
</table>
</div>
</body>
</html>

Código PHP:

Código: [Seleccionar]
<?php 



?>

Realmente no es importante lo que haya en el código PHP. Lo importante es que exista para que el Ajax se pueda conectar.

No sé si he entendido muy bien el cometido del ejercicio.

Gracias.

Páginas: 1 2 3 [4] 5 6 7 8 9 ... 14

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