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 170

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta 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.

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>

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

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>';
    }
?>

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

/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>```

Organizacion de codigo:

public/ reto2.html
src/reto2.php

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.

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; 
    }

}

?>

M铆 aporte 馃槑 :

<?php

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

<table border="1">

    <?php ImprimirLatablaDeMultiplicar($numero) ?>

    <?php ImprimirFactorial($numero) ?>

</table>

<?php

    function ImprimirLatablaDeMultiplicar($input) {

        for ($i = 0; $i <= 10; $i++){

            echo 
                "<tr>

                    <td>$input x $i:</td>

                    <td>$input * $i</td>

                </tr>";

        }

    }

    function ImprimirFactorial($input){

        $factorial = 1;

        for ($i = $input; $i >= 1; $i--) {

            $factorial *= $i;

        }
        
        echo 
            "<tr>

                <td>$input! :</td>
                <td>$factorial</td>

            </tr>";

    }

?>

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;
  }
?>
<?php
    $numero = $_POST['Numero'];

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

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

        return $factorial;
    }

    function generarfactores($numero){
        $resultado = array();
        for ($i = 0; $i <= 10; $i++) {
            $etiqueta = "{$numero} x {$i}";
            $resultado[$etiqueta] = $numero * $i;
        }
        return $resultado;
    }

    $factorial = calcularfactorial($numero);
    $factores = generarfactores($numero);
?>

<table border="1">
    <?php foreach ($factores as $etiqueta => $factor): ?>
        <tr>
            <td><?= $etiqueta ?></td>
            <td><?= $factor  ?></td>
        </tr>
    <?php endforeach;?>
    <tr>
        <td><?= "{$numero}!" ?></td>
        <td><?= $factorial ?></td>
    </tr>
</table>
<code>
<?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
        CalcularFactorial($numero);
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

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

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

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

Reto:

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

imprimirTablaMultiplicar($numero);
imprimirFactorial($numero);

function imprimirTablaMultiplicar(int $num): void {
    
    $tabla = "<table border='1'>";
    
    for ($i = 0; $i <= 10; $i++) {            
        $tabla .= "<tr>";
        $tabla .= "<td> {$num} x {$i}: </td>";    
        $tabla .=  "<td>" . $num * $i . "</td>";
        $tabla .= "</tr>";
    }

    $tabla .= "</table>";

    echo $tabla;
    
}

function imprimirFactorial(int $num): void {

    $factorial = 1;
    $tabla = "<table border='1'>";

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

    $tabla .= "<tr>";
    $tabla .= "<td>{$num}!</td>";
    $tabla .= "<td>{$factorial}</td>";
    $tabla .= "</tr>";
    $tabla .= "</table>";

    echo $tabla;

}
<?php
    $numero = $_POST['Numero'];
    $multiplos=array();
    $factoriales=array();

    function obtenerMultiplos( $numero, $limite ) : array
    {
        $valores=array();
        for ($i=0; $i < $limite; $i++) { 
         $arreglo=array();
         $arreglo['texto'] = "$numero x $i:";   
         $arreglo['valor'] = $numero * $i;   
         $valores[]=$arreglo;
        }
        return $valores;
    }

    function obtenerFactorial( $numero ) : float
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php
        $multiplos = obtenerMultiplos( $numero , 10 );
        foreach ($multiplos as $key => $item) {
            ?>
    <tr>
        <td><?php echo $item['texto']; ?></td>
        <td><?php echo $item['valor']; ?></td>
    </tr>
    <?php } ?>
    <tr>
        <?php $factorial = obtenerFactorial( $numero ); ?>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Title.html:

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

reto.php

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

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

reto2.php:

<?php

  // Requirements
  require('tables.php');

  $number = $_POST['Number'];

  printTableMultiply($number);
  printTableFactorial($number);

?>


tables.php:

<?php

// Requirements
  require('operations.php');

  function printTableMultiply($num) {
    $table = '<table border="1">';

    for($i = 0; $i <= 10; $i++) {
      $table .= '<tr>';
      $table .= "<td> {$num} * {$i}: </td>";
      $table .= '<td> '.mutiply($num, $i).' </td>';
      $table .= '</tr>';
    };

    $table .= '</table>';

    echo $table;

  };


  function printTableFactorial($num) {

    $factorial_result = factorial($num);

    $table = '<table border="1">';
    $table .= '<tr>';
    $table .= "<td> {$num}! </td>";
    $table .= '<td>'.$factorial_result.'</td>';
    $table .= '</tr>';
    $table .= '</table>';

    echo $table;

  };

?>


operations.php:

<?php

  function mutiply( int $num1, int $num2 ) {
    return $num1 * $num2;
  };


  function factorial(int $num) {
    $factorial = 1;

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

    return $factorial;

  };

?>

As铆 es como aplicar铆a las buenas practicas.

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

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

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

Title.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>
  </head>
  <body>
    <form action="https://static.platzi.com/media/public/uploads/reto2.php" method="post">
      <input name="Numero">
      <input type="submit">
    </form>
  </body>
</html>

Como las carpetas css,jss,assets

Reto1
Trate de que el codigo este mejor identado, creo que asi se entiende mejor

<!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>```

Por ac谩 dejo mi manera de realizar el reto

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


<?php
    function MultiplicaNumero($numero, $i) {
        return $numero * $i; 
    }
?>

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

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

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

<?php
    function ImprimeFactorial($numero) {?>
        <tr>
            <td><?php echo "$numero!"; ?></td>
            <td><?php echo CalculaFactorial($numero); ?></td>
        </tr>
<?php 
    }
?>


No trabajo en PHP pero siguiendo gu铆as y ejemplos en los comentarios pude hacer lo siguiente:

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

    function multiplicarFilas($numero, $n) {
        $filas = '';
        for ($i = 0; $i <= $n; $i++) {
            $filas .= "<tr><td>" . $numero . " x " . $i . "</td>";
            $filas .= "<td>" . ($numero * $i) . "</td></tr>";
        }
        return $filas;
    }

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

    $tabla = '<table border="1">';
    $tabla .= multiplicarFilas($numero, $num_maximo);
    $factorial = calcularFactorial($numero);
    $tabla .= "<tr><td>" . $numero . "!</td>";
    $tabla .= "<td>" . $factorial . "</td></tr>";
    $tabla .= "</table>";

    echo $tabla;
?>

A continuaci贸n muestro como organizar铆a los archivos y ajustar铆a el c贸digo.

Organizaci贸n:
public/reto2.html
src/reto2.php

reto2.php

<code>
<?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 calcular_multiplo($numero , $i); ?></td>
        </tr>
    <?php 
		endfor; 
	?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo calcular_factorial($numero); ?></td>
    </tr>
</table>
<?php
	function calcular_multiplo($numero, $factor){
		return $numero*$factor;
	}	
	
	function calcular_factorial($numero){
		$factorial = 1;

        for ($factor = $numero; $factor >= 1; $factor--){
            $factorial *= $factor;
        }
		return $factorial;
	}
?>
</code>