InicioApuntes Y MonografiasManual PHP (TERCERA PARTE)
Variables de PHP
Este ejemplo te mostrará información acerca de la instalación de PHP en tu servidor o computadora, muchas veces es útil para saber qué módulos están activos o cuales no, así como para identificar los límites de memoria que tienen ciertas configuraciones que talvez te estén ocasionando problemas.






<html>
<body>

<?php phpinfo(); ?>

</body>
</html>

Identificando el navegador
Además de las variables locales y globales existen las _variables reservadas_ también conocidas como globales, a éstas no se les puede asignar un valor, pues lo que contienen es información del servidor web o información del cliente que lo visita.
El siguiente código nos muestra el tipo de navegador que estamos utilizando para ingresar.
<html>
<body>

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

</body>
</html>
Utilizando IF y las variables reservadas
Ahora veamos un ejemplo combinando dos de los temas aprendidos en este tutorial, lo que haremos es evaluar si el navegador utilizado es Internet Explorer para entonces mostrar un mensaje.
<html>
<body>

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], 'MSIE')) {
echo "Usted utiliza Internet Explorer<br />";
}
?>

</body>
</html>

Como notarán, utilizamos una función llamada strstr al hacer el IF, lo que esto realiza es buscar una cadena de texto dentro de otra, en este caso la frase MSIE dentro del resultado de la variable $_SERVER y mostrarnos todo el texto que le sigue, otro ejemplo similar:
<?php
$nombre = 'Juan Carlos López Morales';
$extraer = strstr($nombre, 'Carlos');
echo $extraer; // Nos devolverá Carlos López Morales
?>

A la variable $extraer le estamos indicando que busque el texto “Carlos “ dentro de $nombre, para que entonces nos devuelva Carlos más el resto del contenido.
Utilizando funciones predefinidas
PHP tiene una cantidad de funciones listas para usarse tal como vimos con strstr , veamos algunos otros ejemplos.
<?php
echo date("Y/m/d" . "<br />";
echo date("Y.m.d" . "<br />";
echo date("Y-m-d"
?>
La función date() devuelve la fecha actual del servidor o computadora en donde estemos ejecutando el código y la puede mostrar en diferentes formatos, tal como el ejemplo anterior en donde Y = al año, m = al mes y d= día en valores numéricos.
Manual de PHP: Funciones
Contenido
[ocultar]
• 1 Funciones Básicas
• 2 Funciones con Parámetros
• 3 Funciones con dos o más Parámetros
• 4 Funciones con Retorno de información
• 5 Funciones con Retorno de múltiples valores


PHP posee cientos de funciones prediseñadas tal como vimos algunas en módulos anteriores, pero nosotros también podemos crear funciones propias que ejecuten ciertas instrucciones cada vez que hagamos un llamado a ellas.
Por ejemplo, podemos crear una función que haga un calculo matemático complejo cuando le enviemos dos valores, entonces en lugar de programar de nuevo ese cálculo en cada momento que lo necesitemos, solo lo hacemos una vez como una función, y luego hacemos un llamado cada vez que vayamos a necesitar de ese bloque de programación.
Para declarar la función dentro de nuestros programas hacemos lo siguiente:
function nombredeFuncion()
{
bloque de programación;
}
Veamos algunos ejemplos, desde los más sencillos para ir avanzando.
Funciones Básicas
<html>
<body>

<?php
function sitioweb() {
echo 'Foros del Web';
}
echo 'Bienvenido a nuestro sitio llamado ';
sitioweb();
?>

</body>
</html>
En éste primer ejemplo iniciamos nuestro bloque de programación creando nuestra primera función titulada sitioweb que tiene una impresión de pantalla por medio de echo , la función por si misma no hace nada hasta que la llamamos, aún teniendo el echo el mensaje no se desplegará sino hasta que escribimos sitioweb();
Funciones con Parámetros
Para hacer las funciones mucho más útiles, podemos enviarles parámetros, es decir valores para que los utilice y realice algún cálculo u operación.
<html>
<body>

<?php
function suma($valor1) {
$valor2=10;
echo "El resultado es " . ($valor1+$valor2);
}

echo "Sumar 15 + 10: ";
suma(15);
?>

</body>
</html>
En este caso lo que hacemos es ingresar dentro de los paréntesis de suma() el valor de 15, allí estamos llamando a la función por lo que el programa ejecutará el código indicado arriba sumando el valor enviado más el valor de la variable $valor2 para mostrarnos el resultado. Conviene poner los paréntesis agrupando la operación.
Funciones con dos o más Parámetros
Similar al ejemplo anterior pero ahora enviando más parámetros dentro del paréntesis, como vemos debemos separar cada uno con una coma (,). Conviene poner los paréntesis agrupando la operación.
<html>
<body>

<?php
function suma($valor1,$valor2) {
echo "El resultado es " . ($valor1+$valor2) ;
}
echo "Sumar 15 + 10: ";
suma(15,10);
?>
</body>
</html>
Funciones con Retorno de información
En los ejemplos anteriores cada función imprime el resultado de la operación automáticamente, pero también podemos decirle que nos regrese ese resultado para que nosotros lo utilicemos en el espacio y momento que lo necesitemos.
<?php
function suma($valor1,$valor2) {
$total=$valor1+$valor2;
return $total;
}

echo "La suma de 15 + 10 es igual a " . suma(15,10);
?>
Otro ejemplo:
<?php
function Cuadrado($numero) {
return $numero * $numero;
}

echo Cuadrado(4); // igual a 16
?>
Funciones con Retorno de múltiples valores
En el ejemplo anterior vemos que return nos devuelve el resultado de una operación o variable, pero en algunas ocasiones necesitamos más de un dato, para ello utilizamos un arreglo (array) y la función llamada list.
function numeros() {
return array (0, 1, 2);
}

list ($cero, $uno, $dos) = numeros();
En return array() tenemos tres valores los cuales luego podemos asignar cada uno a una variable distinta gracias a la función list, de esa forma $cero tendrá el primer valor, $uno tendrá 1 y $dos el último valor del arreglo.
Manual de PHP: Utilizando Formularios para el envío de datos
Contenido
[ocultar]
• 1 $_GET y $_POST
• 2 Ejemplos de envío de información mediante GET
• 3 Ejemplos de envío de información mediante POST


Gran parte del trabajo que harán nuestros programas será procesar información que los usarios ingresen a través de formularios HTML, con esos datos podemos realizar operaciones en el momento o guardarlos a bases de datos por ejemplo.
Vamos a ver cómo deben estar estructurados los formularios y luego explicaremos la conexión con nuestros programas en php, la base de un formulario es la siguiente:
<form action="programa.php" method="post" id=”formulario”>
Nombre: <input type="text" name="nombre" />
Edad: <input type="text" name="edad" />
<input type="submit" />
</form>
En este ejemplo, la etiqueta <form> sirve para armar el formulario en HTML, dentro de ésta etiqueta estamos utilizando action para indicar que toda la información sea enviada al archivo llamado programa.php y por último method es para especificar de qué forma será enviada esa información para lo cual hay dos formas, GET y POST.
$_GET y $_POST
Cuando utilizamos $_GET dentro del php y el formulario, la información que enviamos será visible por cualquier persona pues es mostrada en la barra de direcciones, por lo que no debemos utilizar éste método para enviar contraseñas o información sensible. Una limitante de GET es que solo puede enviar hasta 100 caracteres.
Comparado a $_POST, la información enviada por esta forma es invisible pues no se muestra cuando se envía y prácticamente no hay un límite en cuanto a tamaño se refiere.
Es recomendable utilizar el segundo método cuando vamos a enviar información que por ejemplo va a ser almacenada en una base de datos y ya no va a ser modificada, o cuando vamos a enviar un formulario de contacto por ejemplo, y utilizamos GET cuando la información puede cambiar en algún momento, por ejemplo, si estamos buscando algo en Google puede ser que los resultados no son los que necesitemos entonces regresamos a la pantalla anterior para modificar la información.
Ejemplos de envío de información mediante GET
Realicemos el primer ejemplo creando un archivo llamado formulario.php con el siguiente contenido utilizando el método GET:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Formulario</title>
</head>
<body>

<form action="programa.php" method="get" id=”formulario” name=”formulario”>
Nombre: <input type="text" name="nombre" id="nombre" />
Edad: <input type="text" name="edad" id="edad" />
<input type="submit" value="enviar" name="enviar" id="enviar" />
</form>

</body>
</html>
Y creamos un archivo llamado programa.php con lo siguiente
<html>
<body>

Bienvenido <?php echo $_GET['nombre'];?>. <br />
Tu edad es: <?php echo $_GET['edad'];?> años.

</body>
</html>
Ahora abrimos en el navegador formulario.html, ingresamos la información que se nos pide y veremos cómo nuestro programa procesa los datos.
A simple vista podemos entender bastante bien cómo funciona, como vemos al utilizar $_GET['nombre']; lo que hacemos es capturar el campo llamado nombre del formulario:
<input type="text" name="nombre" id="nombre" />
Y lo mostramos utilizando echo tal como aprendimos a imprimir en pantalla las variables.

o
 Captura de pantalla*
En el ejemplo anterior la barra de direcciones luciría de la siguiente forma:

http://localhost/programa.php?nombre=Juan&age=25
Ejemplos de envío de información mediante POST
Ahora veamos cómo funciona POST, en donde al enviar la información la barra de direcciones quedaría como
http://localhost/programa.php
Crear un archivo llamado formulario.html
<html>
<body>

<form action="archivo.php" method="post" id=”formulario”>
Nombre: <input type="text" name="nombre" />
Edad: <input type="text" name="edad" />
<input type="submit" />
</form>

</body>
</html>

Y otro llamado programa.php:
<html>
<body>

Bienvenido <?php echo $_POST["nombre"]; ?>,<br />
Tu edad es: <?php echo $_POST["edad"]; ?> años.

</body>
</html>
Como vemos cuando en el formulario utilizamos method=”get” en la programación también debemos utiliza $_GET, igual para post, sin embargo también existe $_REQUEST que puede obtener la información de los formularios sin importar qué metodo se utiliza, ejemplo:
Bienvenido <?php echo $_REQUEST["nombre"]; ?>,<br />
Tu edad es: <?php echo $_REQUEST["edad"]; ?> años.

<input type="text" name="nombre" id="nombre" />
Y lo mostramos utilizando echo tal como aprendimos a imprimir en pantalla las variables.
En el ejemplo anterior la barra de direcciones luciría de la siguiente forma:

http://localhost/programa.php?nombre=Juan&age=25

Manual de PHP: Tipos de control para los formularios
Contenido
[ocultar]
• 1 Inputs
• 2 Radio
• 3 Checkbox
• 4 Textarea


Un formulario puede tener diversos tipos de datos para la recolección de información, vamos a ver algunos de ellos junto a una breve explicación, te recomiendo irlos probando dentro de un documento .html para que veas cómo funcionan.

Inputs
Son campos regularmente para el ingreso de texto, son los que vemos en los formularios de contacto para ingresar nombre, correo electrónico, etc. Sintaxis:
<form>
<label for="nombre_campo">Texto</label>
<input id="nombre_campo" type="text" name="nombre" value="texto_default" />
</form>
La primera línea label sirve para identificar el nombre del campo que le sigue, es además la etiqueta que aparece para que el usuario sepa qué dato se le está pidiendo que llene aunque no es necesario encerrarlo en una etiqueta label.

Otra variante de este Input es el de tipo password que hace que el texto que se escribe en el sea reemplazado por símbolos como protección:
<input id="contraseña" type="password" name="contraseña" value=""" />
Y también podemos ocultar éstos campos de texto colocándole el type=hidden lo cual nos sirve para enviar alguna información ya predefinida junto a todo lo que el usuario ingrese.
<input type="hidden" name="contador" value="350″ />

El último tipo de input que veremos es el submit que es el botón que regularmente hacemos click para poder enviar un formulario con la información que llenamos.
<form name="input" action="programa.php" method="get">
Nombre:
<input type="text" name="nombre" />
<input type="submit" value="Enviar" />
</form>
Radio
Los controles de tipo Radio son los que vemos que tienen una forma redonda y se pueden utilizar para preguntar opciones de tipo falso/verdadero, masculino/femenino, etc y en donde solo puede estar seleccionada una de las opciones:
<form>
<label for="nombre_input">Masculino</label>
<input type="radio" name="sexo" value="masculino" checked="checked"/>
<label for="nombre_input">Femenino</label>
<input type="radio" name="sexo" value="femenino" />
</form>
Checked nos sirve para indicar que queremos que ese campo aparezca seleccionado desde un inicio.

Checkbox
Estos controles son usados cuando se necesita que se pueda seleccionar una o más opciones de las que se presentan, o también cuando solo se presenta una opción y necesitamos que el usuario la marque por ejemplo para poder continuar con algún proceso.
<form>
Mac OS
<input type="checkbox" name="sistema" value="mac" checked="checked"/>
<br />
Windows
<input type="checkbox" name="sistema" value="windows" />
<br />
Apple
<input type="checkbox" name="sistema" value="linux" />
</form>
El campo value puede contener también números,
Textarea
A diferencia del primer input que vimos, los textarea son campos grandes para ingreso de texto multilínea en donde podemos especificar la cantidad de éstas y de columnas que queramos.
<form>
<textarea id="comentario" name="comentario" rows="10" cols="30">
texto default si deseamos
</textarea>
</form>
Manual de PHP: Bases de Datos
Contenido
[ocultar]
• 1 Introducción a las bases de datos
• 2 El lenguaje SQL
• 3 Gestores de bases de datos


Introducción a las bases de datos
Como ya vimos en los tutoriales básicos, una de las ventajas de PHP es que, al ser un lenguaje interpretado por el servidor, permite generar páginas HTML dinámicas, es decir, que van cambiando su contenido en base a distintas situaciones. El ejemplo clásico es mostrar un mensaje de bienvenida a los usuarios registrados de nuestro sitio, y uno distinto a aquellos visitantes no registrados. Es decir, hemos personalizado el contenido mostrado antes de enviárselo al usuario como HTML.
Habiendo recordado este punto muy importante, entenderemos fácilmente la función de las bases de datos. En términos simples, constituyen un sistema de almacenamiento organizado de datos, en los cuales se pueden ingresar nuevos datos, modificar los ya existentes, leerlos y procesarlos, o incluso eliminarlos.
Cabe señalar que aquí nos vamos a referir al modelo de bases de datos relacional, puesto que existen muchos modelos distintos de bases de datos.
En general, vamos a ver que una base de datos relacional está formada por múltiples tablas, y cada tabla de una serie de datos o registros.
• Las tablas son los contenedores de información. En nuestra base de datos podremos tener múltiples tablas, cada una destinada a un fin específico. En una guardaremos los datos de los usuarios registrados en nuestro sitio, en otra pondremos los mensajes de visita, y en otra las noticias. Podemos crear tantas tablas como necesitemos para el sistema que queremos crear.
• Cada tabla está formada por una serie de columnas, llamadas usualmente campos o atributos. Éstas van a contener un determinado tipo de datos, como números o texto, y van a estar representadas por un nombre único que las va a identificar. Por ejemplo, si queremos tener un sistema de comentarios en nuestro sitio, tendremos una tabla llamada comentarios, y en ella múltiples columnas, como nombre, fecha, ip, email y comentario. Una práctica estándar muy recomendada es tener siempre una columna índice que va a identificar cada registro en nuestra tabla. Por lo tanto, a nuestros campos añadiremos uno llamado id.
• Una fila es un registro de datos. Podemos tener tantas filas en nuestra tabla como capacidad tenga nuestro servidor. Siguiendo el ejemplo anterior, cada nuevo comentario que deje un usuario será almacenado en nuestra tabla destinada a ello, junto con los otros datos como su nombre, fecha, etc. Este conjunto de datos que vamos a insertar en la tabla constituye un registro o una fila dentro de ella.
Un ejemplo de tabla en una base de datos relacional:

El lenguaje SQL
Una base de datos es un sistema que dispone de su propio lenguaje, muy diferente al lenguaje PHP. Hay muchos lenguajes en función de la base de datos, pero el que vamos a utilizar es el conocido lenguaje SQL, este está formado por una serie de instrucciones, las cuáles van a modificar, agregar o eliminar los datos almacenados en la base de datos. No es el objetivo de este tutorial profundizar en este lenguaje. Para poder interactuar con la base de datos PHP dispone de una serie de funciones, las cuáles permiten tres tipos de operaciones básicamente:
• Abrir/cerrar conexiones con los servidores de bases de datos
• Ejecutar consultas SQL
• Trabajar sobre el resultado de dichas consultas
Gestores de bases de datos
Los Sistemas Gestores de Bases de Datos (SGBD), son los encargados de facilitarnos la creación y manipulación de las bases de datos.
Existen un gran número de gestores de bases de datos, y PHP dispone de herramientas para integrar y relacionar sistemas con muchos de ellos. Nosotros utilitzaremos, evidentemente, los de bases de datos relacionales, y entre los más conocidos destacan:

• MySQL
• Manual de PHP & MySQL
• PostgreSQL
• Oracle
• ODBC
En todas ellas se usa el lenguaje SQL. La más usada y conocida es MySQL, pero PHP puede también interactuar con las demás.
Cabe destacar que, pese a que conozcamos el lenguaje SQL y estos SGBD estén basados en él, puede que algunas instrucciones determinadas no funcionen en algunos de éstos. Esto es porque en realidad estos gestores pueden haber redefinido en mayor o menor medida el lenguaje para lograr el objetivo para el que fueron diseñados. Sin embargo, esto sólo suele ocurrir en las instrucciones más avanzadas, en cuyo caso si recibimos un error de sintaxis deberíamos recurrir al manual para comprobar cuál es la instrucción adecuada para nuestro propósito.

Manual de PHP: MySQL
De Foros del Web
Saltar a navegación, buscar
Contenido
[ocultar]
• 1 Videotutorial
• 2 Conectar y desconectar al servidor
• 3 Seleccionar la base de datos
• 4 Realizar consultas
• 5 Procedimientos más comunes
o 5.1 SELECT: Obtener los datos
 5.1.1 Leer los datos devueltos
 5.1.2 Calcular el número de filas
 5.1.3 Obtener un dato específico
 5.1.4 Liberando la memoria
o 5.2 INSERT: Insertar datos
o 5.3 UPDATE: Modificar registros
o 5.4 DELETE: Borrar registros


Como mencionamos al hablar de bases de datos, MySQL es el gestor de bases de datos más difundido y quizás el más usado. PHP dispone de un amplio grupo de funciones para interactuar con este motor, haciendo que el manejo de la información almacenada en la base de datos desde un script PHP sea muy fácil.
Ya mencionamos que para poder enviarle instrucciones al servidor MySQL tenemos que hacerlo en su propio lenguaje, el lenguaje SQL. Conforme vayamos desarrollando cada sección iremos viendo la sintaxis básica de las sentencias SQL más usadas.

Videotutorial
A continuación puedes ver un video con un ejemplo de como conectarse a una base de datos de mySQL y extraer información, el video está basado en los ejemplos y la documentación que leerás en esta misma página.
Conectar y desconectar al servidor
Antes de ejecutar cualquier consulta SQL debemos primero abrir una conexión con el servidor MySQL. Para ello disponemos de la función mysql_connect(). Para abrir una conexión debemos contar con la dirección del servidor MySQL (proporcionada por el proveedor de hosting, o en su defecto localhost), un nombre de usuario y una contraseña, los cuáles pasaremos como parámetros a esta función.
$servidor = 'localhost';
$usuario = 'root';
$clave = 'abcdef';

mysql_connect($servidor, $usuario, $clave);
Luego de hacer esto tendremos una conexión abierta con nuestro servidor MySQL, y podemos ahora trabajar sobre ella.
Ocasionalmente necesitaremos conectarnos a dos o más servidores simultáneamente (de hecho son casos muy excepcionales). Para poder lograrlo debemos trabajar también con recursos de conexión. Un recurso es, en términos simples, una variable que lleva consigo la llave de determinado proceso. La función mysql_connect() genera un recurso de conexión, llamado identificador de enlace, que lleva consigo la conexión abierta con el servidor MySQL. Podemos usar ese recurso para hacer referencia a esa conexión de forma específica. Para obtenerlo basta con asignar la función vista a una variable que se convertirá en el recurso para esa conexión:
$conexion = mysql_connect($servidor, $usuario, $clave);
Como casi nunca tendremos que abrir varias conexiones simultáneas, no tocaremos más el tema de los identificadores de enlace. Sólo tienes que saber que están ahí.
También disponemos de mysql_close(), una función destinada a cortar la conexión abierta con el servidor MySQL. Antiguamente se sugería siempre cerrar la conexión con el servidor MySQL al terminar de ejecutar todas las consultas SQL, argumentando que se liberaba la memoria usada por ésta en el servidor; pero ahora se sugiere dejarla abierta, ya que al terminar la ejecución del script todas las conexiones abiertas son cerradas automáticamente; además, si por alguna razón se necesita volver a consultar a la base de datos tendremos que abrir nuevamente la conexión, y eso sí genera una carga totalmente innecesaria al servidor. Por lo tanto, el uso de mysql_close() debe quedar reservado exclusivamente para aquellos casos en los que se requiera procesar una gran cantidad de información tras ejecutar las consultas SQL.
En general, nunca cerraremos la conexión con el servidor MySQL; bastará con indicar entonces que para hacerlo basta con llamar a esa función:
mysql_close();
Seleccionar la base de datos
Una vez que tenems abierta la conexión con el servidor MySQL debemos seleccionar nuestra base de datos. Aclaremos que el servidor MySQL no es lo mismo que la base de datos. Un servidor contiene numerosas bases de datos, nosotros podemos crear nuevas bases de datos o borrar alguna del servidor. Por lo tanto, es imprescindible indicarle al script y al servidor sobre qué base de datos vamos a trabajar. Para realizarlo, usamos la función mysql_select_db(), a la cuál pasaremos como parámetro el nombre de nuestra base de datos.
mysql_select_db('base_de_datos');
Una vez seleccionada la base de datos, podemos empezar a ejecutar consultas SQL.
Realizar consultas
Como ya hemos venido diciendo, las consultas SQL, o también conocidas por su nombre en inglés como queries, son instrucciones que le enviamos al servidor MySQL para que ejecute determinada tarea. Una consulta, en términos prácticos, no es más que una cadena de texto. Para ejecutar la consulta debemos usar la función mysql_query() pasándole como parámetro la cadena de texto que contiene la consulta SQL. Al llamarla así, estaremos haciendo una consulta a la base de datos. Al igual que mysql_connect(), esta función también crea un recurso, el cuál no será útil después paratrabajar en base a la consulta que hemos realizado. Veamos un ejemplo de todo lo visto hasta ahora:
mysql_connect('localhost', 'admin', '');
mysql_select_db('mi_base_de_datos');

$query = mysql_query('SELECT * FROM tabla');
Al realizar la consulta, tenemos el recurso $query que podremos usar luego para leer los datos devueltos por la consulta o trabajar sobre ella.
NOTA: es muy frecuente ver que muchos intentan usar el recurso devuelto por mysql_query() como si fuese el resultado en sí de la consulta. Debemos aclarar que por sí sólo este recurso no representa nada, no se puede imprimir ni se puede emplear directamente, sino a través de otras funciones que veremos en las siguientes secciones.
Procedimientos más comunes
En esta sección vamos a revisar las tareas más frecuentemente usadas al trabajar con bases de datos. Para hacerlo, pensemos que tenemos una base de datos llamada "principal" y una tabla en ella llamada "comentarios" que tiene la siguiente estructura:
* id → almacena el identificador de cada registro, es un campo autoincrementable, esto quiere decir que para cada registro el valor de este campo se incrementa en 1.
* nombre → el nombre de la persona que envía el comentario
* email → la dirección de correo de la persona que envía el comentario
* comentario → el comentario del usuario
* estado → el estado actual del comentario (publicado, eliminado o spam)

No profundizaremos en el código SQL usado para crear la bases de datos o esa tabla en ella, pues no es algo que vayamos a realizar rutinariamente en nuestros scripts. Además existen aplicaciones como PHPMyAdmin que van a facilitar estas tareas. Basta con indicar que las consultas SQL son estas:
Crear la base de datos
CREATE DATABASE 'principal';
Crear la tabla comentarios
CREATE TABLE `comentarios` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nombre` CHAR( 75 ) NOT NULL ,
`email` CHAR( 75 ) NOT NULL ,
`comentario` LONGTEXT NOT NULL ,
`estado` CHAR( 20 ) NOT NULL
)
Si realmente deseas profundizar en el tema del lenguaje SQL puedes leer el manual de SQL en Maestros del Web.
Vamos a revisar los procedimientos más comunes al hablar de bases de datos, los cuáles son:
• SELECT: Obtener los datos existentes
• INSERT: Insertar nuevos datos
• UPDATE: Actualizar los datos existentes
• DELETE: Eliminar datos existentes
SELECT: Obtener los datos
La primera tarea que vamos a ver es la extracción de datos de una base de datos. La sentencia SQL que usaremos es SELECT. Nos permite seleccionar los datos de una tabla específica en nuestra base de datos. La sintaxis básica de una consulta tipo SELECT es:
SELECT campo1, campo2, ... FROM tabla
Veamos un ejemplo sencillo:
// La consulta SQL
$sql = "SELECT nombre, email FROM comentarios";

$query = mysql_query($sql);
Con esta consulta le estamos pidiendo al servidor MySQL que nos envíe el nombre y email de todos los registros en la tabla comentarios. Si quisiéramos todos los datos, en vez de colocar uno a uno los nombres de los campos podemos usar un asterisco (*) para hacer referencia a todas las columnas de la tabla.
Podemos hacer la consulta un poco más específica, para ello hacemos uso de las claúsulas disponibles para esta sentencia. Una claúsula actúa igual que un parámetro para los tags HTML. Veamos las más comunes:
• WHERE: Actúa como un filtro en la consulta SQL, haciendo que ésta devuelva sólo los campos que cumplan con los criterios allí establecidos (WHERE campo1 = 'valor1' AND campo2 = 'valor2'). Lo más común es hacer comparaciones, donde comparamos el valor de un campo con un valor guía.
• LIMIT: Define cuántos registros queremos que nos devuelva la consulta SQL y desde dónde debe empezar a extraer (LIMIT registro_inicial, número_de_registros). El primer registro en nuestro resultado va a ser el registro cero (0), por lo que si queremos extraer 3 registros a partir del segundo deberemos poner LIMIT 1, 3
• ORDER BY: Ordena los resultados en base a una columna (ORDER BY campo ASC/DESC). Por ejemplo, si queremos ordenar en orden alfabético (ascendente) en base al campo nombre, pondremos ORDER BY nombre ASC
Veamos la nueva consulta, pero esta vez más específica:
// La consulta SQL
$sql = "SELECT * FROM comentarios WHERE estado = 'spam' ORDER BY id DESC LIMIT 0, 3";

$query = mysql_query($sql);
Si despedazamos la consulta, veremos que le estamos pidiendo al servidor MySQL que nos devuelva todos los campos (SELECT *) de los registros de la tabla 'comentarios' (FROM comentarios) cuyo estado es 'spam' (WHERE estado = 'spam'), pero ordenándolos en orden descendente en base al valor del campo 'id' (ORDER BY id DESC) y que sólo nos dé 3 registros empezando por el primero (LIMIT 0, 3).
Hecha la consulta hemos obtenido un recurso, y lo hemos guardado en la variable $query. Ahora podemos trabajar sobre esa consulta haciendo referencia a esa variable.
Leer los datos devueltos
Como dijimos anteriormente, un recurso no puede ser usado directamente para imprimir los resultados, sino que debe asociarse a una función según lo que queremos realizar. Empezaremos explicando cómo leer los registros que coincidieron con nuestra consulta. Para hacer ello, PHP tiene la función mysql_fetch_assoc(), la cuál genera un arreglo que contiene como índices los nombres de los campos (array asociativo), cada uno con su valor correspondiente, para cada registro que devolvió nuestra consulta.
En cada llamada a esta función se devuelve un fila o registro, por lo que, para leer todos los registros debemos llamar la función tantas veces como filas haya devuelto nuestra consulta. Es por ello que, para leer las filas de una consulta SQL, se usa generalmente un ciclo while, basándonos en el principio de que, al terminar de leer todas las filas y volver a llamar a la función mysql_fetch_assoc(), ésta devolverá false, lo cuál determiará el fin del ciclo.
Existen otras funciones similares, como mysql_fetch_row(), que devuelve los datos con índices numéricos (array numérico); mysql_fetch_array(), que devuelve un array que es a la vez asociativo y numérico (array mixto); y mysql_fetch_object(), que devuelve un objeto en vez de un array.
En el ejemplo anterior habíamos hecho la consulta SQL y ya teníamos el recurso $query para trabajar sobre esa consulta. Ahora veamos el código con el cuál recogemos las filas:
while($fila = mysql_fetch_assoc($query)) {
echo 'El comentario #' . $fila['id'] . ' escrito por ' . $fila['nombre'] . ' ( ' . $fila['email'] . ') es spam<br>';
}
Si te fijas en el ejemplo, en cada ciclo creamos un array $fila que contiene los datos de la fila correspondiente a ese ciclo. Como estamos usando mysql_fetch_assoc(), obtenemos un array asociativo, esto quiere decir que los índices del array son los nombres de los campos de la tabla en la base de datos. Usando la tabla que especificamos al inicio, con esta consulta obtendremos lo siguiente:
El comentario #9 escrito por Brenda ([email protected]) es spam
El comentario #6 escrito por María ([email protected]) es spam
El comentario #5 escrito por Miguel ([email protected]) es spam
Es importante que notes que, en la condición del while no hacemos una comparación (== ó ===), sino una asignación (=). En la práctica, la asignación $variable = false devuelve en su conjunto false, y como ya mencionamos, al llegar al final de los resultados la función mysql_fetch_assoc() devuelve false. Por eso es que el ciclo funciona.
Calcular el número de filas
Muchas veces queremos saber cuántas filas ha devuelto nuestra consulta. Para hacerlo tenemos a nuestra disposición la función mysql_num_rows(), que nos dirá este valor:
.
$total = mysql_num_rows($query);

if($total == 0) {
echo 'La consulta no devolvió ningún resultado';
} else {
echo 'La consulta devolvió ' . $total . '$filas';
// Podemos mostrar aqui los resultados (while...)
}
Obtener un dato específico
Mencionemos también que podemos obtener el dato de un campo dentro de un registro o fila específico. Para eso usamos la función mysql_result(). La sintaxis básica es:
mysql_result(recurso, fila, campo);
El recurso es el resultado devuelto por la llamada a mysql_query(), la fila es el número de fila que queremos extraer (Recordemos que la primera fila es cero!), y como parámetro opcional campo debemos indicar el nombre o número del campo deseado si en nuestra consulta solicitamos más de una columna.
Veamos algunos ejemplos tomando como base el ejemplo anterior:
echo mysql_result($query, 0, 'nombre'); // Imprime: Brenda
echo mysql_result($query, 1, 'email'); // Imprime: [email protected]
echo mysql_result($query, 2); // Imprime: 5 (No escribir el campo hace que se tome el valor del primer campo, en este caso id)
echo mysql_result($query, 0, 2); // Imprime: [email protected] (El campo #2 es 'email' {tercer campo})
Liberando la memoria
Podemos usar mysql_free_result() para liberar la memoria usada por la consulta SELECT actual. Sin embargo, no es necesario hacerlo a menos que estemos trabajando con un montón muy grande (demasiado grande) de datos.
mysql_free_result($query)
INSERT: Insertar datos
Para insertar datos podemos usar la sentencia INSERT. Esta sentencia tiene dos sintaxis básicas, de las cuáles la primera es la más usada y conocida:
INSERT INTO tabla (campo1, campo2, ...) VALUES ('valor1', 'valor2', ...)
INSERT INTO tabla SET campo1 = 'valor1', campo2 = 'valor2', ...
El siguiente ejemplo muestra cómo podríamos insertar nuevos datos a nuestra tabla de ejemplo:

$sql = "INSERT INTO comentarios (nombre, email, comentario, estado) VALUES ('Álex', '[email protected]', 'Comentario de Álex', 'publicado')";

mysql_query($sql);
A diferencia de la sentencia SELECT, mysql_query() no retornará un recurso cuando se ejecuta una sentencia INSERT. En su lugar retornará el valor booleano true si la consulta se ejecutó con éxito, y false en el caso contrario.
Es posible agregar varias filas usando la misma consulta, sólo hay que separar los grupos VALUES con comas, de la siguiente forma:
$sql = "INSERT INTO comentarios (nombre, email, comentario, estado) VALUES
('Johanny', '[email protected]', 'Comentario de Johanny', 'publicado'),
('Mayra', '[email protected]', 'Comentario de Mayra', 'publicado'),
('Xiomara', '[email protected]', 'Comentario de Xiomara', 'publicado')
";

mysql_query($sql);
Podemos usar, adicionalmente, la función mysql_affected_rows() para saber cuántas filas se insertaron tras la ejecución de la consulta:
echo 'Se insertó ' . mysql_affected_rows() . ' nuevos registros';
Por último, podemos omitir el especificar los nombres de los campos de la tabla a la cuál queremos insertar los datos, pero en los grupos VALUES tendremos que implícitamente hacer referencia a ellos. Vale decir, el primer valor irá al primer campo, el segundo irá al segundo campo, y así sucesivamente:
$sql = "INSERT INTO comentarios VALUES (NULL, 'Patty', '[email protected]', 'Comentario de Patty', 'publicado')";
mysql_query($sql);
Nota que el valor NULL corresponde al campo id, y le asignamos un valor nulo porque al ser un campo auto_increment su valor va aumentando automáticamente al crear nuevos registros.
UPDATE: Modificar registros
Para actualizar registros en la base de datos hacemos uso de la sentencia UPDATE. Su sintaxis básica es:
UPDATE tabla SET campo1 = 'valor1', campo2 = 'valor2', ... WHERE campoA = 'valorA' AND campoB = 'valorB' AND ...
En este caso definimos una claúsula WHERE para indicarle al servidor qué filas son las que deseamos modificar. Puede ser una única fila, o múltiples filas, siempre que cumplan con los criterios establecidos.
$sql = "UPDATE comentarios SET comentario = 'Este comentario ha sido marcado como spam' WHERE estado = 'spam'";
mysql_query($sql);
En este ejemplo vamos a modificar el valor del campo comentario de nuestra tabla para todos los registros cuyo campo estado tenga como valor spam, y les vamos a asignar el valor textual 'Este comentario ha sido marcado como spam'. Al iguul que en el caso de INSERT, la función mysql_query() no retorna un recurso, sino un valor booleano. Y también aquí podemos usar la función mysql_affected_rows() para obtener el número de filas modificadas por la consulta. En nuestro ejemplo:
echo 'Se han modificado ' . mysql_affected_rows() . ' filas';
Y en este caso nos diría que se han modificado 3 (las 3 que tienen como estado spam).
DELETE: Borrar registros
Finalmente, la última sentencia que vamos a ver es la sentencia DELETE. Su sintaxis es:
DELETE FROM tabla WHERE campo1 = 'valor1' AND campo2 = 'valor2' AND ...
Y también aquí podemos usar la función mysql_affected_rows() para determinar el número de filas eliminadas de la tabla con la ejecución de la consulta. Ejemplo:
$sql = "DELETE FROM comentarios WHERE estado = 'eliminado'";
mysql_query($sql);

echo 'Se han eliminado ' . mysql_affected_rows() . ' registros';
Con este ejemplo, estamos eliminando de la tabla comentarios todas las filas cuyo campo estado tenga el valor de eliminado, que en total son 3 filas.


Como has visto a lo largo de este manual, desde PHP podemos controlar todos los datos existentes en nuestra base de datos. Usando formularios y tomando los datos introducidos podemos crear muchas aplicaciones dinámicas, como blogs, sistemas de comentarios, o sistemas de noticias. Las 4 sentencias vistas son las sentencias básicas del lenguaje SQL, pero hay muchas más que hacen más sencillo todavía el trabajar con bases de datos. Te invito a que investigues y leas un poco sobre todas ellas.

PHP: Instrucciones para agregar una pregunta al FAQ de PHP
En este pequeño tutorial van los pasos para incluir registros de las FAQ's de forosdelweb.com en este WIKI.
1. Iniciar sesión en el wiki (Para editar en el wiki es necesario ingresar con nombre y usuario de forosdelweb.com)
2. Agregamos una nueva página al Wiki. Para ello, solo hace falta escribir la pregunta como parte del URL en nuestro navegador. Por ejemplo:
http://www.forosdelweb.com/wiki/PHP: Titulo de la nueva pregunta
Esto nos llevará a la generación de un nuevo registro del Wiki. Nótese que hemos utilizado "PHP:" para organizar el conjunto de preguntas bajo el tema PHP.
3. Llegaremos a un registro no existente con la siguiente leyenda: En este momento no hay texto en esta página, puedes buscar por el título de esta página en otras páginas o editar esta página.. Allí debemos ir a la opción de editar en la parte superior.
4. El título ya quedará registrado y solo hace falta incluir la información de la pregunta y respuesta. En caso de que incluyamos código, favor de incluirlo con los tags de
<php>
< /php>
lo que resaltará y coloreará el código.
5. Para incluir el crédito de forma vistosa, podemos firmar la entrada con nuestro nombre de usuario y la fecha:
----
-- [http://www.forosdelweb.com/miembros/usuario/ Usuario] 12 Feb 2009
6. También debemos asegurarnos de incluir las categorías de PHP, FAQs y la plantilla del pie de página:

[[CategoryHP]]
[[CategoryAQ]]
7. El último paso consiste en incluir la pregunta en el índice del FAQ de PHP. Para ello podemos editar esta página e incluirla dentro de la categoría correspondiente.

Manual de PHP: Cookies
Las Cookies o Galletas son pequeños archivos que se guardan en la computadora del usuario o visitante de un sitio en donde se almacena o lee información del navegador para poder identificarlo.
En PHP se pueden crear cookies mediante la función
setcookie()
Los valores almacenados en las cookies se convertirán automáticamente en variables que luego podremos leer y a las cuales podemos asignar distintos valores en nuestro programa.
Sintaxis y Ejemplos
• Para asignar un valor a una cookie utilizamos el siguiente código
.
setcookie("nombre",valor,expiración);

Nota: Para asignar valores a una cookie, no se deben haber enviado ninguna cabecera previamente.
• Generando una Cookie que funcione en www.dominio.com / dominio.com / sub.dominio.com
<?php
//observad la "/" que sirve para llamar directamente al nombre de dominio
//y no a una subcarpeta. Si no lo pusiéramos la cookie se llamaría:
//midominio.com.midominio.com.
//el "0" sirve para indicar si es 1 solo se envia la cookie por HTTPS, si es 0 por HTTP y HTTPS
setcookie("micookie", "valor", time()+10000, "/", ".midominio.com", 0);
?>

Argumentos en una Cookie
• Name (Nombre)
• Value (Valor)
• Expire (Tiempo de Expiración)
• Path (Ruta)
• Domain (Dominio)
• Secure (https)
Leyendo valores almacenados en una cookie
Para poder leer un valor que esté dentro de una cookie utilizamos $_COOKIE
$_COOKIE["nombre"];
Manual de PHP: Sesiones
Cuando un usuario visita una aplicación o sitio Web programado en PHP regularmente navega en distintas partes y páginas del sitio las cuales pueden tener relación entre ellas, por ejemplo si tenemos una tienda en línea queremos saber cuando un usuario ingresa, naevga por los productos y al final se registra y agrega productos al carrito de compras.
El reto es identificar a ese usuario como único en toda la aplicación y verificar en cada página que visita qué privilegios tiene o qué configuraciones ha modificado para presentarle la información correcta, para esto utilizamos lo que se llaman Sesiones (Sessions).

Contenido
[ocultar]
• 1 Cómo funcionan las sesiones
• 2 Duración de las sesiones
• 3 Funciones para el manejo de sesiones
• 4 Ejemplos

Cómo funcionan las sesiones
Y sabemos que con PHP podemos enviar variables a través de las URLs tal como hemos visto en los formularios, pero tendríamos que estar enviando esta información constantemente a través de todas las URLs o páginas que visite el usuario, y por otro lado también podemos leer y almacenardatos en las cookies sin embargo el soporte de éstas no está activada en todos los navegadores o algunos usuarios las desactivan, por eso utilizamos las Sesiones.
Lo que hacemos es asignar un identificador único a cada usuario que nos visita y guardar ciertos valores que vamos a utilizar durante toda su visita para acceder a ellos en cualquier momento que los necesitemos sin necesidad de estar declarándolos en cada página que ingrese.

Duración de las sesiones
Las sesiones se inician o abren cuando un usuario visita un sitio, permanece activa durante toda esa visita y se cierra al cerrar la ventana o pestaña del navegador con dicho sitio.

Funciones para el manejo de sesiones
• session_start — Inicializar los datos de una sesión
• session_destroy — Destruye todos los datos guardados en una sesión
• session_register(nombre) — Registrar una o más variables globales con la sesión actual
• session_unregister(nombre) — Desregistrar una variable de la sesión actual
• session_is_registered(nombre) — Comprueba si una variable está registrada en la sesión

• session_cache_expire — Devuelve la caducidad actual del caché
• session_cache_limiter — Lee y/o cambia el limitador del caché actual
• session_commit — Alias of session_write_close
• session_decode — Decodifica los datos de una sesión a partir de una cadena
• session_encode — Codifica los datos de la sesión actual en una cadena
• session_get_cookie_params — Obtiene los parámetros de la cookie de la sesión
• session_id — Lee y/o cambia el session id actual
• session_is_registered — Comprueba si una variable está registrada en la sesión
• session_module_name — Lee y/o cambia el módulo de la sesión actual
• session_name — Lee y/o cambia el nombre de la sesión actual
• session_regenerate_id — Actualizar el id de sesión actual con una recién generada
• session_save_path — Lee y/o cambia la ruta donde se guardan los datos de la sesión actual
• session_set_cookie_params — Cambia los parámetros de la cookie de la sesión
• session_set_save_handler — Establece unas funciones para el almacenamiento de los datos de la sesión a nivel de usuario
• session_unset — Elimina todas las variables de la sesión
• session_write_close — Escribe los datos de la sesión y la finaliza

Ejemplos
• Cómo Guardar y leer variables en una sesión
• Código de ejemplo para autenticarse en un sitio utilizando Sesiones en PHP
Manual de PHP: Subiendo archivos al servidor con PHP
PHP tiene un par de funciones muy simples para que un visitante, pueda mandarnos un archivo desde su computadora, y nosotros podamos guardarlo en el servidor, en el lugar y con el nombre que queramos.
Para eso, crearemos 2 archivos, uno será un formulario HTML, donde el usuario tendrá el campo para poder subir el archivo, y otro archivo, PHP, que tomara ese archivo y lo colocara en nuestro servidor.
Entonces, los archivos serán:
Formulario_Subida.html
<HTML>
<HEAD>
<TITLE>
YO SUBO EL ARCHIVO
</TITLE>
</HEAD>
<BODY>
<FORM action="GuardarArchivo.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="5120">
Subir este archivo: <br><br>
<input name="userfile" type="file"><br><br><br>
<input type="submit" value="Subir">
</FORM>
</BODY>
</HTML>
En este archivo solo tenemos 3 cosas para destacar:
La primera, es que si se va a utilizar un campo de subida de archivos, el Form debe tener el método enctype con el valor multipart/form-data. Esto es necesario par que funcione.
La segunda es el <TAG> de tipo hidden con el nombre “MAX_FILE_SIZE” que le dice al navegador el tamaño máximo del archivo a subir. Este método de control no es muy seguro ya que se puede saltear, y además depende del navegador si es tomado en cuenta o no.
La tercera es el <TAG> de tipo “file”, el cual me muestra el campo con el botón examinar, para poder seleccionar el archivo a subir. Este campo no tiene por defecto, una forma de mejorar su aspecto, o el nombre del botón. Pero se puede lograr usando CSS.
Guardar_Archivo.php
<?

$nombre = $_FILES['userfile']['name']; //nombre con el que lo subió el usuario
$tipo = $_FILES['userfile']['type']; //tipo de archivo (jpg,gif,rar,txt,etc)
$tamano = $_FILES['userfile']['size']; //tamaño del archivo en Kb; 1024Kb = 1Mb
$error = $_FILES['userfile']['error']; //si apareció algún error en la subida
$nombre_temporal = $_FILES['userfile']['tmp_name']; //Nombre temporal que se le asigna al archivo cuando sube a tu servidor

$nuevo_nombre = 'EL Archivo'

//Reviso que el archivo sea del tipo ZIP o RAR; y que pese menos de 5Mb
if (!((strpos($tipo, "rar" || strpos($tipo, "zip") && ($tamano_archivo < 5120))) {
echo "El tipo de archivo o el tamaño no es correcto.";
}else{
//Verifico que pueda mover el archivo y cambiarle el nombre. El archivo se guardará donde esta la pagina
if (move_uploaded_file(FILES['userfile']['tmp_name'], $nuevo_nombre)){
echo "El archivo subió!!.";
}else{
echo "Error al subir el archivo. Inténtelo nuevamente.";
}
}
?>
Este es el archivo php que hace todo el trabajo.
Aunque casi todo el código esta comentado, explicaremos cada línea del código.
$_FILES = $HTTP_POST_FILES
Es una variable global, propia de PHP que obtiene todos los datos.
Esta variable esta disponible desde la versión 4.1.0, las versiones anteriores deben usar $HTTP_POST_FILES.
Para obtener estos datos le pasamos el nombre del campo (en este caso, “userfile”), que es de tipo “file”, que colocamos en el formulario de la pagina HTML.
Datos que contiene la variable:
$_FILES ['userfile'][ 'name'] Devuelve el nombre del archivo
$_FILES['userfile']['type'] Devuelve el tipo de archivo
$_FILES['userfile']['size'] Devuelve el tamaño del archivo en Kb
$_FILES['userfile']['tmp_name'] Devuelve el nombre con el que se guardo temporalmente
$_FILES['userfile']['error'] Devuelve distinto de 0 si tuvo algún error (ver la lista de errores en http://www.php.net/manual/en/features.file-upload.errors.php)
$nuevo_nombre Es una variable a la cual le asigno el valor que quiero como nombre de archivo
strpos(EnCadena, BuscarPalabra) Podríamos decir que busca una cadena de string, en otra cadena de string. No es así como funciona exactamente pero para este ejemplo no es necesario entrar en más detalles.
move_uploaded_file(NombreArchivo, Destino)
Esta es una función de PHP que, pasándole el nombre de un archivo, lo mueve al destino que se le indique.
En nuestro caso, le pasamos el nombre temporal del archivo que subimos, y le asignamos un nuevo nombre.
Al no ponerle ningún destino mas que el nombre, el destino del mismo será en la misma carpeta donde esta puesto nuestro PHP.
Verificar siempre, que la carpeta destino donde queremos mandar el archivo, tenga los permisos de escritura, de lo contrario, nos devolverá un error.
También puedes crear una pagina PHP con un poco mas de controles, y por supuesto, siempre puedes ir mejorándola.
Aca tienes un ejemplo:
Guardar_Archivo_Avz.php
(chequear código…)
<?
//verifico que el archivo llego al servidor
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {

$nombre = $_FILES['userfile']['name']; con el que lo subió el usuario
$tipo = $_FILES['userfile']['type']; //tipo de archivo (jpg,g if,rar,txt ,etc)
$tamanio = $_FILES['userfile']['size']; //tamaño del archivo en Kb; 1024Kb = 1Mb
$error = $_FILES['userfile']['error']; //si aparecio algun error en la subida$nombre_temporal = $_FILES['userfile']['tmp_name']; //Nombre temporal que se le asigna al archivo cuando sube a tu servidor

$carpeta = 'archivos/';
$nuevo_nombre = 'Archivo_Subido'.date('Y-m-d H:i:s'); //le concatene la fecha del momento para que no se repita el nombre

//Verifico que el nombre no este vacio
if(!empty($nombre)) {

//Verifico que no tenga ningun error
if($error==0){

//Reviso que el achivo sea del tipo ZIP o RAR;
if (strpos($tipo, "rar" || strpos($tipo, "zip") {

//Reviso que el archivo pese menos de 5 Mb;
if ($tamanio_archivo < 5120) {

//Verifico que pueda mover el archivo y cambiarle el nombre.
//El archivo se guradara donde esta esta pagina
if (move_uploaded_file(FILES['userfile']['tmp_name'], $nuevo_nombre)){

echo "El archivo subio.";
}
else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
else{
echo "Error con el archivo. <br> El archivo pesa mas de 5Mb";
}
}
else{
echo "Error con el archivo. <br> El archivo no es ni del tipo zip ni rar";
}
else{
echo "Error con el archivo. <br> El archivotiene un error en la subida";
}
}
else{
echo "Error con el archivo. <br> El archivo no tiene nombre";
}
}
else{
echo "El archivo no subio correctamente";
}
?>
<php>

(FIN DEL CURSO)
Datos archivados del Taringa! original
10puntos
1,702visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
cela_59🇦🇷
Usuario
Puntos0
Posts3
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.