Anda di halaman 1dari 25

Formularios y PHP

Introduccin a la ingeniera en computacin Moiss E. Ramrez G.

Pginas con informacin: http://www.webestilo.com/php - Tutorial basico http://www.php.net/manual/es - Manual en espaol (Checar la seccin II)

Formularios

Sirven para enviar informacin de una pgina 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 nmero mximo de carcteres a introducir en ese campo. size="" Seguido de un valor que limitar el numero de carcteres 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 sern 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 acompaan 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
1)

<html>

2) 3) 4) 5) 6) 7) 8) 9) 10)

11)
12) 13)

<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)


1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

<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 nmeros fraccionarios (numerador y denominador) y mostrar (usando tablas) su suma, resta, divisin y multiplicacin. No mostrar los resultados en decimales. Tambin debern reducir la fraccin a su mnima expresin, por ejemplo 100/50 se puede reducir a 2 2/1 1. function reduce_fraccion($num,$den) 2. { $num=(int)$num; 3. $den=(int)$den;
4. 5. 6.

7.
8. 9. 10. 11. 12. 13. 14. 15. 16. }

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;

1. 2. 3. 4. 5.

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 divisin 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>";

6. 7. 8.

9.

10. $sn=$d2*$n1-$d1*$n2; 11. $sd=$d1*$d2; 12. $arreglo=reduce_fraccion($sn,$sd); 13. echo

"La resta es: $sn / $sd = $arreglo[0]/$arreglo[1]<br><br>"; 14. . . .

Problema 2. Tomar cualquier cantidad de nmeros nmeros y mostrar el mayor, el menor y su promedio. Sugerencia: usar un TEXTAREA para adquirir los nmeros.
1.
2. 3. 4. 5. 6.

$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);

7. 8. 9. 10. 11. 12. 13. 14. 15.

16.
17. 18.

echo "<br>El mximo es $max <br><br>"; echo "El minimo es $min <br><br>"; echo "El promedio es $suma <br><br>";

Problema 3. Tomar un nmero 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.
1. 2. 3.

echo "El nmero 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> Nmero </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++;

4. 5. 6. 7. 8. 9. 10.

11. } 12. echo

"</table>";

Problema 4. Obtener el factorial de un nmero n y mostrar el proceso de obtencin en una tabla. 1. echo "El nmero que me diste fue $num. <br> <br> El factorial es<br><br>"; 2. echo "<table bgcolor=dddddd align=center>"; 3. echo "<tr><td><font color=black> Fact(x)</td><td><font color=black>Valor</td><tr>"; 4. for($i=1,$prod=1; $i<=$num;$i++) 5. { echo "<tr><td><font color=black>f($i)</td><td><font color=black><b>f(".($i-1).") * $i";
6. 7. 8. 9.

$prod*=$i; echo "=$prod</b>"; echo "</td><tr>";

} 10. echo "</table>"; 11. echo "<br><br>El factorial de $num es: $prod " ;

Problema 5. Mostrar

la tabla de multiplicar de un nmero en una tabla


1.

2.

echo "El nmero 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>";

3. 4. 5. 6. 7.

Problema 6. Mostrar n y el resultado de la siguiente suma: 1+2+3+...+n usando ciclos. As como su proceso de obtencin en una tabla (anlogo al problema 4). Mostrar el resultado usando tambin la formula de Gauss.
echo "El nmero que me diste fue $num. <br> <br> La sumatoria es<br><br>"; 2. echo "<table bgcolor=dddddd align=center>"; 3. echo "<tr><td><font color=black> Suma(x)</td><td><font color=black>Valor</td><tr>"; 4. echo "S(0)=0<br>"; 5. for($i=1,$prod=0; $i<=$num;$i++) 6. { echo "<tr><td><font color=black>S($i)</td><td><font color=black><b>S(".($i1).") + $i"; 7. $prod+=$i; 8. echo "=$prod</b>"; 9. echo "</td><tr>"; 10. } 11. echo "</table>"; 12. echo "<br><br>La sumatoria de 1 + 2 + ... + $num = $prod " ; 13. echo "<br><br>Usando la formula de Gauss: ($num)*($num+1)/2=($num*".($num+1).")/2=".($num*($num+1)/2) ;
1.

Problema 7. Hacer una funcin que sirva para determinar si un nmero es o


no primo y usarla en el siguiente problema: Pedir dos nmeros m y n y mostrar los nmeros que estn entre dichos valores diciendo si el nmero es o no primo (mostrar la informacin en una tabla). 1. function primo($num) 2. { for($i=2, $es=1; $i<=$num/2; $i++) 3. { if($num%$i==0) 4. $es=0; 5. } 6. return $es; 7. } 8. $num=(int)$num; 9. echo "Los nmeros que me diste fueron $num1 y $num2. <br> <br> Los nmeros primos son:<br><br>"; 10. echo "<table bgcolor=dddddd align=center>"; 11. echo "<tr><td><font color=black> Valor</td><td><font color=black>Tipo</td><tr>";

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

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

11. 12. 13. 14. 15. 16.

Problema 8. Hacer una funcin para obtener los primeros n

elementos de la serie de fibonacci, donde n es adquirido desde un formulario.


1. 2. 3.

echo "El nmero 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>";

4. 5. 6. 7. 8. 9. 10. 11.

1. 2. 3. 4.

if($num>=2) { echo "<tr><td><font color=black>f(1)</td>"; echo " <td><font color=black>1"; echo " } 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>"; </td><tr>";

5. 6.

7. 8. 9.

10. 11. 12. 13. 14. 15.

Problema 9. Tomar un nmero en base 10 y convertirlo a base b


(considerar siempre 1<b<16). Mostrar el nmero y los residuos obtenidos, es decir el nmero en la nueva base (hay que tomar en cuenta que dichos residuos son obtenidos al reves en el proceso, debern mostrar el resultado en el orden correcto). Mostrar tambin los residuos que se van obteniendo Ejemplo: 1510 = 11112

$tnum=$num=(int)$num; $base=(int)$base;

echo "El nmero 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> Nmero </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) { case 10: $residuo="A"; break; case 11: $residuo="B"; break; case 12: $residuo="C"; break;

case 13: $residuo="D"; break;


case 14: $residuo="E"; break; case 15: $residuo="F"; break; } $resultado=$residuo.$resultado; } echo "</table>"; echo "<br><br> $tnum<sub>10</sub> = $resultado" ;

Problema 10. Tomar un nmero cualquiera (de preferencia pequeo para que
converga ms rpido) la siguiente serie converge a uno siempre (criterio de paro) si se siguen las siguientes reglas: - Si el nmero n es par, reemplazarlo por n/2 (es decir hacer n=n/2) - Si el nmero es impar, reemplazarlo por 3*n+1 Mostrar el nmero inicial y todos los que le siguen hasta que la serie converja a 1.
1. 2. 3.

4. 5.

6. 7. 8.

$num=(int)$num; $lim=280; echo "El nmero que me diste fue $num. <br> <br> La serie es <br>(configurada a un mximo 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;

1. 2. 3. 4. 5. 6.

7.
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.

23.
24.

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
1. 2. 3. 4. 5. 6.

7. 8.

9. 10.

$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) 2. {if($num>1) 3. return $num*fact($num-1); 4. else 5. return 1; 6. } 7. function expo($num, $nter) 8. { if($nter>1) 9. return potencia($num,$nter-1)/fact($nter1)+expo($num,$nter-1); 10. else 11. return 1; 12. } 13. $n=10; 14. echo fact($n)."<br>"; 15. for($i=1; $i<=$n; $i++) 16. echo "<b>".expo(1,$i)." - $i</b> <br>";
1.

Corrida del programa serie

1-1 2-2 2.5 - 3 2.6666666666667 - 4 2.7083333333333 - 5 2.7166666666667 - 6 2.7180555555556 - 7 2.718253968254 - 8 2.7182787698413 - 9 2.7182815255732 - 10

Anda mungkin juga menyukai