Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

C贸digo organizado

8/26
Recursos

El c贸digo organizado se refiere a c贸mo tenemos distribuido nuestros archivos en la ra铆z (root) del proyecto. A mayor organizaci贸n, mayor entendimiento del c贸digo.

Aportes 187

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Esto es muy f谩cil cu谩ndo trabajas con entornos de desarrollo sofisticados que agrupan los proyectos en librer铆as, de esta manera la programaci贸n en capas es m谩s sencilla. Sin embargo, cuando trabajas con entornos que son mas libres, por ejemplo, si vas a desarrollar un proyecto con Python usando por ejemeplo Visual Studio Code, vas a tener que considerar crear una estructura de directorios que le de sentido a la organizaci贸n de tu c贸digo. Para esto es importante crear categor铆as que nos permitan agrupar los 谩mbitos de nuestros archivos, es importante aqu铆 la diagramaci贸n a trav茅s de herramientas que nos permitan organizar claramente c贸mo deber铆amos construir nuestro proyecto, CMAP Tools es 煤til ac谩, y cualquier otro instrumento que permita crear mapas o diagramas como tal vez Visio. Es tambi茅n importante tomar estas decisiones antes de comenzar a codificar el proyecto, esta es una decisi贸n digamos de alto nivel.

C贸digo organizado


Cuando hablamos de c贸digo organizado nos referimos a c贸mo est谩 el c贸digo distribuido en nuestro sistema de archivos. Esto significa que necesitas organizar el c贸digo y que seg煤n c贸mo se llame el archivo, este adentro debe contener 煤nicamente lo que su nombre indica.

Quiere decir, que agruparemos archivos que tengan un contenido similar en directorios.

猸 Esto se trata de convenci贸n, no una imposici贸n.

PHP ej:

  • /public
  • /src
  • /tests
  • /vendor

Mi codigo (No se mucho de php pero me gusto el reto)

<?php
    $numero = $_POST['Numero'];

    function calcularFactorial($factorial = 1, $numero) {
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }

    function multiplicarIteracion($numero, $i) {      
      return $numero * $i;
    }

    function imprimirIteracionNumeros($numero) {
      for ($i = 0; $i <= 10; $i++) {
        echo "<tr>"
        echo "<td>$numero * $i:></td>"
        echo "<td>" 
        echo multiplicarIteracion($numero, $i)
        echo "</td>"
        echo "</tr>"
      }
    }

    function imprimirNumeroFactorial($numero) {
      echo "<tr>"
      echo "<td>"
      echo calcularFactorial($numero)
      echo "</td>"
      echo "</tr>"
    }
?>
<table border="1">
    <?php
      imprimirIteracionNumeros($numero);
      imprimirNumeroFactorial($numero);
    ?>
</table>

Este es mi c贸digo:

<?php
    
    // Definici贸n de funciones
    function multiplicar( $numero ) {
      
        $tabla = array();

        for($multiplicacion = 1; $multiplicacion <= 10; $multiplicacion++)
            $tabla["$numero x $multiplicacion"] = $numero * $multiplicacion;
            
        return $tabla;

    }
    
    function factorial( $numero ) {
        
        $factorial = 1;
        
        for ($numero_dado = $numero; $numero_dado >= 1; $numero_dado--)
            $factorial *= $numero_dado;
        
        return $factorial;
        
    }
    
    // Preparo las variables
    $numero = $_POST['Numero'];
    $tabla = multiplicar( $numero );
    $factorial = factorial( $numero );

?>

<table border="1">
    
    <?php foreach($tabla as $descripcion => $resultado): ?>
      <tr>
        <td><?= $descripcion ?></td>
        <td><?= $resultado ?></td>
      </tr>
    <?php endforeach; ?>
    
    <tr>
        <td><?= $numero ?>!</td>
        <td><?= $factorial ?></td>
    </tr>
    
</table>

No se nada de PHP.

En este articulo pueden revisar algunas buenas practicas, convenciones y sigerencias para organizar su codigo en JS:
https://medium.com/@davidenq/gu铆a-de-estilo-convenciones-y-buenas-pr谩cticas-de-desarrollo-con-javascript-d2e9ef80d63b

Dejo por aqu铆 mi soluci贸n al reto

<?php
    $numero = $_POST['Numero'];
    imprimirTabla($numero);

    function tablaMultiplicar($numero)
    {
        for($i = 0; $i <= 10; $i++){
            imprimirFila(array("$numero x $i: ", $numero*$i));
        }
    }

    function factorial($numero)
    {
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        imprimirFila(array("$numero!", $factorial)); 
    }

    function imprimirFila($datos)
    {
        echo "<tr>";
        for($i = 0; $i < count($datos); $i++){
            echo "<td>$datos[$i]</td>";
        }
        echo "</tr>";
    }

    function imprimirTabla($numero)
    {
        echo '<table border="1"';
        tablaMultiplicar($numero);
        factorial($numero);
        echo '</table>';
    }
?>

Siempre tener en cuenta que cada framework o biblioteca tiene su propia organizaci贸n de archivos recomendada. No es lo mismo una aplicaci贸n de frontend con React que una backend de FastAPI. Revisar la documentaci贸n del stack utilizado siempre es la mejor opci贸n ~

/public

Archivos accesibles desde afuera del servidosr

/src

Archivos de nuestro proyecto

/test

Archivos de pruebas unitarias

/vendor

Archivos de librer铆as de terceros

Organizacion de codigo:

public/ reto2.html
src/reto2.php

/public: contendra todos los archivos que son accesibles directamente desde afuera del servidor
/src: contendr谩 todos los archivos propios de nuestro proyecto, es decir el c贸digo escrito por nosotros
/tests: tendr谩 las pruebas unitarias
/vendor: contendr谩 todos los archivos de librer铆as de terceros que este utilizando nuestro proyecto

Reto cumplido

Pude probar el c贸digo directamente en php, tiene raz贸n el profesor un c贸digo as铆 cuesta mucho entender, se nota la diferencia despu茅s de organizarlo, para quien se pregunta esto es lo que debe hacer el programa:

C贸digo

<?php
    $numero =10;
    /**
     * Multiplica el numero ingresado por numeros del 1 al 10
     * @param int Numero a calcular
     */
    function multiplicacion($numero){
        for ($i = 1; $i <= 10; $i++){
             echo 
             "<tr>
                <td>  $numero x $i:  </td>
                <td>".$numero * $i." </tb>
             </tr>";
        }
    }
    /**
     * Deacuerdo al numero que se capturado se calcula su factorial 
     *  @param int NUmero a calcular  
     */
    function calcular_factorial($numero){
        $factorial = 1;
        $num_factorial = $numero - ($numero - 1 );
            for ($f = $numero; $f >= 1; $f--) {
                echo "<tr>
                        <td>" . $num_factorial++ ."! = </td>
                        <td>".$factorial *= $f."</td>
                    </tr>";   
            }
    }    
?>      
    <table border="1">
        <th>Multiplicaci贸n</th>       
            <?php multiplicacion($numero);     ?>
            <?php calcular_factorial($numero); ?>          
   </table>


C贸digo organizado de PHP (Agradezco su feedback):

<?php
    $numero = $_POST['Numero'];

    public function calcularFactorial($factorial = 1, $numero)
    {
        for ($numero; $numero >= 1; $numero--)
        {
            return $factorial *= $numero;
        }
    }

    public function multiplicarCiclo($numero)
    {
        for($i = 0; $i <= 10; $i++)
        {
            return $numero * $i;
        }
    }
?>


<table border="1">
    <tr>
        <td><?php echo "$numero x $i:"; ?></td>
        <td><?php echo multiplicarCiclo($numero); ?></td>
    </tr>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo calcularFactorial(1, $numero); ?></td>
    </tr>
</table>

Convencion para proyectos de PHP moderno

Amo este curso, clar铆simo, pr谩ctico y entretenido. Les aviso que faltan los archivos de la clase para hacer el desaf铆o de la organizaci贸n del c贸digo.

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php 
        for ($i = 0; $i <= 10; $i++): 
    ?>
    <tr>
        <td><?php echo "$numero x $i:"; ?></td>
        <td><?php echo $numero * $i; ?></td>
    </tr>
    <?php endfor; ?>
    
    <?php
        $factorial = 1;
        for ($factorial = $numero; $factorial >= 1; $factorial--){
            $factorial *= $factorial;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>```

As铆 qued贸 mi reto:

Nota de la clase: como tenemos el c贸digo organizado en los diversos archivos o clases. Ah铆 que evitar tener clases que no con un nombre y dentro de ella tenemos funciones que no tengan que ver nada con el nombre de la clase, as铆 como donde pongo los archivos de mi proyecto, es decir en diferentes carpetas, por ejemplo carpetas de conexi贸n, carpeta de dise帽o, carpeta de clases, etc.

ruta2.php

<code> 
<?php
    $numero = $_POST['Numero'];

    function multiplicarDosNumeros($numeroUno, $numeroDos) {
        return $numeroUno * $numeroDos;
    }

    function factorial($numero) {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++) {
            ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo multiplicarDosNumeros($numero, $i); ?></td>
            </tr>
        <?php } ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>

Title.html

<code> 
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Title</title>
  </head>
  <body>
    <form action="reto2.php" method="post">
      <input name="Numero" />
      <input type="submit" />
    </form>
  </body>
</html>

脡ste es mi c贸digo鈥

<?php
    $numero = $_POST['Numero'];
    construirTabla($numero);        


function construirTabla($numero){
    echo " <table border='1'> ";
    hallarMultiplos($numero);
    hallarFactorial($numero);
    echo "</table>";
}

function hallarMultiplos($numero) : void {
    for ($i = 0; $i <= 10; $i++){
        echo "<tr>";
        echo "<td>" . $numero . "x" . $i.":" . "</td>";
        echo "<td>" . $numero * $i . "</td>";
        echo "</tr>";
    }
}

function hallarFactorial($numero){
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }

    echo "<tr>";
    echo "<td>" . $numero."!". "</td>";
    echo "<td>" . $factorial . "</td>";
    echo "</tr>";
}
<?php
    $numero = $_POST['Numero'];
    $numero = 6;
    imprimir_tabla($numero);

    function imprimir_tabla($numero){
        echo '<table border="1">';
                
        mostrar_tabla_multiplicar($numero);
        mostrar_factorial_tabla($numero);            
            
        echo '</table>';
    }
    function mostrar_factorial_tabla($numero){
        echo'
        <tr>
            <td> '.$numero.'! </td>
            <td> '.factorial($numero).' </td>
        </tr>
        ';
    }
    function factorial($numero):int{
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }

    function mostrar_tabla_multiplicar($numero){
        for ($i = 0; $i <= 10; $i++){
            echo' 
            <tr>
                <td>'.$numero.' x '.$i.': </td>
                <td> '.$numero*$i.'</td>
            </tr>';
        }

        

    }
?>

no se si esta bien, pero yo si lo considero mucho mejor

<?php
    $numero = $_POST['Numero'];

    function calcularFactoriar($numeroFactoriar){
        $factorial = 1;

        for ($i = $numero; $i >= 1; $i--) {
            $factorial *= $f;
        } 
    }


?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body> 
    <table border="1">

        <?php for ($i = 0; $i <= 10; $i++): ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo $numero * $i; ?></td>
            </tr>
        <?php endfor; ?>

        <?php
            factorial($numero);
        ?>

        <tr>
            <td><?= $numero; ?>!</td>
            <td><?= $factorial; ?></td>
        </tr>
    </table>
</body>
</html>

馃崈Aqu铆 el c贸digo corregido para que lo comparen:

<?php
  $numero = $_POST['Numero'];

  $factorial = 1;

  for ($f = $numero; $f >= 1; $f--) {
    $factorial *= $f;
  }
?>
<table border="1">
  <?php for ($i = 0; $i <= 10; $i++): ?>
  <tr>
    <td><?php echo "$numero x $i:"; ?></td>
    <td><?php echo $numero * $i; ?></td>
  </tr>
  <?php endfor; ?>
  <tr>
    <td><?php echo "$numero!"; ?></td>
    <td><?php echo $factorial; ?></td>
  </tr>
</table>
<!DOCTYPE html>
<!-- saved from url=(0094)https://static.platzi.com/media/public/uploads/reto2_ba67975f-2599-4e42-ae73-047e5f6cf9ee.html -->
<html lang="es">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

		<title>Title</title>
	</head>
	<body>
		<form action="reto-2.php" method="post">
			<input name="Numero" />
			<input type="submit" />
		</form>
	</body>
</html>

Mi respuesta para el reto 2

<?php
    $numero = $_POST['Numero'];

    function calcularFactorial($numero)
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }

    function calcularExponencial($numero)
    {
        $html = "";
        for ($i = 0; $i <= 10; $i++){
            $result = $numero * $i;
            $html = $html."<tr>
                <td>$numero x $i:</td>
                <td>$result</td>
            </tr>";
        }
        return $html;
    }
?>
<table border="1">
    <?php echo calcularExponencial($numero); ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo calcularFactorial($numero); ?></td>
    </tr>
</table>

Mi propuesta:

<?php
    $numero = $_POST['Numero'];
?>

<table border="1">
    <?php imprimirTabla($numero); ?>
    <?php imprimirFactorial($numero); ?>
</table>

<?php

function imprimirFactorial($numero) {
    $factorial = calcularFactorial($numero);

    echo "<tr>";
    echo "<td>$numero!</td>";
    echo "<td>$factorial</td>";
    echo "</tr>";
}

function calcularFactorial($numero) {
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) 
        $factorial = multiplicar($factorial, $f);

    return $factorial;
}

function imprimirTabla($numero) {
    for ($i = 0; $i <= 10; $i++) 
        imprimirFila($numero, $i);
}

function imprimirFila($numero, $i) {
    $res = multiplicar($numero, $i);

    echo "<tr>";
    echo "<td>$numero x $i:</td>";
    echo "<td>$res</td>";
    echo "</tr>";
}

function multiplicar($numero1, $numero2) {
    return $numero1 * $numero2;
}
?>

reto2.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <form action="reto2.php" method="post">
        <input name="Numero" />
        <input type="submit" />
    </form>
</body>

</html>

reto2.php

<?php
    $numero = $_POST['Numero'];
?>

<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++){
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo $numero * $i; ?></td>
            </tr>
        }
    ?>
    <?php
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Este es mi codigo organizado.
Realize solo la logica de PHP iniciando el script, dentro del HTML solo muestro los resultados.

<?php
$numero = 8;

function multiplicarNumero($numero,$i){
    return $numero * $i;
}

function factorialNumero($numero){
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}
?>
<table border=鈥1鈥>
<?php for ($i = 0; $i <= 10; $i++): ?>
<tr>
<td><?=$numero x $i:鈥 ?></td>
<td><?= multiplicarNumero($numero,$i) ?></td>
</tr>
<?php endfor; ?>
<tr>
<td>Factorial <?= $numero ?></td>
<td><?= factorialNumero($numero) ?></td>
</tr>
</table>

este es mi aporte 馃槃

<?php
    $numero = $_POST['Numero'];
    imprimirTabla($numero);

    function multiplicarNumero($numero)
    {
        
        for($i=0; $i<=10; $i++)
        {
           
            echo "<tr>";
            echo "<td>"."$numero"."x"."$i"."</td>";
            echo  "<td>".$numero*$i."</td>";
            echo "</tr>";
        }
    }

    function formulaFactorial($numero)
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--)
        {    
            $factorial *= $f;
            
        }
        echo "<tr><td>$factorial!</td></tr>";
    }

    function imprimirTabla($numero)
    {
        echo '<table border="1"';
        multiplicarNumero($numero);
        formulaFactorial($numero);
        echo '</table>';
    }
?>


Me queda as铆

<?php
$numero = $_POST['Numero'];
function tablaMultiplicar($numero){
	$tabla = [];
	for ($i = 0; $i <= 10; $i++):
		$tabla[] = $numero * $i;
	endfor;
	return $tabla;
}
function factorial ($numero){
	$factorial = 1;
	for ($f = $numero; $f >= 1; $f--) :
		$factorial *= $f;
	endfor;
	return [$factorial];
}
function tablaHtml($numero, $arrayDatos){
	$r = '<table border="1">';
	for ($i = 0; $i < count($arrayDatos) - 1; $i++):
		$r .= ('<tr><td>'. $numero .' x '. $i.':</td>');
		$r .= ('<td>' . $arrayDatos[$i] . '</td></tr>');
	endfor; 
    $r .= ('<tr><td>' . $numero . '!</td>');
    $r .= ('<td>' .end($arrayDatos). '</td></tr>');
	$r .= '</table>';
	return $r;
}
echo tablaHtml($numero,array_merge(tablaMultiplicar($numero),factorial($numero)));

Mi solucion

PHP

<?php
    $numero = $_POST['Numero'];
    function factorial($numero) : int {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
            ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo $numero * $i; ?></td>
            </tr>
        <?php endfor; ?>
    <?php
        $factorial = factorial($numero);
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
    <script async src="/cdn-cgi/bm/cv/669835187/api.js"></script>
  </head>
  <body>
    <form action="reto2.php" method="post">
      <input name="Numero" />
      <input type="submit" />
    </form>
    <script>
      (function () {
        window["__CF$cv$params"] = {
          r: "72d557338f905006",
          m: "UFHBMbPRyH1tu25FvOiZHf2n._9HA7_gRWOnr1BPtbg-1658253458-0-AUnMuMWs/B9hPktOVsA0DX/g4zdns96PYIjx9QBgtWUGmNwZ6tsrGF0aVINUqpiMSUq/1Kw0gKpXn3SLkhiCIe6iVyg9KOEYdF/FB+/l94UK5MEa3hybG8aHkJElsNC+BGeAc6Voy6CAB0LMZKr29x0qXaW+0IiT6a76qc0RxxeogPozL6aF4rdK2kXSbGPFxbhFN5DYcfE/aOL08bQIQO4=",
          s: [0xe4f86a12cc, 0xc00e49e0ba],
        };
      })();
    </script>
  </body>
</html>

<!DOCTYPE html>
<html>
<head>
<title>Reto 2 cumplido</title>
</head>
<body>
<?php
$numero = 7; ?>
<table border=鈥1鈥>
<?php
imprimirIteracionNumeros($numero);
imprimirNumeroFactorial($numero);
?>
</table>
<?php
// Funciones
function multiplicar($numero, $i) {
return $numero * $i;
}
function imprimirIteracionNumeros($numero) {
for ($i = 0; $i <= 10; $i++) {
echo 鈥<tr>鈥;
echo 鈥<td>$numero * $i:></td>鈥;
echo 鈥<td>鈥;
echo multiplicar($numero, $i);
echo 鈥</td>鈥;
echo 鈥</tr>鈥;
}
}
function imprimirNumeroFactorial($numero) {
$factorial = 1;
for ($f = $numero; $f >= 1; $f鈥) {
echo 鈥<tr>鈥;
echo 鈥<td>$numero!</td>鈥;
echo 鈥<td>鈥;
echo $factorial *= $f;
echo 鈥</td>鈥;
echo 鈥</tr>鈥;
}
}
?>
</body>
</html>

<?php
    const CANTIDAD_NUMEROS = 10;
    $numeroIngresado = $_POST['Numero'];
    
    function calculoFactorial(int $numero) :int
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php for ($i = 0; $i <= CANTIDAD_NUMEROS; $i++){ ?>
            <tr>
                <td><?php echo "$numeroIngresado x $i:"; ?></td>
                <td><?php echo $numeroIngresado * $i ?></td>
            </tr>
    <?php } ?>
    <tr>
        <td><?php echo "$numeroIngresado!"; ?></td>
        <td><?php echo calculoFactorial($numeroIngresado); ?></td>
    </tr>
</table>

Buenas, dejo mi soluci贸n al reto. Me parece m谩s prolijo y funcional que lo que es HTML se quede en el HTML. Esto va a permitir que si un dise帽ador necesita meter mano para sumar clases y estilos, pueda modificar los <td> sin necesidad de tocar mi c贸digo.

<?php
function factorial(int $value){
	if($value == 0){
		return 1;
	}
	return $value * factorial($value - 1);
}

function print_td(string $text){
	return "<td>$text</td>";
}
function print_tr(string $text){
	return "<tr>$text</tr>";
}
function init($numero){
	$template = '<table border="1">';
	for($i = 0; $i <= 10; $i++){
		$num = print_td("$numero x $i:");
		$value = print_td($numero * $i);
		$template .= print_tr($num . $value);
	}
	$factorial = factorial($numero);
	$factorialFormat = print_td($factorial);
	$numeroFormat = print_td("$numero !");
	$template .= print_tr($numeroFormat . $factorialFormat);
	$template .= '</table>';
	return $template;
}

$numero = (int) $_POST['Numero'];
echo init($numero);

Aqu铆 mi soluci贸n 馃槃

<?php
    $numero = intval($_POST['Numero']);
    
    //Funcion que calcula el factorial de forma recursiva
    function factorial( $num ){ 
        if( $num == 0 ) return 1;
        
        return $num * factorial( $num - 1 );
    }

    function tablaNumerica( $num ){
        $template = "";
        for ( $i = 0; $i <= 10; $i++ ){
            $valor = $num * $i;
            $template .= 
            "<tr>
                <td>$num x $i</td>
                <td>$valor</td>
            </tr>";
        }

        return $template;
    }
   
?>

<table border="1">
    <?=tablaNumerica($numero) ?>
    <tr>
        <td><?="$numero!"; ?></td>
        <td><?=factorial($numero); ?></td>
    </tr>
</table>

Un poco tarde pero bueno, no me pod铆a quedar con las ganas de hacer el reto y compartirles mi c贸digo.

<?php

$numeroPost = (int) trim($_POST['Numero']);

function multiplicarNumero(int $numero = 2)
{
    $resultado = 0;
    for($a = 1; $a <= 10; $a++)
    {
        $resultado = $numero * $a;
        mostrarMulitiplicacion($numero, $a, $resultado);
    }
}

function mostrarMulitiplicacion(int $numero, int $multiplicador, int $resultado)
{
    echo "
        <tr>
            <td> {$multiplicador} * {$numero} </td>
            <td> {$resultado} </td>
        </tr>
    ";
}

function factorial(int $numero = 2)
{
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    mostrarFactorial($factorial, $numero);
}

function mostrarFactorial(int $factorial, int $numero)
{
    echo "
        <tr>
            <td> Factorial de {$numero} </td>
            <td> {$factorial} </td>
        </tr>
    ";
}

?>

<table border="1">
    <tr>
        <td colspan="2">Multiplicaci贸n</td>
    </tr>
    <?php multiplicarNumero($numeroPost); ?>
    <tr>
        <td colspan="2">Factorial</td>
    </tr>
    <?php factorial($numeroPost); ?>
</table>

Mi soluci贸n al reto:

<?php
    //$numero = $_POST['Numero'];
    $numero=9;

    function iteration($numero){
        for ($i = 0; $i <= 10; $i++){    
            echo "<tr>";
            echo "<td>$numero x $i:</td>";
            echo "<td>".$numero * $i."</td>";
            echo "</tr>";
        }
    }
        
        function calcFactorial($numero){
        $factorial = 1;
        $num_factorial = $numero - ($numero - 1 );
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        
        echo "<tr>";
        echo "<td>$num_factorial!</td>";
        echo "<td>$factorial!</td>";
        echo "<tr>";
        $num_factorial++;
        }
    }

?>
<table border="1"> 
    <?php

    iteration($numero);
    
    calcFactorial($numero);
    ?>
</table>

Lo hice directo con php porque con el html no funcionaba

<?php
    $numero = $_POST['Numero'];

    function multiply( $number, $index ){
        return $number * $index;
    }

    function concat( $first, $second ){
        return "$first x $second";
    }

    function factorial($number){
        $factorial = 1;
        for ($f = $number; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;

    }

?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
            ?>
            <tr>
                <td><?php echo concat($number, $i) ?></td>
                <td><?php echo multiply($number, $i); ?></td>
            </tr>
        <?php endfor; ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero) ?></td>
    </tr>
</table>

Buenas! Comparto mi resoluci贸n al reto, saludos!


reto_:2.php

<?php
$numero = $_POST['Numero'];
?>

<table border = "1">

    <?php
    for ($i = 0; $i <= 10; $i++):
        ?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php  echo multiplicar($numero, $i); ?></td>
        </tr>

    <?php 
        endfor;

        $factorial = 1;

        $factorial_resultado = factorial($numero, $factorial);
    ?>
     

    <tr>
        <td><?php echo "$numero!";?> </td>
        <td><?php echo $factorial_resultado;?> </td>
    </tr>

</table>



<?php
//Definici贸n de funciones

function multiplicar($a, $b){
    return $a*$b;
}

function factorial($num, $factorial){

    for ($f = $num; $f >= 1; $f--) {
            $factorial *= $f;
        }
    return $factorial;
}
?>

MI reto

<?php
    $numero = $_POST['Numero'];
    
    function multiplicarPor($numero,$i){
        $resultado = $numero * $i;
        return $resultado;
    }
    function factorial($numero){
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
         $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
            ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo multiplicarPor($numero,$i); ?></td>
            </tr>
        <?php endfor; ?>
   
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>
<?php

function calculateFactorial($number) {
    $factorial = 1;
    for ($i = $number; $i >= 1; $i--) {
        $factorial *= $i;
    }
    return $factorial;
}

function createTableColumn($tag, $value) {
    return sprintf("<%s> %s </%s>", $tag, $value, $tag);
}

function createTableRow($items = []) {
    $tableContent = "<tr>";
    foreach ($items as $key => $value) {
        $tableContent .= createTableColumn($value["tag"], $value["value"]);
    }
    $tableContent .= "</tr>";
    echo $tableContent;
}

function createMultipleRows($totalRows, $number, $items = []) {
    for ($i = 0; $i <= $totalRows; $i++) {
        echo createTableRow([
            ["tag" => "td", "value" => "$number x $i:"],
            ["tag" => "td", "value" => $number * $i],
        ]);
    }
}

$numero = $POST['numero'];
?>

<table border="1">
	<?php createMultipleRows(10, $numero); ?>

	<?php 
        createTableRow([
            ["tag" => "td", "value" => "$numero!"],
            ["tag" => "td", "value" => calculateFactorial($numero)],
        ]); 
    ?>
</table>

Una posible soluci贸n:

tablaDeMultiplicar.php

<?php

function tablaDeMultiplicar($numero)
{
    $array = [];
    for($i = 0; $i <= 10; $i++) {
        $array[$i] = $numero * $i;
    }
    return $array;
}

factorial.php

<?php

function factorial($numero)
{
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

index.php

<?php

include "tablaDeMultiplicar.php";
include "factorial.php";

$numero = $_POST['Numero'];
$celdas = tablaDeMultiplicar($numero);
$factorial = factorial($numero);

?>
<table border="1">
<?php
    foreach($celdas as $clave => $valor) {
?>
    <tr>
        <td><?= "$numero x $clave:"; ?></td>
        <td><?= $valor; ?></td>
    </tr>
<?php 
    }
?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Resultado del reto:

<?php
$numero = 0;
    function factorial($numero) {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }

    function multiplicarNumero($numero, $veces) {
        $resultados = [];
        for ($i=0; $i <= $veces; $i++) { 
            array_push($resultados, ($numero * $i));
        }
        return $resultados;
    }
?>

<?php if (isset($_POST['Numero']) && !empty($_POST['Numero'])): ?>

<?php
    $numero = $_POST['Numero'];
    $resultadosMultiplicacion = multiplicarNumero($numero, 10);
    $factorial = factorial($numero);
?>

<table border="1">
    <?php for ($i=0; $i < count($resultadosMultiplicacion); $i++):?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php echo $resultadosMultiplicacion[$i]; ?></td>
        </tr>
    <?php endfor?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

<?php endif?>

<?php
$numero = $_POST[鈥楴umero鈥橾;

function calcularFactorial($numero){
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

function multiplicarIteraccion($numero, $i){
    return $numero * $i;
}

function imprimirIteraccionNumero($numero){
    echo multiplicarIteraccion;
}

function imprimirFactorial(){
    echo calcularFactorial;
}

?>

<table border=鈥1鈥>
<tr>
<td imprimirIteraccionNumero ($numero)> </td>
<td imprimirFactorial($numero) > </td>
</tr>
</table>

Mi soluci贸n al reto propuesto:

<?php
/**
 * Organizar el codigo de mnanera que sea modular, reutilizable y que cumpla con las buenas practicas ense帽adas haste el mommento
 */
$numero = $_POST['Numero'];

function tablaMultiplicar($numero){
    for ($i = 0; $i <= 10; $i++) :
        echo "<tr>";
        echo "<td> $numero x $i: </td>";
        echo "<td>".$numero * $i ."</td>";
        echo "</tr>";
    endfor;
}

function factorial($numero){
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

function mostrarTabla($numero){
    echo tablaMultiplicar($numero);
    echo "<tr>";
    echo "<td> $numero! </td>";
    echo "<td>".factorial($numero)."</td>";
    echo "</tr>";
}
?>

<table border="1">
    <?php echo mostrarTabla($numero); ?>
</table>




No s茅 nada de PHP pero as铆 me quedo a mi

Les comparto mi reto

reto2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script async src='/cdn-cgi/bm/cv/669835187/api.js'></script>
</head>
<body>
    <form action="reto2.php" method="post">
        <input name="Numero"/>
        <input type="submit"/>
    </form>
</body>
</html>

reto2.php

<?php

function table($number){
    $tabla = "<table border='2'>". pintarFilas($number).factorial($number) ."</table>";
    return $tabla;
}

function pintarFilas($number){
    $filas = '<tr>
                <th>Multiplo</th>
                <th>Resultado</th>
            </tr>';
    return multplicar($number, $filas);
}

function multplicar($number, $filas){

    for ($i=0; $i <= 10; $i++) { 
        $filas .= "<tr>".
                    "<td>". $number . 'x ' . $i . "</td>".
                    "<td>".($number*$i)."</td>".
                "</tr>";
    }
    return $filas;
}
        
function factorial($number){
    $filas = '<tr>
                <th>Factorial</th>
                <th>Resultado</th>
            </tr>';

    $factorial = 1;
    for ($i = 1; $i <= $number; $i++) {
        $filas .= "<tr>".
                        "<td>". $i . '!'. "</td>".
                        "<td>".$factorial*$i."</td>".
                  "</tr>";
    }
    return $filas;
}

if (isset($_POST)) {
    $number = (int)$_POST['Numero'];
    echo table($number);
}
?>

Resultado

Comparto mi forma de organizar el codigo

<?php
$numero = $_POST['Numero'];

echo tabla($numero);

// Funcion para imprimir tabla
function tabla($numero){
    
    $valores = "<table border='1'>";
    
    for ($i = 0; $i <= 10; $i++):
        $valores .= "<tr>";
        $valores .= "<td>{$numero} x {$i}:</td>";
        $valores .= "<td>".$numero * $i."</td>";
        $valores .= "</tr>";
    endfor;
    
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    
    $valores .= "<tr>";
    $valores .= "<td>{$numero}!</td>";
    $valores .= "<td>{$factorial}</td>";
    $valores .= "</tr>";
    $valores .= "</table>";
    return $valores;
}

La estructura de directorios la puse asi:

El codigo de public/index.html es este:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <form action="reto2.php" method="post">
        <input name="Numero" />
        <input type="submit" />
    </form>
</body>

</html>

El de public/reto2.php es este:

<?php
    require_once('../src/reto2.php');
?>
<!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
            <?php
                echo pintarTabla($_POST['Numero']);
            ?>
        </body>
    </html>

y el de src/reto2.php es este:

<?php
    function pintarTabla($numero) : string {
        $tabla = '<table border="1">'.pintarFilas($numero).pintarFactorial($numero).'</table>';

        return $tabla;
    }

    function pintarFilas($numero) : string {
        $filas = '';

        for($i = 0; $i <= 10; $i++) {
            $filas .= '<tr><td>'.$numero.' x '.$i.':</td><td>'.$numero*$i.'</td></tr>';
        }

        return $filas;
    }

    function pintarFactorial($numero) : string {
        $factorial = calcularFactorial($numero);

        $filafactorial = '<tr><td>'.$numero.'!</td><td>'.$factorial.'</td></tr>';

        return $filafactorial;
    }

    function calcularFactorial($numero) : int {
        $factorial = 1;

        for($f = $numero; $f>=1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }

La ejecucion final me arroja esto:

As铆 me quedo a mi si tienen alg煤n feedback se agradece ya que se me complico un poco. Gracias!

<?php
    $numero = 10;
    
    public function calcularFactorial ($numero){
        $factorial = 1;
        for ($numero; $numero >= 1; $numero--){
            return $factorial * $numero;
        }
    }

    public function forLoop($numero) {
        for($i = 0; $i <= 10; $i++){
            echo $numero * $i;
        }
    }


?>


<table border="1">
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php forLoop($numero) ?></td>
            </tr>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php calcularFactorial($numero) ?></td>
    </tr>
</table>

Mi solucion

<?php
$numero = $_POST['Numero'];
?>
<table border="1">
  <?php
  //|a x b:|c|
  for ($i = 0; $i <= 10; $i++) :
    $x = "$numero x $i:";
    $y = $numero * $i;
    trWrite([$x, $y]);

  endfor;

  #factorial
  //| p! | q |
  $factorial = getFactorial($numero);
  trWrite(["$numero!", $factorial]);


  function getFactorial($inicio)
  {
    $factorial = 1;

    for ($f = $inicio; $f >= 1; $f--) {
      $factorial *= $f;
    }
    return $factorial;
  }

  function trWrite($list)
  {
    echo '<tr>';
    array_walk($list, 'tdWrite');
    echo '</tr>';
  }

  function tdWrite($text)
  {
    echo "<td>$text</td>";
  }

  ?>

</table>

Cordial saludo comunidad, a continuacion anexo screnshot con mi solucion al reto, agradeceria que apoyen con sus comentarios, para saber en que puedo mejorar.

Tambien para las personas que quieran subir un screenshot de su codigo les recomiendo instalar polacode en las extensiones de visual studio code.

Vale, yo no se nada de php pero aqu铆 est谩 lo que hice y casi muy poco de js. De hecho el de html no tengo ni idea de qu茅 es lo que hace el js

<?php
    $numero = $_POST['Numero'];
    echo '<table border="1">'
    multiplicationRows( $numero );
    factorialRow( $numero );
    echo '</table>'

    function multiplicationRows( $numero )
    {
        for ($i = 0; $i <= 10; $i++)
        {
            echo "<tr>";
                echo "<td>";
                echo "$numero x $i:";
                echo "</td>";
                echo "<td>";
                echo "$numero * $i:";
                echo "</td>";
            echo "</tr>";
        }
    }

    function factorialRow( $numero )
    {
        $factorial = 1;
        for ($i = 1; $i <= $numero; $i++)
        {
            $factorial *= $i;
        }
        echo "<tr>";
            echo "<td>";
            echo "$numero!";
            echo "</td>";
            echo "<td>";
            echo "$factorial:";
            echo "</td>";
        echo "</tr>";
    }
    
?>

Version reto2.html

<!DOCTYPE html>
<!-- saved from url=(0094)https://static.platzi.com/media/public/uploads/reto2_ba67975f-2599-4e42-ae73-047e5f6cf9ee.html -->
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Title</title>

    <script data-dapp-detection="">
        !function()
        {
            let e =! 1;
            function n()
            {
                if (!e)
                {
                    const n = document.createElement("meta");
                    n.name = "dapp-detected", document.head.appendChild(n), e =! 0;
                }
            }
            if (window.hasOwnProperty("ethereum"))
            {
                if (window.__disableDappDetectionInsertion =! 0, void 0 === window.ethereum)
                    return;
                n();
            }
            else
            {
                var t=window.ethereum;
                Object.defineProperty(
                    window,"ethereum",
                    {
                        configurable: !0,
                        enumerable: !1,
                        set:function(e)
                            {
                                window.__disableDappDetectionInsertion || n(),
                                t = e
                            },
                        get:function() {
                            if (!window.__disableDappDetectionInsertion)
                                {
                                    const e = arguments.callee;
                                    e && e.caller && e.caller.toString && -1 !== e.caller.toString().indexOf("getOwnPropertyNames") || n()
                                }
                            return t;
                        }
                    }
                )
            }
        }();
    </script>
    <script src="chrome-extension://mooikfkahbdckldjjndioackbalphokd/assets/prompt.js"></script>
</head>
<body>
    <form action="reto2.php" method="post">
        <input name="Numero">
        <input type="submit">
    </form>
</body>
</html>

No es mucho , pero es trabajo honesto 馃槀

![](

<?php
	$numero = $_POST['Numero'];
	function imprimirIteraciones($numero){
		for ($i = 0; $i <= 10; $i++){
			$producto = $numero* $i;
			imprimirRenglon("$numero x $i:",$producto);
		}
	}
	function calcularFactorial($numero){
		$factorial = 1;
		for ($f = $numero; $f >= 1; $f--) {
			$factorial *= $f;
		}
		return $factorial;
	}
	function imprimirFactorial($numero){
		$factorial = calcularFactorial($numero);
		imprimirRenglon($numero."!",$factorial);
	}
	function imprimirRenglon($izquierda,$derecha){
		echo "<tr>".
		"<td>$izquierda</td>".
		"<td>$derecha</td>".
		"</tr>";
	}
?>
<table border="1">
	<?php
		imprimirIteraciones($numero);
		imprimirFactorial($numero);
	?>
</table>
<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <th>Multiplicaci贸n</th>
    <tr>
        <td><?php echo multiplicacion($numero); ?></td>
        <td><?php echo "Factorial " . factorial($numero); ?></td>
    </tr>
</table>



<?php 
function multiplicacion($numero){
	for ($i = 0; $i <= 10; $i++){
        echo "<tr>
                <td>$numero x $i:</td>
                <td>" . $numero * $i . "</td>
            </tr>";
    }
    return $numero;
}

function factorial($numero){
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}
<?php

        $numero = $_POST['Numero'];
        tablaMultiplicar($numero);

        function tablaMultiplicar($numero) {
            for ($i = 0; $i <= 10; $i++) {
                $multiplicadorFila = "$numero x $i";
                $resultadoMultiplicacionFila = $numero * $i;
                imprimirResultadoMultiplicacion($multiplicadorFila,$resultadoMultiplicacionFila,$i,$numero);
            }
        }

        function imprimirResultadoMultiplicacion($multiplicadorFila,$resultadoMultiplicacionFila,$valorCiclo,$numero) {
            if($valorCiclo == 0){ echo "<table border='1'>";}
            echo '<tr>
                                          <td>'.$multiplicadorFila.'</td>
                                          <td>'.$resultadoMultiplicacionFila.'</td>
                                      </tr>';
            if($valorCiclo == 10) { calcularFactorial($numero); }
        }

        function calcularFactorial($numero) {
            $factorial = 1;
            for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
            }
            echo '<tr>
                                          <td>'.$numero.'!</td>
                                          <td>'.$factorial.'</td>
                                     </tr>
                          </table>';
        }

Reto2

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php
        multiplyNumber($numero);
    ?>
    <?php
        function printResult( $text, $result ) {
            return "
                <tr>
                    <td>$text</td>
                    <td>$result</td>
                </tr>
                ";
        }

        function multiplyNumber( $number ) {
            for ($i = 0; $i <= 10; $i++) {
                echo printResult("$number x $i:", $number * $i);
            }
        }

        function factorialNumber( $number, $factorial = 1 ) {
            for ($f = $number; $f >= 1; $f--) {
                $factorial *= $f;
            }
            return $factorial;
        }
    ?>
    <?php echo printResult("$numero!", factorialNumber($numero)) ?>
</table>

no entiendo mucho php pero asi parece estar muy ordenado

<?php
    $numero = $_POST['Numero'];

    function Ciclo1(){
        for ($i = 0; $i <= 10; $i++){
            echo "$numero x $i:"; 
            echo $numero * $i; 
        }
    }

    function Factorial(){
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    }

?>
<table border="1">
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>```

Referente al reto:

<?php
    $numero = $_POST['Numero'];

    function generarMultiplicaciones($numero) {
        $multiplicaciones = "";
        for ($i = 0; $i <= $numero; $i++) {
            $multiplicaciones .= generarFila("$numero x $i", $numero * $i);
        }
        return $multiplicaciones;
    }

    function generarFactorial($numero) {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return generarFila("$numero!", $factorial);
    }

    function generarFila($indicador, $valor) {
        return "
            <tr>
                <td>$indicador</td>
                <td>$valor</td>
            </tr>
        ";
    }

    function imprimirTabla($multiplicaciones, $factorial) {
        echo "
            <table border=\"1\">
                $multiplicaciones
                $factorial
            </table>
        ";
    }

    imprimirTabla(generarMultiplicaciones($numero), generarFactorial($numero));
?>
<<?php
    $numero = 5
?>
<table border="1">
    <?php
        imprimirMultiplicacion($numero);
        ?>
    <?php
        $factorial = 1;
        $calculoFactorial = calcularFactorial($factorial, $numero);
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $calculoFactorial; ?></td>
    </tr>
</table>

<?php
function imprimirMultiplicacion($numero){
    for ($i = 0; $i <= 10; $i++){
        echo "
        <tr>
            <td> ".$numero ."x". $i.": </td>
            <td> ".$numero * $i;"</td>
        </tr>";
    }    
}

function calcularFactorial($factorial, $numero){
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

?>>
<?php 
    $numero = $_POST['Numero'];
    
    function imprimirMultiplicadores($numero){
        for ($i = 0; $i <= 10; $i++){
            echo "<tr>";
            echo "<td> $numero x $i: </td>";
            echo "<td>". $numero * $i ."</td>";
            echo "</tr>";
        }
    }
    
    function calcularFactorial($numero) {
        $factorial = 1;
        
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        
        imprimirFactorial($numero, $factorial);
    }
    
    function imprimirFactorial($numero, $factorial){
        echo "<tr>";
        echo "<td>".$numero."!</td>";
        echo "<td>".$factorial."</td>";
        echo "</tr>";
    }
    
    ?>

<table border="1">
    <?php 
        imprimirMultiplicadores($numero);
        calcularFactorial($numero);
    ?>
</table>```

Reto de la clase

<!DOCTYPE html>
<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 	<title>C谩lculos Matematicos</title>
</head>
<body cz-shortcut-listen="true">
    <form action="./../src/reto.php" method="post">
        <input name="Numero">
        <input type="submit">
    </form>
</body>
</html>
<?php
    $numero = $_POST['Numero'];

    function generarTabla($numero)
    {
        for ($i = 0; $i <= 10; $i++)
        {
            $fila = "".
            "<tr>".
                "<td>$numero x $i:</td>" .
                "<td>". $numero*$i ."</td>".
            "</tr>";
            echo $fila;
        }
    }
    function factorial($numero):int
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) 
        {
            $factorial *= $f;
        }

        return $factorial;
    }
    function mostrarResultadoFactorial($numero, $factorial)
    {
        $cadena = "" .
        "<tr>
        <td>$numero!</td>
        <td> $factorial</td>
         </tr>";
         echo $cadena;
    }
?>
<table border="1">
    <?php
        generarTabla($numero);
        $factorial=factorial($numero);
        mostrarResultadoFactorial($numero,$factorial);
    ?>
    
</table>

Aca esta el reto:

<?php
    $numero = $_POST['Numero'];

    function imprimir_multiplicacion($num1, $num2){
        $resultado = $num1 * $num2;
        echo "
        <tr>
            <th> $num1 x $num2 : </th>
            <td> $resultado </td>
        </tr>
        ";
    }

    function imprimir_factorial($numero){
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        echo "
        <tr>
            <th> $numero! </th>
            <td> $factorial </td>
        </tr>
        ";
    }
?>
<table border="1">
    <caption>Hola</caption>
    <?php
        for ($i = 0; $i <= 10; $i++):
            imprimir_multiplicacion($numero, $i);
            ?>            
        <?php endfor; ?>   
        <?php imprimir_factorial($numero)?>
</table>

Mi idea solo es hacer mas facil imprimir una fila en la tabla.

Comparto mi propuesta de soluci贸n para el reto, se aprecia la retroalimentaci贸n.

<!-- index.php | index.html  -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Challenge</title>
</head>

<body>
    <form action="process.php" method="POST">
        <div>
            <label for="number">Number:</label>
            <input name="number" id="number" type="number" min="0" title="Give a number" placeholder="Give a number" required />
        </div>
        <div>
            <input type="submit" value="Send and process the number" />
        </div>
    </form>
</body>

</html>

<?php
// process.php
if (! function_exists('post')) {
    function post($post)
    {
        $strip = strip_tags(trim($_POST[$post]));
        $clean = htmlentities($strip, ENT_QUOTES, 'UTF-8');

        return $clean;
    }
}

if (! function_exists('factorial')) {
    function factorial(float $number): float
    {
        $factorial = 1;

        for ($f = $number; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }
}

if (! function_exists('multiply')) {
    function multiply(float $number, float $i): float
    {
        return $number * $i;
    }
}

if (! function_exists('multiplyLabel')) {
    function multiplyLabel(float $number, float $i): string
    {
        return "{$number} x {$i}:";
    }
}

if (! function_exists('generateHTMLTableRow')) {
    function generateHTMLTableRow($number, float $limit): string
    {
        $row = '';
        for ($i = 0; $i <= $limit; $i++) {
            $multiplyLabel = multiplyLabel($number, $i);
            $multiply = multiply($number, $i);
            $row .= "<tr>
                        <td>{$multiplyLabel}</td>
                        <td>{$multiply}</td>
                    </tr>";
        }

        return trim($row);
    }
}

define('TABLE_LIMIT', 10);
$number = (float) post('number');
$factorial = factorial($number);
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Process</title>
</head>

<body>
    <table border="1">
        <tbody>
            <?= generateHTMLTableRow($number, TABLE_LIMIT); ?>
        </tbody>
        <tfoot>
            <tr>
                <td><?= $number ?>!</td>
                <td><?= $factorial ?></td>
            </tr>
        </tfoot>
    </table>

</body>

</html>

una estructura com煤n ayuda a una mejor explicaci贸n para algun mienbro nujevo en el equipo.

<?php
    $numero = $_POST['Numero'];
    
    function hallarMultiplicacion($numero, $i){
       return $numero * $i;
    }

    function hallarFactorial($numero){
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>

<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?> 
            <tr>
                <td><?php echo $numero. "x". $i ?></td>
                <td><?php echo hallarMultiplicacion($numero, $i) ?></td>
            </tr>
    <?php endfor;?>
    <tr>
        <td>
            <?php echo "$numero!" ?>
        </td>
        <td>
            <?php echo hallarFactorial($numero) ?>
        </td>
    </tr>
</table>```

Creo que lo empeor茅:

<?php
$numero = $_POST[鈥楴umero鈥橾;
?>
<table border=鈥1鈥>
<?php
for ($i = 0; $i <= 10; $i++):
impresion($i)
endfor;
?>
<tr>
<td><?php echo 鈥$numero!鈥; ?></td>
<td><?php echo calculoFactorial($numero); ?></td>
</tr>
</table>
<?php

function impresion(iter){
    echo "<td> $numero x $iter </td"; 
    echo "<td>" . $numero * $iter . "</td"; 
}

function calculoFactorial($dato){
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return factorial
}

?>

As铆 es como ha quedado mi soluci贸n:

<?php
function tablaMultiplicar($numero)
{
    for ($i = 0; $i <= 10; $i++) {
        $resultado = $numero * $i;
        echo "<tr>
                <td> '$numero x $i': </td>
                <td> $resultado </td>
            </tr>";
    }
}

function factorial($factorial, $numero)
{
    for ($f = $numero; $f <= 1; $f--) {
        $factorial *= $f;
    }
}

$numero = $_POST['Numero'];
?>

<table border="1">
    <?php
    tablaMultiplicar($numero);

    $factorial = 1;

    factorial($factorial, $numero);
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Estructura de directorios recomendada

/public
contendr谩 todos los archivos que ser谩n accesibles desde afuera del servidor
/src
todos los archivos propios de nuestro proyecto
/test
contendr谩 las pruebas unitarias
/vendor
contendr谩 todas las librerias de terceros que estemos utilizando.

<?php
    $numero = $_POST['Numero'];

    function multiplicaNumero ($numero) {
        for ($i=0; $i <= 10; $i++) {
            echo "<tr>"; 
            echo "<td>$numero x $i:</td>";
            echo "<td>" . $numero * $i . "</td>";
            echo "</tr>";
        }
    }
    function calculaFactorial ($numero) {
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php multiplicaNumero($numero)?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo calculaFactorial($numero); ?></td>
    </tr>
</table>```

Mi soluci贸n:

<?php
    $numero = $_POST['Numero'];
    function factorial($numero)
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td><?="$numero x $i:";?></td>
            <td><?=$numero * $i;?></td>
        </tr>
    <?php endfor; ?>
    <tr>
        <td><?="$numero!";?></td>
        <td><?=factorial($numero);?></td>
    </tr>
</table>
<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo $numero * $i; ?></td>
            </tr>
        <?php endfor; ?>
    <?php
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>```

Esta es mi propuesta del reto:

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td> <?php echo "$numero x $i:"; ?> </td>
            <td> <?php echo $numero * $i; ?> </td>
        </tr>
    <?php endfor; ?>
    <?php
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--){
            $factorial *= $f;
        }
    ?>
    <tr>
        <td> <?php echo "$numero!"; ?> </td>
        <td> <?php echo $factorial; ?> </td>
    </tr>
</table>```
<?php

  $numero = $_POST['Numero'];

  /**
   * Print a row in the table
   *
   * @param mixed $numero
   * @param mixed $i
   * @return void
   */
  function rowPrint($numero, $i)
  {

    echo "
      <tr>
          <td>$numero x $i:</td>
          <td>".multiplyNumbers($numero, $i)."</td>
      </tr>
    ";

  }


  /**
   * Multiply two numbers
   *
   * @param mixed $a
   * @param mixed $b
   * @return int|float
   */
  function multiplyNumbers($a, $b)
  {
    return $a * $b;
  }


  /**
   * Get the factorial of a number
   *
   * @param mixed $numero
   * @return void
   */
  function getFactorial($numero)
  {

    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
      $factorial *= $f;
    }

    echo $factorial;

  }

?>

<table border="1">

    <?php
      for ($i = 0; $i <= 10; $i++) {
        rowPrint($numero, $i);
      }
    ?>

    <tr>
      <td><?php echo "$numero!"; ?></td>
      <td><?php getFactorial($numero); ?></td>
    </tr>

</table>

Soluci贸n al reto:

<?php
    $numero = $_POST['Numero'];

    function multiplicacion(int $multiplicando, int $multiplicador) : int {
        $resultado = $multiplicando * $multiplicador;
        return $resultado;
    }

    function factorial(int $numero) : int {
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
    ?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php echo multiplicacion($numero, $i); ?></td>
        </tr>
    <?php
        endfor;
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>

HTML


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="reto2.php" method="post">
            <input name="Numero"/>
            <input type="submit"/>
        </form>
    </body>
</html>

PHP

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php echo $numero * $i; ?></td>
        </tr>
    <?php endfor; ?>
    <?php
        $factorial = 1;
        
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Mi soluci贸n fue crear diferentes archivos. No creo que sea la mejor, pero puede servir:
Primer archivo - formulario.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="render-resultado.php" method="post">
        <input name="Numero"/>
        <input type="submit"/>
    </form>
</body>
</html>

Segundo archivo - render-resultado.php:

<?php
require_once('funciones-math.php');
$numero = $_POST['Numero'];

$trMultiplicar = renderTablaMultiplicar($numero);
$trFactorial = renderFactorial($numero);
$trTabla = $trMultiplicar.$trFactorial;

$tablaResultado = '<table border="1">';
$tablaResultado .= $trTabla;
$tablaResultado .= '</table>';
print($tablaResultado);
?>

Tercer archivo - funciones-math.php

<?php
function renderTablaMultiplicar($numero){
    $trTable = '';
    for ($i = 0; $i <= 10; $i++):
        $resultado = $numero * $i;
        $trTable .= '<tr>';
        $trTable .= "<td>$numero x $i:</td>";
        $trTable .= "<td>$resultado</td>";
        $trTable .= '</tr>';
    endfor;
    return $trTable;
}

function renderFactorial($numero){
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }

    $trTable = '<tr>';
    $trTable .= "<td>$numero!</td>";
    $trTable .= "<td>$factorial</td>";
    $trTable .= '</tr>';

    return $trTable;
}
?>
export default (state = INITIAL_STATE, action) => {
    switch(action.type){
        case 'traer_usuarios':
            return { ...state, usuarios: action.payload }
	default:    return state;    
    }
}

Un ejemplo pero con redux - javascript

RETO CUMPLIDO!!
AQUI EL HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="index.php" method="POST">
        <input name="Numero"/>
        <input type="submit"/>
    </form>
</body>
</html>

LUEGO EL PHP (ENTENDIBLE)

<?php
    $numero = $_POST['Numero'];

    function multiplacion ( int $multiplicador, int $multiplicando ){
        return $multiplicador*$multiplicando;
    }

    function factorial (int $numero){
        $factorial = 1;
        $temporal = $numero;
        for ( $temporal ; $temporal >= 1; $temporal--) {
            $factorial *= $temporal;
        }
        return $factorial;
    }
?>
<!-- MOSTRAR EN UNA TABLA -->
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
            ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo multiplacion($numero,$i); ?></td>
            </tr>
        <?php endfor; ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>

隆Hola a todos!

Les dejo mi propuesta para el reto 2:

reto2.php

<?php
    $numero = $_POST['Numero'];
?>

<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php echo $numero * $i; ?></td>
        </tr>
    <?php endfor; ?>
    <?php
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Mi c贸digo:

<?php
    $numero = $_POST['Numero'];
?>

<table border="1"> 
  
<?php for ($i = 0; $i <= 10; $i++): ?>
  <tr>
    <td><?php echo "$numero x $i:"; ?></td>
    <td><?php echo $numero * $i; ?></td>
  </tr>  
<?php endfor; ?>
  
<?php
  $factorial = 1;
    for ($f = $numero; $f >= 1; $f--)
    {
      $factorial *= $f;
    }
?>

<tr>
  <td><?php echo "$numero!"; ?></td>
  <td><?php echo $factorial; ?></td>
</tr>
  
</table>

Mi soluci贸n

<?php
    //imprime una fila con dos columnas (operaci贸n y resultado)
    function printRow($operation, $result) { 
        echo "<tr>";
        //columnn operacion
        echo "<td>";
        echo $operation;
        echo "</td>";
        //column result
        echo "<td>";
        echo $result;
        echo "</td>";

        echo "</tr>";
    }
    //funcion que calcula el factorial
    function factorial($number) {
        $factorial = 1;

        for ($i = $number; $i > 0; $i--) {
            $factorial *= $i;
        }

        return $factorial;
    }
    //imprime una tabla con la tabla de multiplicacion y el factorial
    function printMultiplicationAndFactorialTable($number) {
        echo "<table border=\"1\">";
            for ($i = 0; $i <= 10; $i++ ) {
                $operation = "$number x $i";
                $result = $number * $i;
                printRow($operation, $result);
            }
        //print factorial
        $operation = "$number!";
        $result = factorial($number);
        printRow($operation, $result);
        echo "</table>";
    }

    $numero = $_POST['Numero'];

    printMultiplicationAndFactorialTable($numero);
?>```

My solution:

<?php
    $numero = $_POST['Numero'];
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
?>

<table border="1">
    <?php for ($i = 0; $i <= 10; $i++):?>
        <tr>
            <td><?= "$numero x $i:" ?></td>
            <td><?= $numero * $i ?></td>
        </tr>
    <?php endfor; ?>

    <tr>
        <td><?="$numero!"?></td>
        <td><?=$factorial?></td>
    </tr>
</table>

My Solucion.
Clase FuntionsMath:

<?php
class FunctionsMath{
    
    /**
     * Mostrar la tabla de multiplicar.
     *
     * @param  integer  $numero, $indice
     * @return void
     */
    public function TablaDeMultiplicar($numero,$indice){
        echo "
            <td> $numero x $i: </td>
            <td> $numero * $i  </td>
        ";
    }

    /**
     * Mostrar el factorial de un n煤mero
     *
     * @param  integer  $numero
     * @return int
     */
    public function factorialDeEnterosPositivos($numero){
        if($numero == 0){
            return 1;   
        }else{
            return $n*factorialDeEnterosPositivos($n -1);
        }
    }

}

My aporte.

Codigo php

<?php
    $numero = $_POST['Numero'];

    function imprimirFactorial($numero){

        for ($i = 0; $i <= $numero-1; $i++){
            echo
            "<tr>".
                "<td> $numero x $i:</td>".
                "<td>". $numero * $i; "</td>".
            "</tr>";
        }    
    }

    function calcularFactorial($numero){
        $factorial = 1;

        for ($i = $numero; $i >= 1; $i--) {
            $factorial *= $i;
        }
        return $factorial;
    }
?>

<table>
    <?php
    imprimirFactorial($numero);
    $factorial = calcularFactorial($numero);
    ?>
    <tr>
        <td><?php echo "$numero!=>"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>```

Este es mi aporte:

<?php

/**
 * Clase que realiza algunas funciones matem谩ticas, dentro de ellas: factorial y tabla de multiplicaci贸n
 */
class CalculosMatematicos
{
    
    function __construct($numero)
    {
        $this->factorial = 1;
        $this->numero = $numero;
    }

    public function calcularFactorial() {
        for ($f = $this->numero; $f >= 1; $f--) {
            $this->factorial *= $f;
        }
        return $this->factorial;
    }

    public function calcularTabla() {

        for ($i = 0; $i <= 10; $i++):
            echo "
            <tr>
                <td> $numero x $i: </td>
                <td> " . $this->numero * $i . "</td>
            </tr>";
        endfor; 
    }

}

?>

Les dejo mi ejercicio, como bien dice mchojrin lo m谩s dif铆cil es nombrar las cosas.
Ac谩 el output: http://behar.io/platzi/good_practices/reto1.php

<style>
    td{
        border: 1px solid black;
        text-align: center;
    }
</style>
<table>
<?php
    $_BASE = 10;
    if (isset($_GET['numero'])) {
        $_BASE=$_GET['numero'];
    }
    $_ITERACIONES = 10;
    if (isset($_GET['iteraciones'])) {
        $_ITERACIONES=$_GET['iteraciones'];
    }    

    imprimirTabla($_BASE, $_ITERACIONES);
    imprimirNumero($_BASE."!",factorial($_BASE));

    function imprimirNumero($operacion,$resultado){
        echo "
         <tr>
             <td>$operacion</td>
             <td>$resultado</td>
         </tr>        
         ";

    }

    function imprimirTabla($base, $iteraciones){
        for ($factor=1; $factor <= $iteraciones; $factor++) { 
            imprimirNumero("$base x $factor:",$base*$factor);
        }      
    }

    function factorial($base){
        $factorial = 1;
        for ($i = $base; $i >= 1; $i--) {
            $factorial *= $i;
        }
        return $factorial;
    }     
?>

<table>

Les comparto el c贸digo de mi ejercicio;

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <tr>
        <td colspan="2">MULTIPLICACION</td>
    </tr>
    <?php tablaMultiplicar($numero); ?>
    <tr>
        <td colspan="2">FACTORIAL</td>
    </tr>
    <?php factorial($numero); ?>
</table>

<?php 
function tablaMultiplicar($numero){ 
    for ($i = 0; $i <= 10; $i++){
        $resultado=$numero * $i;
        imprimirMultiplicacion($numero,$i,$resultado);
    }
}
?>

<?php 
function factorial($numero){ 
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    imprimirFactorial($numero,$factorial);
}
?>

<?php function imprimirMultiplicacion($multiplicando,$multiplicador,$resultado){ ?>
    <tr>
        <td><?php echo "$multiplicando x $multiplicador:"; ?></td>
        <td><?php echo $resultado; ?></td>
    </tr>
<?php } ?>

<?php function imprimirFactorial($numero,$factorial){ ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
<?php } ?>
<?php
    $numero = $_POST['Numero'];
?>

<table border="1">
    <!-- TABLA DE MULTIPLICACIONES DEL NUMERO DADO -->
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td>
                <?php echo "$numero x $i:"; ?>
            </td>
            <td>
                <?php echo $numero * $i; ?>
            </td>
        </tr>
    <?php endfor; ?>

    <!-- FACTORIAL DEL NUMERO -->
    <tr>
        <td>
            <?php echo "$numero!"; ?>
        </td>
        <td>
            <?php echo factorialDe($numero); ?>
        </td>
    </tr>
</table>

<?php
    function factorialDe($numero){
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }
?>

Mi soluci贸n al reto!

<?php
    $numero = recibirPost($_POST['Numero']);

    $resultadoMultiplicar = calcularTablaMultiplicar($numero);

    $factorial = calcularFactorial($numero);

    echo "<table border='1'>";

    imprimirTablaMultiplicar($numero, $resultadoMultiplicar);

    imprimirFactorial($numero, $factorial);

    echo "</table>";

    function recibirPost () : int {
	if( isset($_POST) ) {
        	$numero = $_POST['Numero'];
	} else {
		$numero = 5;
	}
        return $numero;
    }

    function calcularTablaMultiplicar ( $numero ): array {

        for ($i = 0; $i <= 10; $i++) {
            $resultado[$i] = $numero * $i;
        }

        return $resultado;
    }

    function imprimirTablaMultiplicar ( $numero, $resultado ) {
        for ($i = 0; $i < count($resultado); $i++) {
            echo "<tr>";
                echo "<td>$numero x $i:</td>";
                echo "<td>".$resultado[$i]."</td>";
            echo "</tr>";
        }
    }

    function calcularFactorial ($numero) : int{
         $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }

    function imprimirFactorial( $numero, $factorial ) {
        echo "<tr>";
        echo "<td>$numero</td>";
        echo "<td>$factorial</td>";
        echo "</tr>";
    }
?>

import PT_MCF_MAIL:*;

Declare Function assign_auto_number PeopleCode FUNCLIB_AUTONUM.LAST_AUTO_NBR FieldFormula;
Declare Function obtenerCorreo PeopleCode CK_UTILIDAD_WRK.OPRID FieldFormula;
Declare Function generarConsecutivoSolPend PeopleCode CK_UTILIDAD_WRK.OPRID FieldFormula;

Function CreaSolicitudCredito(&Msg_Input As Message) Returns string

&solCredito = &Msg_Input.GetRowset().GetRow(1).GetRecord(Record.CK_SOLCRE_REQ);

&businessUnit = &solCredito.BUSINESS_UNIT.VALUE;
&custid = &solCredito.CUST_ID.VALUE;
&monto = &solCredito.CR_LIMIT.VALUE;
&solicitante = &solCredito.OPRID.VALUE;

/Se obtiene SETID/
&SETID = GetSetId(Field.BUSINESS_UNIT, &businessUnit, Record.CK_SETID_BU_VW, 鈥溾);

/Se obtiene consecutivo de temporal/
&solicitud = generarConsecutivoSolPend();

/Se inserta en la tabla temporal de solicitudes/
&REC1 = CreateRecord(Record.CK_SOLCRE_TMP);
&REC1.BUSINESS_UNIT.Value = &businessUnit;
&REC1.CK_NUM_SOLICITUD.Value = &solicitud;
&REC1.SETID.Value = &SETID;
&REC1.CUST_ID.Value = &custid;
&REC1.CR_LIMIT.Value = &monto;
&REC1.CK_ESTADO_SOLCRE.Value = 鈥淧鈥;
&REC1.DATE_ADDED.Value = %Date;
&REC1.OPRID.Value = &solicitante;
&REC1.DATETIME_CREATE.Value = %Datetime;
&REC1.OPRID_APPROVED_BY.Value = " ";
&REC1.Insert();

/Obtiene correo solicitante/
&correo = obtenerCorreo(&solicitante);

/Arma correo/
Local PT_MCF_MAIL:MCFOutboundEmail &email = create PT_MCF_MAIL:MCFOutboundEmail();

&email.From = "[email protected]";
&email.Recipients = &correo;
&email.Subject = 鈥淪olicitud de Credito temporal " | &solicitud | " para diligenciar鈥;
&tableBody = 鈥溾;

/Arma tabla que va dentro del correo/
&string = GetHTMLText(HTML.CK_HTML, &businessUnit, &custid, &monto);
&tableBody = &tableBody | Char(13) | &string;

/Crea y arma el record de busqueda del componente para crear la url/
&REC = CreateRecord(Record.CK_SOLCRE_TMP);
&REC.BUSINESS_UNIT.Value = &businessUnit;
&REC.CK_NUM_SOLICITUD.Value = &solicitud;

/Se arma URL/
&MyCompURL = GenerateComponentContentURL(鈥淓MPLOYEE鈥, 鈥淓RP鈥, MenuName.CK_SOLCRE_TMP, 鈥淕BL鈥, Component.CK_SOLCRE_TMP, Page.CK_SOLCRE_TMP, 鈥淯鈥, &REC);

/Se convierte url a string/
&var = String(&MyCompURL);
/Se sustituyen varios string porque al generarse desde fuera de peoplesoft quedan apuntando a direccion erronea
para produccion se debe probar para saber cuales toca cambiar
/
If %DbName = 鈥淐KPRE鈥 Then
&var = Substitute(&var, 鈥渕yserver鈥, 鈥10.181.0.123:8095鈥);
&var = Substitute(&var, 鈥/ps/鈥, 鈥/CKPRE_3/鈥);
Else
If %DbName = 鈥淐KPR鈥 Then
/falta parametrizar para producion/
&var = Substitute(&var, 鈥渕yserver鈥, 鈥https://wsrv.coldecom.com鈥);
&var = Substitute(&var, 鈥/ps/鈥, 鈥/PROD_2/鈥);
End-If;
End-If;

&table = GetHTMLText(HTML.CK_HTML2, &tableBody, &var);
&email.Text = &table;
&email.ContentType = 鈥渢ext/html鈥;

Local integer &res = &email.Send();
Local boolean &done;

Evaluate &resp
When %ObEmail_Delivered
/* every thing ok */
&done = True;
Break;

When %ObEmail_NotDelivered
/*-- Check &email.InvalidAddresses, &email.ValidSentAddresses
and &email.ValidUnsentAddresses */
&done = False;
Break;

When %ObEmail_PartiallyDelivered
/* Check &email.InvalidAddresses, &email.ValidSentAddresses
and &email.ValidUnsentAddresses; */
&done = True;
Break;

When %ObEmail_FailedBeforeSending
/* Get the Message Set Number, message number;
Or just get the formatted messages from &email.ErrorDescription,
&email.ErrorDetails;*/

  &done = False;
  Break;

End-Evaluate;
Return &solicitud;
End-Function;

Function CreaSolicitudCredito_2(&Msg_Input As Message) Returns string

&solCredito = &Msg_Input.GetRowset().GetRow(1).GetRecord(Record.CK_SOLCRE_REQ);

&businessUnit = &solCredito.BUSINESS_UNIT.VALUE;
&custid = &solCredito.CUST_ID.VALUE;
&monto = &solCredito.CR_LIMIT.VALUE;
&solicitante = &solCredito.OPRID.VALUE;

/Se obtiene SETID/
&SETID = GetSetId(Field.BUSINESS_UNIT, &businessUnit, Record.AUTO_NUM_TBL, 鈥溾);

/Se obtiene consecutivo/
assign_auto_number(&SETID, 鈥溾, 鈥淐K_SOLCRE_TBL鈥, 鈥淣EXT鈥, 鈥淐KSC鈥, 鈥淵鈥, &solicitud);

/*Se inserta en la tabla PS_CK_SOCRFILE_TBL */
&REC0 = CreateRecord(Record.CK_SOCRFILE_TBL);
&REC0.BUSINESS_UNIT.Value = &businessUnit;
&REC0.CK_NUM_SOLICITUD.Value = &solicitud;
&REC0.CK_IDDOC_FLD.Value = 1;
&REC0.Insert();

/Se inserta en la tabla/
&REC1 = CreateRecord(Record.CK_SOLCRE_TBL);
&REC1.BUSINESS_UNIT.Value = &businessUnit;
&REC1.CK_NUM_SOLICITUD.Value = &solicitud;
&REC1.SETID.Value = &SETID;
&REC1.CUST_ID.Value = &custid;
&REC1.CR_LIMIT.Value = &monto;
&REC1.CK_ESTADO_SOLCRE.Value = 鈥淧鈥;
&REC1.DATE_ADDED.Value = %Date;
&REC1.OPRID.Value = &solicitante;
&REC1.DATETIME_CREATE.Value = %Datetime;
&REC1.OPRID_APPROVED_BY.Value = " ";
&REC1.Insert();

/Obtiene correo solicitante/
&correo = obtenerCorreo(&solicitante);

/Arma correo/
Local PT_MCF_MAIL:MCFOutboundEmail &email = create PT_MCF_MAIL:MCFOutboundEmail();

&email.From = "[email protected]";
&email.Recipients = &correo;
&email.Subject = 鈥淪olicitud de Credito " | &solicitud | " para diligenciar鈥;
&tableBody = 鈥溾;

/Arma tabla que va dentro del correo/
&string = GetHTMLText(HTML.CK_HTML, &businessUnit, &custid, &monto, &solicitud);
&tableBody = &tableBody | Char(13) | &string;

/Crea y arma el record de busqueda del compoente para crear la url/
&REC = CreateRecord(Record.CK_SOLCREOPR_VW);
&REC.BUSINESS_UNIT.Value = &businessUnit;
&REC.CK_NUM_SOLICITUD.Value = &solicitud;

/Se arma URL/
&MyCompURL = GenerateComponentContentURL(鈥淓MPLOYEE鈥, 鈥淓RP鈥, MenuName.MAINTAIN_CUSTOMERS, 鈥淕BL鈥, Component.CK_SOLCUPCRE_GBL, Page.CK_SOLCRE_CUP, 鈥淯鈥, &REC);

/Se convierte url a string/
&var = String(&MyCompURL);
/Se sustituyen varios string porque al generarse desde fuera de peoplesoft quedan apuntando a direccion erronea
para produccion se debe probar para saber cuales toca cambiar
/
If %DbName = 鈥淐KPRE鈥 Then
&var = Substitute(&var, 鈥渕yserver鈥, 鈥10.181.0.123:8095鈥);
&var = Substitute(&var, 鈥/ps/鈥, 鈥/CKPRE_3/鈥);
Else
If %DbName = 鈥淐KPRE鈥 Then
/falta parametrizar para producion/
End-If;
End-If;

&table = GetHTMLText(HTML.CK_HTML2, &tableBody, &var);
&email.Text = &table;
&email.ContentType = 鈥渢ext/html鈥;

Local integer &res = &email.Send();
Local boolean &done;

Evaluate &resp
When %ObEmail_Delivered
/* every thing ok */
&done = True;
Break;

When %ObEmail_NotDelivered
/*-- Check &email.InvalidAddresses, &email.ValidSentAddresses
and &email.ValidUnsentAddresses */
&done = False;
Break;

When %ObEmail_PartiallyDelivered
/* Check &email.InvalidAddresses, &email.ValidSentAddresses
and &email.ValidUnsentAddresses; */
&done = True;
Break;

When %ObEmail_FailedBeforeSending
/* Get the Message Set Number, message number;
Or just get the formatted messages from &email.ErrorDescription,
&email.ErrorDetails;*/

  &done = False;
  Break;

End-Evaluate;

Return &solicitud;
End-Function;

El c贸digo:

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
<?php
for ($i = 0; $i <= 10; $i++):
?>
<tr>
    <td>
    <?php echo "$numero x $i:"; ?>
    </td>
    <td>
    <?php echo $numero * $i; ?>
    </td>
</tr>
<?php endfor; ?>
<tr>
    <td>
    <?php echo "$numero!"; ?>
    </td>
    <td>
    <?php echo FactorialDe($numero); ?>
    </td>
</tr>
</table>

<?php
function FactorialDe ($numero){
    
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;

}
?>```
<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
    ?>
    <tr>
        <td>
            <?php 
                echo "$numero x $i:"; 
            ?>
        </td>
        <td>
            <?php 
                echo $numero * $i; 
            ?>
        </td>
    </tr>
        <?php
            endfor; 
        ?>
    <?php
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td>
            <?php 
                echo "$numero!"; 
            ?>
        </td>
        <td>
            <?php 
                echo $factorial; 
            ?>
        </td>
    </tr>
</table>

clap!!!

<?php
    $numero = $_POST['Numero'];
    $iteraciones = 12;
?>
<table border="1">
    <?php
        for ($i = 0; $i <= $iteraciones; $i++) {
          imprimirMultiplicacion($numero, $i);
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>

<?php
  function imprimirMultiplicacion($num1, $num2) {
    $multiplicacion = $num1 * $num2;
    echo "
      <tr>
          <td>$num1 x $num2</td>
          <td>$multiplicacion</td>
      </tr>";
  }

  function factorial($numero) {
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
  }
?>