250 likes | 385 Views
Formularios y PHP. Introducción a la ingeniería en computación Moisés E. Ramírez G. Páginas con información: http://www.webestilo.com/php - Tutorial basico http://www.php.net/manual/es - Manual en español (Checar la sección II). Formularios.
E N D
Formularios y PHP Introducción a la ingeniería en computación Moisés E. Ramírez G. Páginas con información: http://www.webestilo.com/php - Tutorial basico http://www.php.net/manual/es - Manual en español (Checar la sección II)
Formularios • Sirven para enviar información de una página a otra. <HTML> <HEAD> <TITLE>Ejemplo 14</TITLE> </HEAD> <BODY> <H1>Formularios</H1> <FORM ACTION=“pagina.php" METHOD="POST"> <INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit"><INPUT TYPE="Reset"> </FORM> </BODY> </HTML>
Campos de entrada • type="" Indicará el tipo de variable a introducir. • text Indica que el campo a introducir será un texto. Sus atributos: • maxlenght="" Seguido de un valor que limitará el número máximo de carácteres a introducir en ese campo. • size="" Seguido de un valor que limitará el numero de carácteres a mostrar en pantalla. • value="" Indica que no hay valor inicial del campo. • Password Indica que el campo a introducir será una palabra de paso. Mostrará asteriscos en lugar de letras escritas. Sus atributos serán los mismos que para text. • Checkbox El campo se elegirá marcando de entre varias opciones una casilla cuadrada. • value="" Entre comillas se indicará el valor de la casilla. • checked La casilla aparecerá marcada por defecto.
Radio El campo se elegirá marcando de entre varias opciones una casilla circular. • value="" Entre comillas se indicará el valor de la casilla. • Image El campo contendrá el valor en coordenadas del punto de la imagen que haya pinchado. Atributo obligatorio: • src="" Entre comillas escribiremos el nombre del archivo de imagen. • hidden El visitante no puede modificar su valor ya que no está visible. Se manda siempre junto al atributo value= seguido de su valor entre comillas. • Name="" Indicará el nombre que se asigna a un determinado campo.
Botones • Se definen mediante la etiqueta <input> a la que le acompañan los atributos: • type="" Seguido de submit para enviar los datos del formulario y seguido de reset para borrar los datos que se han introducido. • Value="" Indica el texto que incorporaran los botones. Normalmente, enviar y borrar <FORM ACTION=“pagina.php" METHOD="POST"> <TEXTAREA COLS=20 ROWS=10 NAME="Texto"> </TEXTAREA> <BR><BR> <INPUT TYPE="submit"><INPUT TYPE="Reset"> </FORM>
Un formulario • <html> • <head> • <title>Ejemplo1 de PHP</title> • </head> • <body> • <H1>Ejemplo de procesado de formularios</H1> • <FORM ACTION="ejemplo1.php" METHOD="GET"> • Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> • Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> • <INPUT TYPE="submit" VALUE="Enviar"> • </FORM> • </body> • </html>
Algo de PHP (ejemplo1.php) • <html> • <head> • <title>Ejemplo1 de PHP</title> • </head> • <body> • <?php • if(strlen( $nombre)==0) • { $nombre=$_GET['nombre']; • $apellidos=$_GET['apellidos']; • } • echo " Nombre: $nombre <br>" ; • echo " Apellidos: $apellidos <br>" ; • ?> • </body> • </html>
Problema 1. Tomar 2 números fraccionarios (numerador y denominador) y mostrar (usando tablas) su suma, resta, división y multiplicación. No mostrar los resultados en decimales. También deberán reducir la fracción a su mínima expresión, por ejemplo 100/50 se puede reducir a 2 ó 2/1 • function reduce_fraccion($num,$den) • { $num=(int)$num; • $den=(int)$den; • for($i=2; $i<=$num && $i<=$den;) • { if($num %$i==0 && $den %$i==0 ) • { $num=$num/$i; • $den=$den/$i; • } • else • $i++; • } • $arreglo[0]=$num; • $arreglo[1]=$den; • return$arreglo; • }
echo "Los datos originales son: $n1/$d1 y $n2 / $d2 <br><br>"; • if($d1==0 || $d2==0 || $n2==0) • { echo "Se está tratando de hacer una división por cero<br><br>"; • die("<a href=\"prob1.html\">Introducir datos otra vez</a>" ); • } • $sn=$d2*$n1+$d1*$n2; • $sd=$d1*$d2; • $arreglo=reduce_fraccion($sn,$sd); • echo "La suma es: $sn / $sd = $arreglo[0]/$arreglo[1]<br><br>"; • $sn=$d2*$n1-$d1*$n2; • $sd=$d1*$d2; • $arreglo=reduce_fraccion($sn,$sd); • echo "La resta es: $sn / $sd = $arreglo[0]/$arreglo[1]<br><br>"; • . . .
Problema 2. Tomar cualquier cantidad de números números y mostrar el mayor, el menor y su promedio. Sugerencia: usar un TEXTAREA para adquirir los números. • $nums=split("\n",$numeros); • for($i=0; $i<count($nums); $i++) • { $nums[$i]=chop($nums[$i]); • } • $numeros=join(",",$nums); • echo "Datos originales: ".$numeros."<br>"; • $suma=$min=$max=$nums[0]; • for($i=1;$i<count($nums); $i++) • { if($nums[$i]>$max) • $max=$nums[$i]; • if($nums[$i]<$min) • $min=$nums[$i]; • $suma+=$nums[$i]; • } • $suma=$suma/count($nums); • echo "<br>El máximo es $max <br><br>"; • echo "El minimo es $min <br><br>"; • echo "El promedio es $suma <br><br>";
Problema 3. Tomar un número y mostrarlo y junto con sus factores primos en una tabla. Por ejemplo: de 15, sus factores primos son: 3 y 5. De 12 son 2, 2 y 3. • echo "El número que me diste fue $num. <br> <br> Sus factores primos son:<br><br>"; • echo "<table bgcolor=dddddd align=center>"; • echo "<tr><td><font color=black> Número </td><td><font color=black>Factor</td><tr>"; • for($i=2; $i<=$num;) • { if($num%$i==0) • { echo "<tr><td><font color=black> $num </td><td><font color=black><b>$i</b>"; • $num=$num/$i; • echo "</td><tr>"; • }else • $i++; • } • echo "</table>";
Problema 4. Obtener el factorial de un número n y mostrar el proceso de obtención en una tabla. • echo "El número que me diste fue $num. <br> <br> El factorial es<br><br>"; • echo "<table bgcolor=dddddd align=center>"; • echo "<tr><td><font color=black> Fact(x)</td><td><font color=black>Valor</td><tr>"; • for($i=1,$prod=1; $i<=$num;$i++) • { echo "<tr><td><font color=black>f($i)</td><td><font color=black><b>f(".($i-1).") * $i"; • $prod*=$i; • echo "=$prod</b>"; • echo "</td><tr>"; • } • echo "</table>"; • echo "<br><br>El factorial de $num es: $prod " ;
Problema 5. Mostrar la tabla de multiplicar de un número en una tabla • echo "El número que me diste fue $num. <br> <br> Su tabla de multiplicar es<br><br>"; • echo "<table bgcolor=dddddd align=center>"; • for($i=1,$prod=$num; $i<=10;$i++, $prod+=$num) • { echo "<tr><td align=right><font color=black>$i x </td>"; • echo " <td align=center><font color=black>$num = </td>"; • echo " <td align=center><font color=black>$prod </td>";} • echo "</table>";
Problema 6. Mostrar n y el resultado de la siguiente suma: 1+2+3+...+n usando ciclos. Así como su proceso de obtención en una tabla (análogo al problema 4). Mostrar el resultado usando también la formula de Gauss. • echo "El número que me diste fue $num. <br> <br> La sumatoria es<br><br>"; • echo "<table bgcolor=dddddd align=center>"; • echo "<tr><td><font color=black> Suma(x)</td><td><font color=black>Valor</td><tr>"; • echo "S(0)=0<br>"; • for($i=1,$prod=0; $i<=$num;$i++) • { echo "<tr><td><font color=black>S($i)</td><td><font color=black><b>S(".($i-1).") + $i"; • $prod+=$i; • echo "=$prod</b>"; • echo "</td><tr>"; • } • echo "</table>"; • echo "<br><br>La sumatoria de 1 + 2 + ... + $num = $prod " ; • echo "<br><br>Usando la formula de Gauss: ($num)*($num+1)/2=($num*".($num+1).")/2=".($num*($num+1)/2);
Problema 7.Hacer una función que sirva para determinar si un número es o no primo y usarla en el siguiente problema: Pedir dos números m y n y mostrar los números que están entre dichos valores diciendo si el número es o no primo (mostrar la información en una tabla). • function primo($num) • { for($i=2, $es=1; $i<=$num/2; $i++) • { if($num%$i==0) • $es=0; • } • return$es; • } • $num=(int)$num; • echo "Los números que me diste fueron $num1 y $num2. <br> <br> Los números primos son:<br><br>"; • echo "<table bgcolor=dddddd align=center>"; • echo "<tr><td><font color=black> Valor</td><td><font color=black>Tipo</td><tr>";
for($i=$num1; $i<=$num2;$i++) • { • if(primo($i)==1) • { echo "<tr><td><font color=black>$i</td><td><font color=black><b>"; • echo "primo</b>"; • echo "</td><tr>"; • } • else • { if(strcmp($soloPrimos,"on")!=0) • { echo "<tr><td><font color=black>$i</td><td><font color=black><b>"; • echo "compuesto</b>"; • echo "</td><tr>"; • } • } • } • echo "</table>";
Problema 8.Hacer una función para obtener los primeros n elementos de la serie de fibonacci, donde n es adquirido desde un formulario. • echo "El número que me diste fue $num. <br> <br> Su serie de Fibonacci es<br><br>"; • echo "<table bgcolor=dddddd align=center>"; • echo "<tr><td><font color=black> Fib (x)</td><td><font color=black>Valor</td><tr>"; • $val1=0; • $val2=1; • if($num>=1) • { • echo "<tr><td><font color=black>f(0)</td>"; • echo " <td><font color=black>0"; • echo " </td><tr>"; • }
if($num>=2) • { • echo "<tr><td><font color=black>f(1)</td>"; • echo " <td><font color=black>1"; • echo " </td><tr>"; • } • for($i=2; $i<$num;$i++) • { echo "<tr><td><font color=black>f($i)</td>"; • echo " <td><font color=black>f(".($i-1).") + f(".($i-2).")=".($val1+$val2); • echo " </td><tr>"; • $temp=$val1+$val2; • $val1=$val2; • $val2=$temp; • } • echo "</table>";
Problema 9.Tomar un número en base 10 y convertirlo a base b (considerar siempre 1<b<16). Mostrar el número y los residuos obtenidos, es decir el número en la nueva base (hay que tomar en cuenta que dichos residuos son obtenidos al reves en el proceso, deberán mostrar el resultado en el orden correcto). Mostrar también los residuos que se van obteniendoEjemplo: 1510 = 11112 • $tnum=$num=(int)$num; • $base=(int)$base; • echo "El número que me diste fue $num. <br> <br> Su equivalente en base $base es: <br><br>"; • echo "<table bgcolor=dddddd align=center>"; • echo "<tr><td><font color=black> Número </td><td><font color=black>Residuo <br>entre $base</td><tr>"; • $resultado="<sub>$base</sub>"; • for( ;$num>0;) • { $residuo=$num%$base; • echo "<tr><td><font color=black>$num</td><td><font color=black><b>".($residuo);
echo " </b>"; • echo "</td><tr>"; • $num=(int)(floor($num/$base)); • if($residuo>9) • switch($residuo) • { case10: $residuo="A"; • break; • case11: $residuo="B"; • break; • case12: $residuo="C"; • break; • case13: $residuo="D"; • break; • case14: $residuo="E"; • break; • case15: $residuo="F"; • break; • } • $resultado=$residuo.$resultado; • } • echo "</table>"; • echo "<br><br> $tnum<sub>10</sub> = $resultado" ;
Problema 10.Tomar un número cualquiera (de preferencia pequeño para que converga más rápido) la siguiente serie converge a uno siempre (criterio de paro) si se siguen las siguientes reglas: - Si el número n es par, reemplazarlo por n/2 (es decir hacer n=n/2)- Si el número es impar, reemplazarlo por 3*n+1Mostrar el número inicial y todos los que le siguen hasta que la serie converja a 1. • $num=(int)$num; • $lim=280; • echo "El número que me diste fue $num. <br> <br> La serie es <br>(configurada a un máximo de $lim elementos)<br><br>"; • echo "<table bgcolor=dddddd align=center>"; • echo "<tr><td><font color=black> Valor </td><td><font color=black> Siguiente <br>Valor</td><td><font color=black> Barra</td><tr>"; • $i=0; • $temp=$num; • $max=$num;
while($num!=1 && $i<$lim) • { if($num%2==0) • $num=$num/2; • else • $num=$num*3+1; • $i++; • if($num>$max) • $max=$num; • } • $num=$temp; • $i=0; • while($num!=1 && $i<$lim) • { echo "<tr><td><font color=black>$num</td>"; • if($num%2==0) • $num=$num/2; • else • $num=$num*3+1; • echo "<td><font color=black> $num"; • echo "</td>"; • echo "<td><img src=\"./img/barra.jpg\" height=10 width=".((int)($num*400/$max)).">"; • echo "</td><tr>"; • $i++; • } • echo "</table>";
Tablero ajedrez • $n=5; • for($i=1; $i<=$n; $i++) • { echo "\n <tr>"; • for($j=1; $j<=$n; $j++) • { if(($i+$j)%2==0 && $i>=$j) • echo "\n <td bgcolor=white align=center><font color=black>$i+$j=".($j+$i)."</td>"; • else • echo "\n <td bgcolor=black align=center><font color=white>$i+$j=".($j+$i)."</td>"; • } • }
serie • function fact($num) • {if($num>1) • return$num*fact($num-1); • else • return1; • } • function expo($num, $nter) • { if($nter>1) • return potencia($num,$nter-1)/fact($nter-1)+expo($num,$nter-1); • else • return1; • } • $n=10; • echo fact($n)."<br>"; • for($i=1; $i<=$n; $i++) • echo "<b>".expo(1,$i)." - $i</b> <br>";
Corrida del programa serie • 1 - 1 2 - 22.5 - 32.6666666666667 - 42.7083333333333 - 52.7166666666667 - 62.7180555555556 - 72.718253968254 - 82.7182787698413 - 92.7182815255732 - 10