En esta página se muestran una parte de las soluciones de los ejercicios For (3), concretamente el fragmento PHP, sin el principio ni el final de la página que se pueden dejar en fragmentos HTML.
Si lo prefiere, puede descargar unas posibles soluciones completas de estos ejercicios.
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$numero = recoge("numero");
$numeroOk = false;
$numeroMinimo = 1;
$numeroMaximo = 200;
if ($numero == "") {
print " <p class=\"aviso\">No ha escrito el número.</p>\n";
print "\n";
} elseif (!is_numeric($numero)) {
print " <p class=\"aviso\">No ha escrito un número.</p>\n";
print "\n";
} elseif (!ctype_digit($numero)) {
print " <p class=\"aviso\">No ha escrito un número entero positivo.</p>\n";
print "\n";
} elseif ($numero < $numeroMinimo || $numero > $numeroMaximo) {
print " <p class=\"aviso\">El número debe estar entre "
. "$numeroMinimo y $numeroMaximo.</p>\n";
print "\n";
} else {
$numeroOk = true;
}
if ($numeroOk) {
print " <h2>Preformateado (<pre>)</h2>\n";
print "\n";
print " <pre>";
for ($i = 1; $i <= $numero; $i++) {
print "$i ";
}
print "</pre>\n";
print "\n";
print " <h2>Párrafos (<p>)</h2>\n";
print "\n";
for ($i = 1; $i <= $numero; $i++) {
print " <p>$i</p>\n";
print "\n";
}
print "\n";
print " <h2>Lista sin ordenar (<ul>)</h2>\n";
print "\n";
print " <ul>\n";
for ($i = 1; $i <= $numero; $i++) {
print " <li>$i</li>\n";
}
print " </ul>\n";
print "\n";
print " <h2>Lista ordenada (<ol>)</h2>\n";
print "\n";
print " <ol>\n";
for ($i = 1; $i <= $numero; $i++) {
print " <li>$i</li>\n";
}
print " </ol>\n";
print "\n";
}
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$columnas = recoge("columnas");
$columnasOk = false;
$columnasMinimo = 1;
$columnasMaximo = 200;
if ($columnas == "") {
print " <p class=\"aviso\">No ha escrito el número de columnas.</p>\n";
print "\n";
} elseif (!is_numeric($columnas)) {
print " <p class=\"aviso\">No ha escrito el número de columnas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($columnas)) {
print " <p class=\"aviso\">No ha escrito el número de columnas "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($columnas < $columnasMinimo || $columnas > $columnasMaximo) {
print " <p class=\"aviso\">El número de columnas debe estar entre "
. "$columnasMinimo y $columnasMaximo.</p>\n";
print "\n";
} else {
$columnasOk = true;
}
if ($columnasOk) {
print " <table class=\"conborde\">\n";
print " <tbody>\n";
print " <tr>\n";
for ($i = 1; $i <= $columnas; $i++) {
print " <td>$i</td>\n";
}
print " </tr>\n";
print " </tbody>\n";
print " </table>\n";
print "\n";
}
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$filas = recoge("filas");
$filasOk = false;
$filasMinimo = 1;
$filasMaximo = 200;
if ($filas == "") {
print " <p class=\"aviso\">No ha escrito el número de filas.</p>\n";
print "\n";
} elseif (!is_numeric($filas)) {
print " <p class=\"aviso\">No ha escrito el número de filas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($filas)) {
print " <p class=\"aviso\">No ha escrito el número de filas "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($filas < $filasMinimo || $filas > $filasMaximo) {
print " <p class=\"aviso\">El número de filas debe estar entre "
. "$filasMinimo y $filasMaximo.</p>\n";
print "\n";
} else {
$filasOk = true;
}
if ($filasOk) {
print " <table class=\"conborde\">\n";
print " <tbody>\n";
for ($i = 1; $i <= $filas; $i++) {
print " <tr>\n";
print " <td>$i</td>\n";
print " </tr>\n";
}
print " </tbody>\n";
print " </table>\n";
print "\n";
}
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$numero = recoge("numero");
$numeroOk = false;
$numeroMinimo = 1;
$numeroMaximo = 100;
if ($numero == "") {
print " <p class=\"aviso\">No ha escrito el tamaño de la tabla.</p>\n";
print "\n";
} elseif (!is_numeric($numero)) {
print " <p class=\"aviso\">No ha escrito el tamaño de la tabla como número.</p>\n";
print "\n";
} elseif (!ctype_digit($numero)) {
print " <p class=\"aviso\">No ha escrito el tamaño de la tabla "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($numero < $numeroMinimo || $numero > $numeroMaximo) {
print " <p class=\"aviso\">El tamaño de la tabla debe estar entre "
. "$numeroMinimo y $numeroMaximo.</p>\n";
print "\n";
} else {
$numeroOk = true;
}
if ($numeroOk) {
print " <table class=\"conborde\">\n";
print " <tbody>\n";
for ($i = 1; $i <= $numero; $i++) {
print " <tr>\n";
for ($j = 1; $j <= $numero; $j++) {
print " <td>" . $i * $j . "</td>\n";
}
print " </tr>\n";
}
print " </tbody>\n";
print " </table>\n";
print "\n";
}
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$numero = recoge("numero");
$numeroOk = false;
$numeroMinimo = 1;
$numeroMaximo = 100;
if ($numero == "") {
print " <p class=\"aviso\">No ha escrito el tamaño de la tabla.</p>\n";
print "\n";
} elseif (!is_numeric($numero)) {
print " <p class=\"aviso\">No ha escrito el tamaño de la tabla como número.</p>\n";
print "\n";
} elseif (!ctype_digit($numero)) {
print " <p class=\"aviso\">No ha escrito el tamaño de la tabla "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($numero < $numeroMinimo || $numero > $numeroMaximo) {
print " <p class=\"aviso\">El tamaño de la tabla debe estar entre "
. "$numeroMinimo y $numeroMaximo.</p>\n";
print "\n";
} else {
$numeroOk = true;
}
if ($numeroOk) {
print " <table class=\"conborde\">\n";
print " <tbody>\n";
print " <tr>\n";
print " <th>X</th>\n";
for ($j = 1; $j <= $numero; $j++) {
print " <th>$j</th>\n";
}
print " </tr>\n";
for ($i = 1; $i <= $numero; $i++) {
print " <tr>\n";
print " <th>$i</th>\n";
for ($j = 1; $j <= $numero; $j++) {
print " <td>" . $i * $j . "</td>\n";
}
print " </tr>\n";
}
print " </tbody>\n";
print " </table>\n";
print "\n";
}
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$filas = recoge("filas");
$columnas = recoge("columnas");
$altura = recoge("altura");
$anchura = recoge("anchura");
$filasOk = $columnasOk = $alturaOk = $anchuraOk = false;
$filasMinimo = $columnasMinimo = 1;
$alturaMinimo = 30;
$anchuraMinimo = 50;
$filasMaximo = $columnasMaximo = $alturaMaximo = $anchuraMaximo = 100;
if ($filas == "") {
print " <p class=\"aviso\">No ha escrito el número de filas.</p>\n";
print "\n";
} elseif (!is_numeric($filas)) {
print " <p class=\"aviso\">No ha escrito el número de filas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($filas)) {
print " <p class=\"aviso\">No ha escrito el número de filas "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($filas < $filasMinimo || $filas > $filasMaximo) {
print " <p class=\"aviso\">El número de filas debe estar entre "
. "$filasMinimo y $filasMaximo.</p>\n";
print "\n";
} else {
$filasOk = true;
}
if ($columnas == "") {
print " <p class=\"aviso\">No ha escrito el número de columnas.</p>\n";
print "\n";
} elseif (!is_numeric($columnas)) {
print " <p class=\"aviso\">No ha escrito el número de columnas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($columnas)) {
print " <p class=\"aviso\">No ha escrito el número de columnas "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($columnas < $columnasMinimo || $columnas > $columnasMaximo) {
print " <p class=\"aviso\">El número de columnas debe estar entre "
. "$columnasMinimo y $columnasMaximo.</p>\n";
print "\n";
} else {
$columnasOk = true;
}
if ($altura == "") {
print " <p class=\"aviso\">No ha escrito la altura de las filas.</p>\n";
print "\n";
} elseif (!is_numeric($altura)) {
print " <p class=\"aviso\">No ha escrito la altura de las filas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($altura)) {
print " <p class=\"aviso\">No ha escrito la altura de las filas "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($altura < $alturaMinimo || $altura > $alturaMaximo) {
print " <p class=\"aviso\">La altura de las filas debe estar entre "
. "$alturaMinimo y $alturaMaximo.</p>\n";
print "\n";
} else {
$alturaOk = true;
}
if ($anchura == "") {
print " <p class=\"aviso\">No ha escrito la anchura de las columnas.</p>\n";
print "\n";
} elseif (!is_numeric($anchura)) {
print " <p class=\"aviso\">No ha escrito la anchura de las columnas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($anchura)) {
print " <p class=\"aviso\">No ha escrito la anchura de las columnas "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($anchura < $anchuraMinimo || $anchura > $anchuraMaximo) {
print " <p class=\"aviso\">La anchura de las columnas debe estar entre "
. "$anchuraMinimo y $anchuraMaximo.</p>\n";
print "\n";
} else {
$anchuraOk = true;
}
if ($filasOk && $columnasOk && $alturaOk && $anchuraOk) {
print " <table class=\"conborde\" style=\"table-layout: fixed; border-collapse: collapse; width: " . ($anchura * ($columnas + 1)) . "px\">\n";
print " <tbody>\n";
print " <tr style=\"height: {$altura}px\">\n";
print " <th>X</th>\n";
for ($j = 1; $j <= $columnas; $j++) {
print " <th>$j</th>\n";
}
print " </tr>\n";
for ($i = 1; $i <= $filas; $i++) {
print " <tr style=\"height: {$altura}px\">\n";
print " <th>$i</th>\n";
for ($j = 1; $j <= $columnas; $j++) {
print " <td>" . $i * $j . "</td>\n";
}
print " </tr>\n";
}
print " </tbody>\n";
print " </table>\n";
print "\n";
}
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$numero = recoge("numero");
$numeroOk = false;
$numeroMinimo = 1;
$numeroMaximo = 20;
if ($numero == "") {
print " <p class=\"aviso\">No ha escrito el número de tablas.</p>\n";
print "\n";
} elseif (!is_numeric($numero)) {
print " <p class=\"aviso\">No ha escrito el número de tablas número.</p>\n";
print "\n";
} elseif (!ctype_digit($numero)) {
print " <p class=\"aviso\">No ha escrito el número de tablas "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($numero < $numeroMinimo || $numero > $numeroMaximo) {
print " <p class=\"aviso\">El número de tablas debe estar entre "
. "$numeroMinimo y $numeroMaximo.</p>\n";
print "\n";
} else {
$numeroOk = true;
}
if ($numeroOk) {
for ($k = 1; $k <= $numero; $k++) {
print " <table class=\"conborde\">\n";
print " <caption>Tabla del $k</caption>\n";
print " <tbody>\n";
print " <tr>\n";
print " <th>X</th>\n";
for ($j = 1; $j <= $k; $j++) {
print " <th>$j</th>\n";
}
print " </tr>\n";
for ($i = 1; $i <= $k; $i++) {
print " <tr>\n";
print " <th>$i</th>\n";
for ($j = 1; $j <= $k; $j++) {
print " <td>" . $i * $j . "</td>\n";
}
print " </tr>\n";
}
print " </tbody>\n";
print " </table>\n";
print "\n";
}
}
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$numero = recoge("numero");
$numeroOk = false;
$numeroMinimo = 1;
$numeroMaximo = 20;
if ($numero == "") {
print " <p class=\"aviso\">No ha escrito el número de tablas.</p>\n";
print "\n";
} elseif (!is_numeric($numero)) {
print " <p class=\"aviso\">No ha escrito el número de tablas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($numero)) {
print " <p class=\"aviso\">No ha escrito el número de tablas "
. "como número entero positivo.</p>\n";
print "\n";
} elseif ($numero < $numeroMinimo || $numero > $numeroMaximo) {
print " <p class=\"aviso\">El número de tablas debe estar entre "
. "$numeroMinimo y $numeroMaximo.</p>\n";
print "\n";
} else {
$numeroOk = true;
}
if ($numeroOk) {
$paso = $numero > 1 ? 255 / ($numero - 1) : 0;
for ($k = 0; $k < $numero; $k++) {
print " <table class=\"conborde\">\n";
print " <caption>Tabla nº" . 1 + $k . "</caption>\n";
print " <tbody>\n";
for ($i = 0; $i < $numero; $i++) {
print " <tr>\n";
for ($j = 0; $j < $numero; $j++) {
print " <td style=\"background-color:rgb("
. round($k * $paso) . " " . round($i * $paso) . " "
. round($j * $paso) . ")\" title=\"R:" . round($k * $paso)
. " G:" . round($i * $paso) . " B:" . round($j * $paso)
. "\"></td>\n";
}
print " </tr>\n";
}
print " </tbody>\n";
print " </table>\n";
print "\n";
}
}
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
$numeradas = recoge("numeradas");
$columnas = recoge("columnas");
$numeradasOk = $columnasOk = false;
$numeradasMinimo = 1;
$numeradasMaximo = 1000;
$columnasMinimo = 1;
$columnasMaximo = 100;
if ($numeradas == "") {
print " <p class=\"aviso\">No ha escrito el número de celdas numeradas.</p>\n";
print "\n";
} elseif (!is_numeric($numeradas)) {
print " <p class=\"aviso\">No ha escrito el número de celdas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($numeradas)) {
print " <p class=\"aviso\">No ha escrito el número de celdas numeradas "
. "como número entero.</p>\n";
print "\n";
} elseif ($numeradas < $numeradasMinimo || $numeradas > $numeradasMaximo) {
print " <p class=\"aviso\">El número de celdas numeradas debe estar entre "
. "$numeradasMinimo y $numeradasMaximo.</p>\n";
print "\n";
} else {
$numeradasOk = true;
}
if ($columnas == "") {
print " <p class=\"aviso\">No ha escrito el número de columnas.</p>\n";
print "\n";
} elseif (!is_numeric($columnas)) {
print " <p class=\"aviso\">No ha escrito el número de columnas como número.</p>\n";
print "\n";
} elseif (!ctype_digit($columnas)) {
print " <p class=\"aviso\">No ha escrito el número de columnas "
. "como número entero.</p>\n";
print "\n";
} elseif ($columnas < $columnasMinimo || $columnas > $columnasMaximo) {
print " <p class=\"aviso\">El número de columnas debe estar entre "
. "$columnasMinimo y $columnasMaximo.</p>\n";
print "\n";
} else {
$columnasOk = true;
}
if ($numeradasOk && $columnasOk) {
$filas = ceil($numeradas / $columnas);
$contador = 1;
print " <table class=\"conborde\">\n";
print " <tbody>\n";
for ($i = 1; $i <= $filas; $i++) {
print " <tr>\n";
for ($j = 1; $j <= $columnas; $j++) {
// Los paréntesis aquí son necesarios
print " <td>" . ($contador <= $numeradas ? $contador++ : "") . "</td>\n";
}
print " </tr>\n";
}
print " </tbody>\n";
print " </table>\n";
print "\n";
}
?>