Inicio

jueves, 28 de julio de 2011

Uso de las variables

Ya hemos adelantado la importancia que tiene el uso de las variables en programación. En PHP no es necesario declarar las variables ni establecer su tipo. Su nombre puede ser una combinacion de letras (a-Z), números y guiones bajos, precedidos con el signo $. El primer carácter no puede ser un número, y php diferencia entre mayusculas y minúsculas.
$var no es igual a $Var
Para utilizar una variable basta con asignarle un valor, usando para ello el operador =
Si el valor es una cadena, necesita ir entrecomillado.
<? php
$equipo="Manchester United";
$EQUIPO= "Inter de Milán";
?>

Dependiendo de la información que contenga, una variable puede ser considerada de uno u otro tipo:

Variables numéricas
Almacenan cifras
Enteros $entero=2002; Numeros sin decimales
Real $real=3.14159; Numeros con o sin decimal

Variables alfanuméricas
Almacenan textos compuestos de números y/o cifras
Cadenas Almacenan variables alfanuméricas $cadena="Hola amigo";

Tablas
Almacenan series de informaciones numéricas y/o alfanuméricas
Arrays Son las variables que guardan las tablas $sentido[1]="ver";
$sentido[2]="tocar";
$sentido[3]="oir";
$sentido[4]="gusto";
$sentido[5]="oler";

Objetos
Se trata de conjuntos de variables y funciones asociadas. Presentan una complejidad mayor que las variables vistas hasta ahora pero su utilidad es más que interesante.

Sintaxis de PHP

Como cualquier otro lenguaje de programación PHP tiene sus peculiaridades a la hora de insertar código, escribir variables o comentarios.
Como característica general hay que señalar que las inxtrucciones se separan con ;
 La forma de incluir comentarios es variable dependiendo si queremos escribir una línea o más. Veamos esto con un primer ejemplo de script:
<?
$mensaje="Buenos Días!!"; //Comentario de una linea
echo $mensaje; #Este comentario también es de una linea
/*En este caso
mi comentario ocupa
varias lineas, lo ves? */
?>

Si usamos doble barra (//) o el símbolo # podemos introducir comentarios de una línea. Mediante /* y */ creamos comentarios multilínea. Por supuesto, nada nos impide de usar estos últimos en una sola línea.
Para denotar variables emplearemos el símbolo $.

lunes, 25 de julio de 2011

Formularios en PHP

Antes de comenzar hay que señalar que los formularios no forman parte de PHP. Es decir, nos tendremos que apoyar en los formularios para dinamizar nuestro sitio, pero debemos hacer un uso intensivo de HTML para el diseño de los mismos y de PHP para recabar o emitir la información hacia o desde el servidor.Repasando el tratamiento en HTML de los formularios debemos conocer:
  1. Todo formulario comienza con la etiqueta <FORM ACTION="lo_que_sea.php" METHOD="post/get"> . Con ACTION indicamos el script que va procesar la información que recogemos en el formulario, mientras que METHOD nos indica si el usuario del formulario va ha  enviar datos ( post ) o recogerlos ( get ). La etiqueta <FORM> indica el final del formulario. 
  2. A partir de la etiqueta <FORM> vienen los campos de entrada de datos que pueden ser (abra el editor de notas e inserte el código siguiente, guárdelo con extensión htm y ejecútelo en su navegador):
  3. <HTML>
    <HEAD>
    <TITLE>Ejercicios de formularios</title>
    </HEAD>
    <BODY>
    <p>Cuadro de texto:
      <input type="text" name="nombre" size="20" value="tema">
      <br>
    Cuadro de texto con barras de desplazamiento:
    <textarea rows="3" name="reseña" cols="20">Es de color rojo</textarea>
    <br>
    <br>
    Casilla de verificación:
    <input type="checkbox" name="Elegir" value="ON">
    <br>
    <br>
    Botón de acción:
    <input type="radio" value="SI" checked name="SELECCIONAR">
    <br><br>
    Menú desplegable:

    <select size="1" name="dia">

    <option selected value="lunes">lunes</option>

    <option>martes</option>

    <option value="miercoles">miércoles</option>

    </select>
    <br><br>

    Boton de comando:

    <input type="submit" value="enviar" name="enviar">
    </body>
    </HTML>


    Este último tipo de campo resulta especialmente útil cuando que remos pasar datos ocultos en un formulario.
    Como habrás observado todos lo tipos de campo tienen un modificador llamado name , que no es otro que el nombre de la variable con la cual recogeremos los datos en el script indicado por el modificador ACTION de la etiqueta FORM FORM , con value establecemos un valor por defecto. 
    A continuación veamos un ejemplo, para lo cual crearemos un formulario en HTML como el que sigue y lo llamaremos formulario.htm :
    <HTML>
    <BODY>
    <FORM METHOD="post" ACTION="mis_datos.php">
    <input type="hidden" name="edad" value="55">
    <p>Tu nombre <input type="text" name="nombre" size="30" value="jose"></p>
    <p>Tu sistema favorito 
    <select size="1" name="sistema">
    <option selected value="Linux">Linux</option>
    <option value="Unix">Unix</option>
    <option value="Macintosh">Macintosh</option>
    <option value=&qmargin-left: 75"><option value="Windows">Windows</option>
    </select></p>
    <p>¿Te gusta el futbol ? <input type="checkbox" name="futbol" value="ON"></p>
    <p>¿Cual es tu sexo?</p>
    <blockquote>
    <p>Hombre<input type="radio" value="hombre" checked name="sexo"></p>
    <p>Mujer <input type="radio" name="sexo" value="mujer"></p>
    </blockquote>
    <p>Aficiones</p>
    <p><textarea rows="5" name="aficiones" cols="28"></textarea></p>
    <p><input type="submit" value="Enviar datos" name="enviar"> 
    <input type="res-left: 50"> <input type="reset" value="Restablecer" name="B2"></p>
    </FORM>
    </BODY>
    <HTML>
     
    Y ahora creemos el script PHP llamado desde le formulario mis_datos.php :
    Todos los datos se encuentran en la variable $_POST, ya que el formulario está enviado por el método post.
    <?PHP;
    if (isset($_POST['enviar']) {
    echo "Hola <b>" . $_POST['nombre'] . "</b> que tal estás<BR>n";
    echo "Eres " . $_POST['sexo'] . "<BR>n";
    echo "Tienes " . $_POST['edad'] . "<BR>n";
    echo "Tu sistema favorito es " . $_POST['sistema'] . "<BR>n";
    if (isset($_POST['futbol']) {
    echo "Te gusta el futbol <BR>n";
    } else odigo" style="margin-left: 50">} else {
    echo "NO te gusta el futbol <BR>n";
    }
    if ($_POST['aficiones'] != "") {
    echo "Tus aficiones son: <BR>n";
    echo nl2br($_POST['aficiones']);
    } else {
    echo "NO tienes aficiones <BR>n";
    }
    }
    echo "<a href='formulario.htm'>VOLVER AL FORMULARIO</a>"
    ?>
    Una vez rellenados los datos del formulario, pulsamos el botón Enviar datos , con lo que le campo enviar toma lo que su etiqueta value indica, es decir enviar="Enviar datos" . En nuestro script lo primero que evaluamos es que  se haya enviado el formulario, y para ello nada mejor que comprobar que la variable $enviar no está vacía. Le ponemos el signo dólar delante a enviar , ponemos el signo dólar delante a enviar , ya que en PHP todas las variables se les refiere con este signo.
    Hay que tener en cuenta que si fusionáramos el código de ambos ficheros, nos ahorraríamos uno, pero no también se puede hacer en dos como lo estamos haciendo. Si la variable $enviar está vacia, enviamos el formulario.
    <?PHP;
    if ($enviar) {
    echo "Hola <b>" . $nombre . "</b> que tal estás<BR>n";
    echo "Eres " . $sexo . "<BR>n";
    echo "Tienes " . $edad . "<BR>n";
    echo "Tu sistema favorito es " . $sistema . "<BR>n";
    if ($futbol) {
    echo "Te gusta el futbol <BR>n";
    } else {
    echo "NO te gusta el futbol <BR>n";
    }
    if ($aficiones != "") {
    < stuot;)> echo "Tus aficiones son: <BR>n";
    echo nl2br($aficiones);
    } else {
    echo "NO tienes aficiones <BR>n";
    }
    echo "<a href='$PHP_SELF'>VOLVER AL FORMULARIO</a>"
    } else {
    <HTML>
    <BODY>
    <FORM METHOD="post" ACTION="<?PHP echo $PHP_SELF ?>">
    <input type="hidden" name="edad" value="55">
    <p>Tu nombre <input type="text" name="nombre" size="30" nombre" size="30" value="jose"></p>
    <p>Tu sistema favorito 
    <select size="1" name="sistema">
    <option selected value="Linux">Linux</option>
    <option value="Unix">Unix</option>
    <option value="Macintosh">Macintosh</option>
    <option value="Windows">Windows</option>
    </select></p>
    <p>¿Te gusta el futbol ? <input type="checkbox" name="futbol" value="ON"></p>
    <p>¿Cual es tu sexo?</p>
    <blockquote>
    <p>Hombre<input type="radio" value="hombre" checked name="sexo"></p>
    <p>="codigo" style="margin-left: 100"><p>Mujer <input type="radio" name="sexo" value="mujer"></p>
    </blockquote>
    <p>Aficiones</p>
    <p><textarea rows="5" name="aficiones" cols="28"></textarea></p>
    <p><input type="submit" value="Enviar datos" name="enviar"> 
    <input type="reset" value="Restablecer" name="B2"></p>
    </FORM>
    </BODY>
    </HTML>
    <?PHP
    } //fin IF
    ?>
    La variable de entorno $PHP_SELF , es una variable de entorno que nos devuelve el nombre del script que estamos ejecutando. Y por último, hacer notar el uso de la función nl2br() , nl2br() , con la cuál sustituimos los retornos de carro del texto, los cuáles  no reconocen los navegadores, por la etiqueta <BR> .
    Descarga de ficheros desde un formulario
    Vamos a ver un caso especial, como descargar un archivo desde un formulario. Para ello utilizaremos una etiqueta INPUT de tipo FILE , soportada a partir de las versiones de los navegadores Nestcape Navigator 2.0 e Internet Explorer 4.0.
    El formulario debe usar el método post , y el atributo post , y el atributo enctype debe tener el valor multipart/form-data . Además al formulario debemos añadirle un campo oculto de nombre MAX_FILE_SIZE , al cuál le daremos el valor en bytes del tamaño máximo del archivo a descargar.
    <FORM ENCTYPE="multipart/form-data" ACTION="7-3.php" METHOD="post">
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000"> 
    <INPUT NAME="archivo" TYPE="file"> 
    <INPUT TYPE="submit" VALUE="Descargar Archivo"> 
    </FORM>
    Cuando el formulario es enviado, PHP detectará automáticamente que se está descargando un archivo y lo colocará en un directorio temporal en el servidor. Dicho directorio será que el que esté indicado en el archivo de configuración php.ini , o en su defecto en el directorio temporal del sistema. 
    Cuando PHP detecta que se está descargando un archivo crea varias variables con el prefijo del nombre del archivo pero con distintas terminaciones. La variable terminada en $_FILES['archivo']['name'] contiene el nombre original del archivo, $_FILES['archivo']['size'] contiene el tamaño en bytes de éste, y la variable $_FILES['archivo']['type'] nos indicará el tipo de archivo si éste es ofrecido por el navegador.
    Si el proceso de descarga no ha sido correcto la variable archivo tomará el valor none y _size será 0 , y si el proceso ha sido correcto, pero la variable $_FILES['archivo']['size'] da 0 , quiere decir que el archivo a descarga supera el tamaño máximo indicado por MAX_FILE_SIZE .
    Una vez descargado el archivo, lo primero que debemos hacer es moverlo a otro lugar, pues sino se hace nada con él, cuando acabe la ejecución de la página se borrará.
    Veamos un ejemplo de todo lo dicho.
    <HTML>
    <BODY>
    <?PHP
    if (isset($_POST['enviar']) {
    if ($_FILES['archivo']['name'] != "" && $_FILES['archivo']['size'] != 0){
    echo "Nombre: $archivo_name <BR>n";
    echo "Tamaño: $archivo_size <BR>n";
    echo "Tipo: $archivo_type <BR>n";
    if (! move_uploaded_file ($_FILES['archivo']['tmp_name'], "directorio/".$_FILES['archivo']['name'])) {
    echo "<h2>No se ha podido copiar el archivo</h2>n";
    }
    } elseif ($_FILES['archivo']['name'] != "" && $FILES['archivo']['size'] == 0) {
    echo "<h2>Tamaño de archivo superado</h2>n";
    } else {
    echo "<h2>No ha escogido un archivo para descargar</h2>n";

    echo "<HR>n";
    }
    ?>
    <FORM ENCTYPE="multipart/form-data" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>" METHOD="post"> 
    <INPUT type="hidden" name="MAX_FILE_SIZE" value="100000"> 
    <p><b>Archivo a descargar<b><br> 
    <INPUT type="file" name="archivo" size="35"></p> 
    <p><INPUT type="submit" name="enviar" value="Aceptar"></p>
    </FORM>
    </BODY>
    </HTML> 
Si desea profundizar más en el uso de formularios puede visitar esta página

    Cadenas

    Comillas simples y dobles

    Las cadenas de texto se pueden delimitar por comillas dobles o simples. Si una cadena está delimitada por comillas dobles, en su interior puede haber cualquier número de comillas simples, y viceversa. Si en una cadena tiene que haber comillas simples y dobles, se pueden escribir como \' o \".
    Las comillas simples (') tienen un caracter más literal, es decir, cualquier cosa que pongamos saldrá tal como la hemos puesto. Por ejemplo si ponemos una variable entre comillas simples o un salto de línea, éste aparecerá tal cual, sin interpretar el \n o la variable.


    $var = 'Hola'; 
    echo '$var\n'; // Imprime $var\n

    En cambio, las comillas dobles sí aceptan variables y saltos de línea \n.

    $var = 'Hola';
    echo "$var\n"; // Imprime Hola y un salto de línea 

    Mi recomendación es utilizar comillas simples siempre que podamos, ya que son algo más rápidas, y las dobles cuando tengamos que mezclar saltos de línea, caracteres especiales (escapados con \) y variables.rápidas, y las dobles cuando tengamos que mezclar saltos de línea, caracteres especiales (escapados con \) y variables.

    Editores

    Para escribir código en PHP basta el NOTEPAD o cualquier editor de texto. No obstante si deseamos trabajar con algún otro entorno de desarrollo se puede utilizar rapid PHP, Maguma o Eclipse PDT. La última versión de Eclipse PDT disponible actualmente (marzo de 2011) para Windows es la versión Eclipse PDT Helios SR2 (141.5 MB, del 25 de febrero de 2011), basada en Eclipse 3.6 SR2.