El lenguaje PHP es un lenguaje de programación de estilo clásico (con variables, sentencias condicionales, bucles, funciones....). No es un lenguaje de marcas como podría ser HTML, XML o WML. Está mas cercano a JavaScript o a C.
Pero a diferencia de Java o JavaScript que se ejecutan en el navegador, PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga el servidor como por ejemplo podría ser una base de datos. El programa PHP es ejecutado en el servidor y el resultado enviado al navegador. El resultado es normalmente una página HTML pero igualmente podría ser una pagina WML.
La ventaja que tiene PHP sobre otros lenguajes de programación que se ejecutan en el servidor (como podrían ser los script CGI Perl), es que nos permite intercalar las sentencias PHP en las paginas HTML, es un concepto algo complicado de entender si no se ha visto nunca como funciona unas paginas PHP o ASP. |
Ejemplo |
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Parte de HTML normal.
<BR><BR>
<?php
echo "Parte de PHP<br>";
for($i=0;$i<10;$i++)
{
echo "Linea ".$i."<br>";
}
?>
</body>
</html> |
Resultado de ejecución |
Parte de HTML normal.
Parte de PHP
Linea 0
Linea 1
Linea 2
Linea 3
Linea 4
Linea 5
Linea 6
Linea 7
Linea 8
Linea 9 |
|
|
Variables
Una variable es un contenedor de información, en el que podemos meter números enteros, números decimales, carácteres... el contenido de las variables se puede leer y se puede cambiar durante la ejecución de una página PHP.
En PHP todas las variables comienzan con el símbolo del dólar $ y no es necesario definir una variable antes de usarla. Tampoco tienen tipos, es decir que una misma variable puede contener un número y luego puede contener carácteres. |
Ejemplo: |
<!-- Manual de PHP-->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 1;
$b = 3.34;
$c = "Hola Mundo";
echo $a,"<br>",$b,"<br>",$c;
?>
</body>
</html>
Salida |
1
3.34
Hola Mundo |
|
|
Operadores aritméticos, lógicos, y de comparación |
Estos son los operadores que se pueden aplicar a las variables y constantes numéricas
|
|
Aritméticos |
Operador |
Nombre |
Ejemplo |
Descripción |
+ |
Suma |
5 + 6 |
Suma dos números |
- |
Resta |
7 - 9 |
Resta dos números |
* |
Multiplicación |
6 * 3 |
Multiplica dos números |
/ |
División |
4 / 8 |
Divide dos números |
% |
Módulo |
7 % 2 |
Devuelve el resto de dividir ambos números, en este ejemplo el resultado es 1 |
++ |
Suma 1 |
$a++ |
Suma 1 al contenido de una variable. |
-- |
Resta 1 |
$a-- |
Resta 1 al contenido de una variable. |
|
Comparación |
Operador |
Nombre |
Ejemplo |
Devuelve cierto cuando: |
== |
Igual |
$a == $b |
$a es igual $b |
!= |
Distinto |
$a != $b |
$a es distinto $b |
< |
Menor que |
$a < $b |
$a es menor que $b |
> |
Mayor que |
$a > $b |
$a es mayor que $b |
<= |
Menor o igual |
$a <= $b |
$a es menor o igual que $b |
>= |
Mayor o igual |
$a >= $b |
$a es mayor o igual que $b |
|
Lógicos |
Operador |
Nombre |
Ejemplo |
Devuelve cierto cuando: |
&& |
Y |
(7>2) && (2<4) |
Devuelve verdadero cuando ambas condiciones son verdaderas. |
and |
Y |
(7>2) and (2<4) |
Devuelve verdadero cuando ambas condiciones son verdaderas. |
|| |
O |
(7>2) || (2<4) |
Devuelve verdadero cuando al menos una de las dos es verdadera. |
or |
O |
(7>2) or (2<4) |
Devuelve verdadero cuando al menos una de las dos es verdadera. |
! |
No |
! (7>2) |
Niega el valor de la expresión. |
|
|
Ejemplo con operadores aritméticos: |
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 8;
$b = 3;
echo $a + $b,"<br>";
echo $a - $b,"<br>";
echo $a * $b,"<br>";
echo $a / $b,"<br>";
$a++;
echo $a,"<br>";
$b--;
echo $b,"<br>";
?>
</body>
</html> |
Salida: |
11
5
24
2.66666666667
9
2 |
|
Ejemplo con operadores de comparación: |
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 8;
$b = 3;
$c = 3;
echo ($a == $b) && ($c > $b),"<br>";
echo ($a == $b) || ($b == $c),"<br>";
echo !($b <= $c),"<br>";
?>
</body>
</html> |
Salida: |
1
|
|
Problemas de ejemplo: |
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 Ejecutarlo |
|
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>"; |
|
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. Ejecutarlo |
|
$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. Ejecutarlo |
|
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 Ejecutarlo |
|
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 Ejecutarlo |
|
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 Ejecutarlo |
|
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). Ejecutarlo |
|
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. Ejecutarlo |
|
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 obteniendo
Ejemplo: 1510 = 11112 Ejecutarlo |
|
$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. Ejecutarlo |
|
<?php
$num = $_POST['numero'];
echo "numero que me diste es $num <br>";
$num=(int)$num;
$lim=400;
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.PNG\" height=10 width=".((int)($num*400/$max)).">";
echo "</td><tr>";
$i++;
}
echo "</table>";
?> |
|
Problema 11. Dibujar un tablero de ajedrez de N x N Ejecutarlo |
|
$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>";
}
} |
|
Problema 12. Calcular la serie de ex Ejecutarlo |
|
function fact($num)
{if($num>1)
return $num*fact($num-1);
else
return 1;
}
function expo($num, $nter)
{ if($nter>1)
return potencia($num,$nter-1)/fact($nter-1)+expo($num,$nter-1);
else
return 1;
}
$n=10;
echo fact($n)."<br>";
for($i=1; $i<=$n; $i++)
echo "<b>".expo(1,$i)." - $i</b> <br>"; |
|
Ejemplos muy básicos
En este ejemplo se capturan 3 números y se usan para mostrar una tabla que contiene los 3 valores con el color de fondo a partir de los 3 valores.
Archivo: ejemplo1.php |
<html>
<body>
<form action="ejemplo1.php" method ="post">
<input type="text" name ="num">: <input type="text" name ="num2">: <input type="text" name ="num3">
<input type="submit">
</form>
<?php
$v1=$_POST['num'];
$v2=$_POST['num2'];
$v3=$_POST['num3'];
echo "<table bgcolor=\"#$v1$v2$v3\">";
echo "<tr><td>$v1 </td>";
echo "</table>";
?>
</body>
</html>
ver ejemplo funcionando |
Comparacion de variables:
Archivo: compara.php |
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 8;
$b = 3;
$c = 3;
if (($a == $b) && ($c > $b))
echo "cierto","<br>";
else
echo "falso","<br>";
if(($a == $b) || ($b == $c))
echo "cierto","<br>";
else
echo "falso","<br>";
if( !($b <= $c))
echo "cierto","<br>";
else
echo "falso","<br>";
?>
</body>
</html>
ver ejemplo funcionando |
|
|
En este ejemplo se piden 2 valores y se realizan operaciones aritméticas básicas con ellos |
<!--bas03.php-->
<html>
<body>
<form action="bas03.php" method ="post">
<input type="text" name ="num">: <input type="text" name ="num2">:
<input type="submit">
</form>
<?php
$v1=$_POST['num'];
$v2=$_POST['num2'];
//muestra los valores de las variables que llegan
echo "v1= $v1 <br>";
echo "v2= $v2 <br>";
// compara las variables
if( $v1 == $v2 )
echo " $v1 es igual a $v2 <br>";
else
echo " $v1 no es igual a $v2 <br>";
// verifica el residuo
if( $v1 % $v2 == 0 )
echo " $v2 divide exactamente a $v1 <br>";
else
echo " $v2 no divide exactamente a $v1 <br>";
echo "la suma de $v1 + $v2 = ". ($v1 + $v2)."<br>";
echo "la diferencia de $v1 - $v2 = ". ($v1 - $v2)."<br>";
echo "la multiplicación de $v1 * $v2 = ". ($v1 * $v2)."<br>";
echo "la division de $v1 / $v2 = ". ($v1 / $v2)."<br>";
?>
</body>
</html>
ver ejemplo funcionando |
|
|
Una mejora al ejemplo anterior.
- Se muestran en la forma el número que se introdujo o llegó para cada variable .
- Se valida la división por cero.
|
<!--bas04.php -->
<html>
<body>
<form action="bas04.php" method ="post">
<input type="text" name ="num" value=<?php echo $_POST['num']; ?>>: <input type="text" name ="num2" value=<?php echo $_POST['num2']; ?>>
<input type="submit">
</form>
<?php
$v1=$_POST['num'];
$v2=$_POST['num2'];
//muestra los valores de las variables que llegan
echo "v1= $v1 <br>";
echo "v2= $v2 <br>";
// compara las variables
if( $v1 == $v2 )
echo " $v1 es igual a $v2 <br>";
else
echo " $v1 no es igual a $v2 <br>";
// verifica el residuo
if( $v1 % $v2 == 0 )
echo " $v2 divide exactamente a $v1 <br>";
else
echo " $v2 no divide exactamente a $v1 <br>";
echo "la suma de $v1 + $v2 = ". ($v1 + $v2)."<br>";
echo "la diferencia de $v1 - $v2 = ". ($v1 - $v2)."<br>";
echo "la multiplicación de $v1 * $v2 = ". ($v1 * $v2)."<br>";
if($v2 !=0)
echo "la division de $v1 / $v2 = ". ($v1 / $v2)."<br>";
else
echo "la division de $v1 / $v2 no puede efectuarse, por que da división por cero <br>";
?>
</body>
</html>
ver ejemplo funcionando |
|
Cálculo de la siguiente suma ax2 + bx + c |
<!--bas05.php -->
<html>
<body>
<form action="bas05.php" method ="post">
a= <input type="text" name ="a" value=<?php echo $_POST['a']; ?>> <br>
b= <input type="text" name ="b" value=<?php echo $_POST['b']; ?>> <br>
c= <input type="text" name ="c" value=<?php echo $_POST['c']; ?>> <br>
x= <input type="text" name ="x" value=<?php echo $_POST['x']; ?>> <br>
<input type="submit">
</form>
<?php
$a= $_POST['a'];
$b= $_POST['b'];
$c= $_POST['c'];
$x= $_POST['x'];
echo " a= $a <br>";
echo " b= $b <br>";
echo " c= $c <br>";
echo " x= $x <br>";
$s1= $a*$x*$x;
echo "El producto de ax<sup>2</sup> es = $a * $x * $x = ".$s1. "<br>";
$s2= $b*$x;
echo "El producto de bx es = $b * $x = ".$s2."<br>";
$s3= $c;
echo "y c= $c = ".$s3."<br>";
$suma= $s1 + $s2+ $s3;
echo " <br> Por lo tanto $s1 + $s2 + $s3 = $suma <br> ";
?>
</body>
</html>
ver ejemplo funcionando |
|
una mejora al programa anterior:
- Se introduce al inicio la instrucción empty() que permite saber si una variable tiene datos.
- Los datos son mostrados en una tabla
- Se insertan saltos de línea al archivo de salida para que el codigo HTML generado
sea leíble más fácilmente
|
<!--bas06.php -->
<html>
<body>
<form action="bas06.php" method ="post">
<?php
//se asignan valores iniciales
if(empty($_POST['a']) || empty($_POST['c']) || empty($_POST['c']) || empty($_POST['x']) )
{ $_POST['a']=2;
$_POST['b']=2;
$_POST['c']=2;
$_POST['x']=1;
}
?>
a= <input type="text" name ="a" value=<?php echo $_POST['a']; ?>> <br>
b= <input type="text" name ="b" value=<?php echo $_POST['b']; ?>> <br>
c= <input type="text" name ="c" value=<?php echo $_POST['c']; ?>> <br>
x= <input type="text" name ="x" value=<?php echo $_POST['x']; ?>> <br>
<input type="submit">
</form>
<table align="center" border="1">
<?php
$a= $_POST['a'];
$b= $_POST['b'];
$c= $_POST['c'];
$x= $_POST['x'];
echo "\n <tr><td> a= </td><td>$a </td>";
echo "\n <tr><td> b= </td><td>$b </td>";
echo "\n <tr><td> c= </td><td>$c </td>";
echo "\n <tr><td> x= </td><td>$x </td>";
$s1= $a*$x*$x;
echo "\n <tr><td>El producto de ax<sup>2</sup> es $a * $x * $x = </td><td> ".$s1;
$s2= $b*$x;
echo "\n <tr><td>El producto de bx es = $b * $x =</td><td> ".$s2;
$s3= $c;
echo "\n <tr><td>c= </td><td> ".$s3;
$suma= $s1 + $s2+ $s3;
echo "\n <tr><td>Por lo tanto $s1 + $s2 + $s3 = </td><td>$suma <br> ";
?>
</table>
</body>
</html>
ver ejemplo funcionando
|
|
|
|
|
Este ejemplo pide en un textarea un conjunto de datos separados por retornos de carro y los muestra en pantalla |
<!--bas08.php -->
<html>
<body>
<form action="bas08.php" method ="post">
<?php
//se asignan valores iniciales
if(empty($_POST['datos']) )
{ $_POST['datos']="2\n25\n32\n12\n5";
}
?>
<textarea name="datos" rows="10" cols="10"><?php echo $_POST['datos']; ?></textarea><br>
<input type="submit">
</form>
<table align="center" border="1">
<?php
$datos= $_POST['datos'];
//se reemplazan los saltos de línea por espacios en blanco
$cadena= str_replace("\n", " ", $datos);
$cadena= str_replace(" ", " ", $cadena);
//genera un arreglo a partir de una cadena, donde el separador son los espacios en blanco
$arreglo = split(' ', $cadena);
for($i=0; $i<count($arreglo); $i++)
echo "num $i= ".$arreglo[$i]. "<br>" ;
?>
</table>
</body>
</html>
ver ejemplo funcionando
|
|
|
|
|
|
|