Logre llegar hasta este punto
Introducción
Fundamentos de PHP sin Frameworks y Desarrollo de Microproyecto
Uso de la Consola de Comandos en Visual Studio Code
Pensamiento Lógico en Desarrollo de Software: Estrategias y Aplicaciones
Conceptos básicos en la práctica
Operadores Lógicos en PHP: Uso y Ejemplos Prácticos
Operadores aritméticos en PHP: suma, resta, multiplicación y más
Estructuras de Control en PHP: If, Else, While, For, Switch
Funciones en PHP: Creación, Uso y Documentación
Funciones matemáticas en PHP: max, min, pi, rand y sqrt
Interacción entre Formularios HTML y Scripts PHP
Ejercicios de Lógica con PHP: Edades y Dibujos en Consola
Microproyecto de lógica
Desarrollo de Aplicación para Ordenar Palabras Desordenadas
Creación de Formularios y Validación de Datos en PHP
Escalabilidad de Formularios Dinámicos en PHP
Validación Dinámica de Datos en Formularios Web
Ejercicios de PHP: Descuentos y Orden de Productos
Conclusiones
Buenas prácticas en desarrollo web: separación frontend y backend
Resumen de Aprendizajes en PHP y Programación Lógica
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Explorar la optimización de un juego de ordenamiento ofrece un sinfín de oportunidades para mejorar tanto en la interfaz como en el código de análisis. A medida que avanzamos con estos ajustes, no solo mejoramos la experiencia del usuario, sino que también perfeccionamos nuestra habilidad técnica al detectar errores e implementando soluciones más eficientes y organizadas.
Al comenzar con el juego, se presentaron varios errores que requerían atención inmediata:
¿Por qué ocurrían estos problemas? El error radicaba en cómo se construían los inputs de manera dinámica. Si bien se usaban corchetes para acceder a la posición de un array, en realidad solo se necesitaba el nombre de la variable i
para que los inputs se generaran correctamente. Además, el código de análisis no se había actualizado para validar todos los inputs.
Para solucionar estos inconvenientes, es esencial hacer uso de estructuras de control dinámicas y eficientes.
Actualización dinámica de inputs: Ajustamos el nombre de los inputs utilizando solo la variable de iteración para asegurar que cada input sea identificado correctamente.
Uso de ciclos for para validaciones: En lugar de crear múltiples validaciones fijas, utilizamos un ciclo for
para iterar a través del array de palabras de manera dinámica. Esto permite una validación más eficiente al comparar inputs del usuario con las respuestas esperadas.
for ($i = 0; $i < count($arrayPalabras); $i++) {
if ($_REQUEST['palabra'.$i] == $arrayPalabras[$i]) {
echo "La palabra ingresada es correcta.<br>";
} else {
echo "La palabra ingresada es incorrecta. La palabra correcta es: ".$arrayPalabras[$i]."<br>";
}
}
Incluso con una implementación brillante, es importante estar atento a posibles errores de tipeo o lógica que puedan comprometer el resultado final:
Errores tipográficos: Hubo un error al llamar al array con el nombre incorrecto, impidiendo la correcta validación. Corregir esto implicó asegurar que todos los nombres de variables fueran correctos y consistentes.
Limpieza del código: Eliminamos líneas de código innecesarias como print
que solo eran útiles para los desarrolladores en la fase de depuración.
Después de estos ajustes, recargamos el formulario y constatamos que todas las palabras se validan correctamente, proporcionando al usuario un feedback claro y preciso sobre sus entradas.
Este recorrido a lo largo de la optimización del juego nos enseña una lección invaluable: la importancia de ser observadores, detallistas y pacientes ante errores. Los desarrolladores deben verificar cuidadosamente la lógica y los nombres de variables. Cada error es una oportunidad para mejorar, optimizar y desarrollar aplicaciones más robustas. Con las herramientas y el enfoque adecuados, podemos dar vida a interfaces más atractivas y funcionales. ¡Así que mantén la calma, sigue practicando y domina el arte de la programación!
Aportes 31
Preguntas 3
Logre llegar hasta este punto
Una mejora que se le podría hacer al código sería la de implementar HERENCIA, en nuestro archivo ´analisis.php´ con solo agregar una sola linea de código y borrar otra.
<?php
require 'index.php'; //Mandando a llamar nuestro archivo 'index.php', obtenemos las variables de el, y asi heredamos el array de las palabras de ese archivo y aqui ya no copiamos el array sino que lo mandamos a llamar desde el 'index.php'
for ($i = 0; $i < count($palabras); $i++) {
if ($_REQUEST["palabra" . $i] === $palabras[$i]) {
echo "Si es esa palabra." . "<br>";
} else {
echo "Incorrecto, la solucion es: " . $palabras[$i] . "<br>";
}
}
Les comparto el código hecho en clase:
Esto corresponde al archivo analisis.php
:
<?php
//print_r($_REQUEST);
$wordsList = ["sol", "luna", "cielo", "luz", "estrellas", "lluvia"];
for ($i=0; $i < count($wordsList); $i++) {
if($_REQUEST["word".$i] == $wordsList[$i]) {
echo "La palabra ingresada es correcta.<br>";
} else {
echo "La palabra ingresada es incorrecta, y la palabra correcta es: $wordsList[$i].<br>";
}
}
Me salió bien por fin!!
gran curso
Tratando de mejorar la presentación y organización del proyecto llegué a esta solución donde además de los archivos index.php (formulario inicial) y result.php (resultados) agregue uno más: controller.php. En controller.php manejo el array al que tendrán acceso las dos páginas de presentación y en ellas tan solo ‘pinto’ lo que se necesita. Adicional también investigué un poco tratando de organizar mejor el resultado en el html. ¡Anexo los ejemplos!
Estructura de archivos:
index.php
<?php
require_once "controller.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Put the words in order</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Put the words in order</h1>
<p>Escribe correctamente las siguientes palabras</p>
<form action='result.php'>
<?php for ($i = 0; $i < count($words); $i++) : ?>
<label for="word_<?= $i ?>"><?= str_shuffle($words[$i]) ?></label>
<input type="text" name="word_<?= $i ?>">
<?php endfor ?>
<button type='submit'>Analizar resultados</button>
</form>
</body>
</html>
result.php
<?php
require_once "controller.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Put the words in order</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Put the words in order</h1>
<p>Estos son los resultados de tu intento</p>
<div class="result">
<?php for ($i = 0; $i < count($words); $i++) : ?>
<?php if ($_REQUEST["word_" . $i] === $words[$i]) : ?>
<p><span class="score">¡Acertaste!</span> La palabra ingresada es correcta</p>
<?php else : ?>
<p><span class="fail">¡Fallaste!</span> La palabra correca es <strong><?= $words[$i] ?></strong></p>
<?php endif ?>
<?php endfor ?>
</div>
<button type="button" onclick="window.open('index.php', '_self')">Volver a jugar</button>
</body>
</html>
controller.php
<?php
$words = [
"sol",
"luna",
"cielo",
"casa",
"perro",
];
style.css
* {
box-sizing: border-box;
font-family: sans-serif;
}
body {
padding: 0;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
width: 100%;
height: 100%;
min-height: 100vh;
background-color: azure;
}
h1 {
text-transform: capitalize;
margin-bottom: 0;
color: darkslateblue;
}
input[type='text'],
label {
display: block;
}
form {
width: 500px;
}
label {
margin: 0.5em 0 0.2em;
}
input[type='text'] {
width: 100%;
padding: 0.8em 1em;
border: 1px solid grey;
}
button {
padding: 1em 1.5em;
background-color: darkslateblue;
color: whitesmoke;
border: none;
border-radius: 2em;
text-transform: uppercase;
margin: 2em;
margin-inline: auto;
display: block;
text-decoration: none;
}
.score,
.fail {
padding: 0.5em 1em;
display: inline-block;
border-radius: 2em;
}
.score {
background-color: greenyellow;
}
.fail {
background-color: crimson;
}
main
<?php
$words = array(“moon”, “soccer”, “playing”);
$form = “<form action =‘analysis.php’>”;
//* makes messy words
for($i = 0; $i < count($words); $i++){
$form .= “The word: " . str_shuffle($words[$i]) .” “. “<input type=‘text’ name='word”. $i .”’>" . “<br>”;
}
$button = “<button type=‘submit’>Send</button>”;
$formClose = “</form>”;
echo $form . $button . $formClose;
?>
<?php
analisis
$words = array(“moon”, “soccer”, “playing”);
for ($i=0; $i <count($words) ; $i++) {
if($_REQUEST[“word” .$i] == $words[$i]) {
echo "The word is correct. " . “<br>”;
}else {
echo "The word is incorrect, the word is: " . $words[$i] . “<br>”;
}
}
?>
<?php
print_r($_REQUEST);
$palabras = array(“sol”,“luna”,“cielo”,“luz”,“estrellas”,“lluvia”);
for ($i = 0; $i < count($palabras); $i++) {
$palabra = $_REQUEST[“palabra” . $i];
if ($palabra == $palabras[$i]) {
echo “La palabra " . $palabra . " es correcta <br/>”;
} else {
echo “La palabra " . $palabra . " es incorrecta <br/>”;
}
}
?>
muy buena explicacion va paso a paso…
<?php
// print_r($_REQUEST);
$palabras = array(“sol”, “luna”, “cielo”, “luz”, “estrellas”, “lluvia”);
for($i = 0; $i < count($palabras); $i++){
if($_REQUEST[“palabra” .$i] == $palabras[$i]){
echo “La palabra ingresada es correcta” ."<br>";
} else {
echo “La palabra ingresada es incorrecta, la palabra correcta es: " .$palabras[$i] .”<br>";
}
}
"; if ( $palabra == $palabras_correctas[$indice] ) $html .= "La respuesta a la $indice es Correcta " ; else $html .= "La respuesta a la $indice es Incorrecta " ; $html .= " |
[](
![]()
Main
<?php
//* Palabras iniciales
$palabras = ["sol", "luna", "cielo", "luz", "estrellas", "lluvia"];
$form = "<form action='analisis.php' >";
// *Mezcla de palabras
for ($i = 0; $i < count($palabras); $i++) {
$form .= "La palabra:" . str_shuffle($palabras[$i]) . " " . "<input type='text' name='palabra" . $i . "'>" . "<br/>";
}
$button = "<button type='submit'>Enviar 😎</button>";
$formcierre = "</form>";
echo $form . $button . $formcierre;
?>
Analisis
<?php
//* Palabras iniciales
$palabras = ["sol", "luna", "cielo", "luz", "estrellas", "lluvia"];
// *Verificar respuesta usuario
for ($i = 0; $i < count($palabras); $i++) {
if ($_REQUEST["palabra" . $i] == $palabras[$i]) {
echo "<br>Adivininaste 🎉 las respuesta es correcta<br>";
} else {
echo "<br>Incorrecto 🥺, la palabra es {$palabras[$i]}<br>";
}
}
?>
supermal explicado todo, no explicó en el curso nada sobre como instalar wamp ni nada.
<?php
$palabras = array('carro','triciclo','moto','bicicleta','camion','tractocamion');
$form = "<form action='analisis.php'>";
for ($i=0; $i <count($palabras); $i++) {
$form .="la palabra :".str_shuffle($palabras[$i])." "."<input type='text' name='palabra".$i."'>"."<br>";
}
$button = "<button type='submit'>Enviar</button>";
$form_cierre = "</form>";
echo $form.$button.$form_cierre;
?>
<?php
print_r($_REQUEST);
$palabras = array('carro','triciclo','moto','bicicleta','camion','tractocamion');
echo "<br>";
for ($i=0; $i <count($palabras); $i++) {
if ($_REQUEST["palabra".$i] == $palabras[$i]) {
echo "la palabra ingresada es correcta"."<br>";
}else {
echo "la palabra ingresada es incorrecta, la palabra ingreasada es: ".$palabras[$i]."<br>";
}
}
?>
RETO3.PHP
$palabras = array(“sol”,“luna”,“cielo”,“estrellas”,“lluvia”);
$form = "<form action='analisis.php'>";
$conta=0;
foreach ($palabras as $value) {
$form.="La palabra; ".str_shuffle($value)." ".
"<input type='text' name='pal".$conta++."'> <br>";
}
$button="<button type='submit'>Analizar</button>";
$formCierre="</form>";
echo $form.$button.$formCierre;
?>
ANALISIS.PHP
$palabras = array(“sol”,“luna”,“cielo”,“estrellas”,“lluvia”);
$conta=0;
foreach ($palabras as $value) {
if($_REQUEST["pal".$conta]==$value){
echo "La palabra es correcta" . "<br>";
} else {
echo "La palabra ingresada es incorrecta,
la palabra correcta es " . $value . "<br>";
}
$conta++;
}
Solo avisaré que tuve una idea al ver este capítulo. Es 14 de Septiembre de 2022, 00:38 horas.
Cuando resulte agregaré ya sea un vínculo a un video de lo que hace o un vínculo a una copia pública.
Esta parte es de las más valiosas que pueden utilizar, leer dinámicamente los inputs, obvio también la generación dinámica de los mismos.
index.php
<?php
$palabras = array("sol", "luna", "cielo","luz","estrellas","perro","otorrinolaringologo","odontologo");
$desorden = array();
foreach ($palabras as $value) {
array_push($desorden,str_shuffle($value));
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>Document</title>
</head>
<body>
<main class="mt-5">
<h1 class="text-center">Adivina La Palabra</h1>
<div class="container mt-5">
<div class="row">
<form class="form-group" action="analisis.php">
<?php
foreach ($desorden as $key => $value) {
echo "<div class='mb-3'>
<label for='exampleInputPassword$key' class='form-label text-center'>$value</label>
<input type='text' class='form-control' name='palabra$key' id='exampleInputPassword$key'>
</div>";
}
?>
<button type='submit' class="btn btn-primary">Enviar</button>
</form>
</div>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</body>
</html>
analisis.php
<?php
$palabras = array("sol", "luna", "cielo","luz","estrellas","perro","otorrinolaringologo","odontologo");
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>Document</title>
</head>
<body>
<main class="mt-5" >
<div class="container">
<div class="row align-items-center">
<?php
foreach ($palabras as $key => $value) {
if ($_REQUEST["palabra$key"] == $value) {
echo "<div class='alert alert-success d-flex align-items-center' role='alert'>
<svg class='bi flex-shrink-0 me-2' width='24' height='24' role='img' aria-label='Success:'><use xlink:href='#check-circle-fill'/></svg>
<div>
La Palabra Es Correcta Ascertaste
</div>
</div>";
}else{
echo "<div class='alert alert-danger d-flex align-items-center' role='alert'>
<svg class='bi flex-shrink-0 me-2' width='24' height='24' role='img' aria-label='Danger:'><use xlink:href='#exclamation-triangle-fill'/></svg>
<div>
La Palabra Correcta Era: $value
</div>
</div>";
}
}
?>
</div>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</body>
</html>
muyyyyyyyy bieeeen
<?php
include "./common/verifyData.php";
for ($i = 0; $i < count($word); $i++){
if(verifyData($word[$i],$i) == false){
echo " this word #".$_REQUEST["word".$i]
."# is not written correctly, the correct word is ".$word[$i].", ";
}else{
echo $word[$i]." is written correctly, ";
}
}
?>
// verifyData file
<?php
$word = array("sun", "moon", "sky", "light","stars","rain");
function verifyData ($word,$index){
if($_REQUEST["word".$index] == $word){
return true;
}
return false;
}
Con este ejemplo pude hacer un tipo de formulario con opciones
<?php
$Pregunta = '¿Que significa PID?';
$id_pregunta = "101";
$opciones = array(
'a' => "Proyecto integrador docente",
'b' => "Protecion inteligente dedicada",
'c' => "Proporcional integral derivativo",
'd' => "Diseño integral proyectivo" );
$answer="c";
$form = "<p>".$Pregunta."</p>";
$form .= "<form action= 'analisis.php'>";
foreach($opciones as $letra => $texto){
$form .= "<input type='radio' name=".$id_pregunta." value=".$letra . ">";
$form .= "<label for=".$letra. ">".$texto."</label><br>";
}
$form.= " <input type='submit' value='Verificar'>";
$form .="</form> ";
echo $form;
?>
Una refactorización del proyecto, espero que les sirva de ayuda, estoy repasando basico de php.
Index.php
<?php
$palabras = ['marcus', 'penicilina', 'maracuya', 'arbolada'];
$wordsDeso = [];
for ($i=0; $i < count($palabras); $i++) {
$wordsDeso[] = str_shuffle($palabras[$i]);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ordenamiento</title>
</head>
<body>
<main>
<form action="result.php" method="POST">
<?php for($i = 0; $i < count($wordsDeso) ; $i++):?>
<label for="word<?=$i?>">La palabra es: <?=$wordsDeso[$i]?></label>
<input type="text" name="word<?=$i?>"><br>
<?php endfor;?>
<input type="submit" value="Enviar">
</form>
</main>
</body>
</html>
result.php
<?php
$resultados = respuesta();
foreach($resultados as $resultado ){
echo $resultado . "<br>";
}
function respuesta()
{
$palabras = ['marcus', 'penicilina', 'maracuya', 'arbolada'];
$respuestas = [];
if(isset($_REQUEST)) {
$count= count($_REQUEST);
for ($i=0; $i < $count; $i++) {
if($_REQUEST["word".$i] == $palabras[$i]) {
$respuestas[] = "La respuesta es correcta . <br>";
} else {
$respuestas[] = "La respuesta no es correcta. La respuesta es: {$palabras[$i]}. <br>";
}
}
}
return $respuestas;
}
function messWord(array $array) : array {
$result = [];
foreach($array as $items) {
$result[] = str_shuffle($items);
}
return $result;
}
?>
<?php
$palabras = array(“sol”, “luna”, “cielo”, “luz”, “estrellas”, “lluvia”);
$form ="<form action=‘analisis.php’>";
for($i = 0; $i < count($palabras); $i++){
$form .=“La palabra: " .str_shuffle($palabras[$i]). " “.
”<input type=‘text’ name='palabra”.$i."’>".
"<br>";
}
$button = “<button type=‘submit’>Enviar</button>”;
$formCierre = “</form>”;
echo $form.$button.$formCierre;
<?php
// print_r($_REQUEST);
// echo '<br>';
$words = array('sol', 'luna', 'cielo', 'luz', 'estrella', 'lluvia');
for ($i = 0; $i < count($words); $i++) {
if ($_REQUEST["word{$i}"] == $words[$i]) {
echo 'La palabra ingresada es correcta!<br>';
} else {
echo 'La palabra es incorrecta, la palabra correcta es: ' . $words[$i] . '<br>';
}
}
?>
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?