Download Formularios y PHP

Document related concepts

Analizador sintáctico de precedencia simple wikipedia , lookup

Ordenamiento de burbuja wikipedia , lookup

Transcript
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
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
<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)
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 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
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.
6.
7.
8.
9.
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>";
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 números números y mostrar el
mayor, el menor y su promedio. Sugerencia: usar un TEXTAREA para
adquirir los números.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$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.
1.
2.
3.
4.
5.
6.
7.
8.
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>";
9.
10.
}else
$i++;
11. }
12. echo
"</table>";
Problema 4. Obtener el factorial de un número n y mostrar el proceso de
obtención en una tabla.
1. echo "El número 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.
$prod*=$i;
echo "=$prod</b>";
echo "</td><tr>";
}
10. echo "</table>";
11. echo "<br><br>El factorial de $num es: $prod " ;
9.
Problema 5. Mostrar
la tabla de multiplicar de un
número en una tabla
1.
2.
3.
4.
5.
6.
7.
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>";
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 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).
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 números que me diste fueron $num1 y
$num2. <br> <br> Los números 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>";
11.
12.
}
13.
14.
15.
16.
}
}
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.
1.
2.
3.
4.
5.
6.
7.
8.
9.
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 "
10.
11.
}
</td><tr>";
1.
2.
3.
4.
if($num>=2)
{
echo "<tr><td><font color=black>f(1)</td>";
echo "
<td><font color=black>1";
echo "
5.
</td><tr>";
6.
}
7.
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);
8.
9.
10.
11.
12.
13.
14.
15.
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 obteniendo
Ejemplo: 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)
{
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 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+1
Mostrar el número 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 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;
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