Académique Documents
Professionnel Documents
Culture Documents
Una pgina de envo gratuito de postales nos ha parecido un ejemplo tpico de sitio web en el que se pueden poner de manifiesto muchas de las utilidades del trabajo en pginas dinmicas. Imaginaos por un momento un sitio web de postales gestionado nicamente por HTML... tcnicamente imposible. En esta aplicacin, el visitante tendr acceso al sitio, elegir el dibujo para su postal y rellenar un formulario para su envo. A continuacin podr ver, corregir y enviar su postal. Un e-mail ser enviado al destinatario para avisarle de la existencia de su postal en el cual figurar un enlace a la URL donde podr visualizarla. Este servicio postal consta de una pequea base de datos entre bastidores que almacena, por un lado, las imgenes y las cataloga por tipo (Cumpleaos, San Valentn y Navidad) y por otro, las diferentes postales enviadas por el internauta definidas por los diferentes parmetros necesarios para su correcta recepcin. La aplicacin consta de los siguientes scripts: index.php Es la pgina de entrada. A partir de ella accederemos al tipo de postal que buscamos. verpostales.php Se encarga de llamar a la base de datos para pedir las imgenes correspondientes al tipo de postal elegida y plasmarlas en la pgina. formulario.php Aqu introducimos los datos para el correcto envo de la tarjeta. enviopostal.php Su cometido es el de componer la postal con la imagen elegida y los datos del formulario e imprimirla. Tambin se encarga de gestionar el envo del e-mail al destinatario y almacenar en la base los datos correspondientes a dicho envo. leepostal.php Mostrara al destinatario la postal haciendo una llamada a la base y recogiendo los datos previamente almacenados por el script enviopostal.php El funcionamiento de la aplicacin puede ser visto continuamente en lnea desde cualquiera de los captulos pinchando sobre el enlace ir a la aplicacin. Recordamos que los scripts, imgenes y archivo para la creacin de la base de datos pueden ser directamente descargados. El funcionamiento de esta aplicacin sido deliberadamente simplificado en todos los sentidos por varias razones obvias, sobre todo buscando en esta simplicidad una ms fcil comprensin de los aspectos primordiales. Esto no nos impedir de, en determinados puntos, hacer hincapi sobre algunas mejoras que podran realizarse. La aplicacin puede ser seguida en todo momento a partir de cualquier capitulo pinchando sobre el siguiente enlace: Ir a la aplicacin
Create Table postal ( id_postal int(5), texto varchar(255), email_destinatario varchar(50), nombre_destinatario varchar(50), email_remitente varchar(50), nombre_remitente varchar(50), id_imagen int(2), avisar char(7) );
Para una aplicacin ms compleja deberamos definir adems las claves y considerar ms detenidamente el tipo de campo a definir. Aconsejamos leer los captulos del tutorial de SQL donde podris consejos para mejorar las prestaciones de las tablas. 3.-Relleno de la tabla imagenes con los grficos de muestra Para rellenar rpidamente la tabla en un primer momento, sin necesidad de recurrir a sentencias SQL tipo Insert, podemos crear un archivo de texto con los registros separados por lneas y los valores de campo, puestos en el buen orden, separados por tabuladores. En el pack de descarga encontraris el archivo texto imagenes ya preparado. Lo nico que tenis que hacer es colocar el archivo en el directorio bin de MySQL y ejecutar la siguiente orden en la base de datos:
<? //Incluimos la libreria de funciones include("funciones.php"); //Creamos el encabezado HTML html_encabezado("Servicio de postales de DesarrolloWeb","Servicio de postales gratuitas para todo tipo de felicitaciones","postal, navidad, san valentin, cumpleaos, felicitacion") ?> <div align="center"> <font color="#9933ff">Bienvenido al servicio de postales de DesarrolloWeb</font><br> Por favor, selecciona el tipo de postal que deseas buscar <br><br> <img src="clipart_office_mail_155.gif" width="117" height="135" border="0" alt=""> <br> <br> <a href="verpostales.php?tipo=sanvalentin">San Valentn</a> <a href="verpostales.php?tipo=cumple">Cumpleaos</a> <a href="verpostales.php?tipo=navidad">Navidad</a><br> <a href="verpostales.php?tipo=todas">Todas</a> </div> </body> </html>
Puede verse que el script tiene dos partes fundamentales: Un primer cdigo PHP que llama a un archivo ("funciones.php") y a una funcin (html_encabezado) seguido de un fragmento de HTML con un mensaje de bienvenida y unos enlaces que apuntan a las diversas temticas de las postales. El archivo al que se hace la llamada contiene un conjunto de funciones que sern utilizadas por otras pginas de la aplicacin. Dentro de esta librera tenemos tres funciones, una de ellas llamada en este script que, como veremos, sirve para crear el principio del documento HTML con su ttulo y etiquetas META generados. En la parte HTML del listado podemos observar como han sido definidos los enlaces a las distintas categoras de postales:
<a href="verpostales.php?tipo=categoria">Categora</a>
Como veis estamos pasando la variable tipo por URL hacia la pgina verpostales que podr a su vez explotarla como sea necesario.
Creamos una pgina que muestra las postales posibles para elegir dentro de una categora.
<? //Incluimos la libreria de funciones include("funciones.php"); //Creamos el encabezado HTML html_encabezado("Servicio de postales de DesarrolloWeb","Servicio de postales gratuitas para todo tipo de felicitaciones","postal, navidad, san valentin, cumpleaos, felicitacion"); ?> <table align="center" border="0" cellpadding="2" cellspacing="0" bgcolor="White"> <tr> <td align="center" colspan="4" bgcolor="#ccff00"><font color="#9933ff">Te presentamos nuestras postales</font></td> </tr> <? //$tipo ha sido tranferida por URL //Genero la sentencia SQL distinta si queremos ver todas las postales if ($tipo!="todas") $ssql="Select * From imagenes Where tipo like '".$tipo."%'"; else $ssql="Select * From imagenes"; //Conectamos a la BD $connectid=mysql_conexion(); //Ejecutamos sentencia SQL y recogemos resultado en damefila $resultid = mysql_db_query("postal",$ssql); $damefila=mysql_fetch_array($resultid); //Creamos las celdas con las imagenes/enlace while ($damefila) { $i=1;//i es el numero de columnas de la tabla echo "<tr>\n"; while ($i<=4 and $damefila) { echo '<td><a href="formulario.php?id='.$damefila["id_imagen"].'"><img src="imagenes/'.$damefila["id_imagen"].".gif\" border=\"0\"></a></td>\n"; ++$i; $damefila=mysql_fetch_array($resultid); } echo "</tr>\n"; } ?> <tr> <td align="center" colspan="4" bgcolor="#ccff00">Haz click sobre la tarjeta que te guste para enviarla</td>
SISTEMA DE ENVIOS DE POSTALES CON PHP </tr> </table> <? //Liberamos la memoria de consulta mysql_free_result($resultid); //Generamos enlace hacia atras y cierre de documento html_pie_volver($HTTP_REFERER) ?>
Puede verse como la forma de empezar el script coincide con la vista anteriormente : Incluimos la librera de funciones y llamamos a la funcin que crea el encabezado HTML. El paso siguiente es evaluar, mediante un condicional if, si la categora elegida es una cualquiera o, por el contrario, queremos verlas todas. El tipo de sentencia SQL con la que interrogaremos a la BD cambia en funcin de ello. Una vez elegida la sentencia SQL apropiada realizamos la llamada a la funcin mysql_conexion() creada por nosotros mismos que nos conecta con la base de datos para, a continuacin, ejecutar la sentencia y recoger los datos del primer registro en forma de variable array. Es en este punto que tenemos el plato fuerte del script: Dos bucles while anidados que nos permiten recrear una tabla en la que emplazamos en cada celda una imagen que enlaza al script siguiente y que pasa por URL el identificador de la imagen en cuestin. El recorrido de los bucles es el siguiente: 1.-Nos colocamos en la primera columna de la fila ($i=1;) y creamos la etiqueta <tr> 2.-Entramos en el bucle que genera las celdas y que se finalizara cuando no haya ms registros o se llegue al numero mximo de columnas definido arbitrariamente. 3.-Creamos la celda que aloja la imagen definida para este registro junto con el enlace que envia por URL el identificador de la imagen. 4.-Nos colocamos en la columna siguiente y pedimos el siguiente registro 5.-Repetimos 3 y 4 hasta llenar una lnea o acabar los registros. 6.-Cerramos la etiqueta <tr> y volvemos a 1 salvo si los registros se han acabado. Para comprender este bucle, nada mejor que ver el cdigo fuente generado por el navegador al ejecutar el script. La parte final del script se encarga de liberar la memoria ocupada por la consulta que hemos realizado y, a partir de la funcin html_pie_volver crear un enlace para volver a la pgina anterior sirvindose de la variable de sistema $HTTP_REFERER presentada en otro captulo.
<? function html_encabezado($titulo,$descripcion,$keywords) { //Genera un encabezado de HTML, rellena el titulo y las etiquetas META y define los estilos echo "<HTML>\n<HEAD>\n<TITLE>$titulo</TITLE> <meta name=\"description\" content=\"$descripcion\"> <meta name=\"keywords\" content=\"$keywords\"> <meta name=\"title\" content=\"$titulo\"></HEAD>\n <style type=\"text/css\"><!--A:link {text-decoration: none; color : #9933ff;} A:visited {text-decoration: none; color : #9933ff;} A:active {text-decoration: none} BODY { font-size : 11pt; font-family : comic sans ms,verdana,arial,helvetica; font-weight : bold; color : 0066ff; background-color : #ccff00; margin-left : 0px; margin-right : 0px; margin-top : 0px; margin-bottom : 0px; } TD { font-size : 11pt; font-weight : bold; font-family : comic sans ms,verdana,arial,helvetica; color : 0066ff; } --> </style> <body>\n"; } function html_pie_volver($volver) { //Genera el cierre del documento e introduce un enlace con direccion configurable y texto "Volver" echo "<div align=\"center\"><a href=\"$volver\">Volver</a></div> </body> </html>"; } function mysql_conexion() { //Crea una conexion a una base mysql y previene de un eventual fallo
SISTEMA DE ENVIOS DE POSTALES CON PHP //Conexion con la base $connectid = mysql_connect("localhost","",""); //Compruebo el exito de la conexion if (!$connectid) echo "Error en la conexin con la base de datos"; else return $connectid; } ?> Creamos un formulario dinmico por medio de cookies y variables de sesin
Las imgenes mostradas en verpostales apuntan hacia la pgina formulario.php de la cual os presentamos el listado a continuacin:
<? //Iniciamos la sesion en la pagina registrando variables_formulario session_register('variables_formulario'); //Si las variables_formulario no estan creadas las definimos vacias if (isset($variables_formulario)==0) { $i=0; while ($i<=6) { $variables_formulario[]=""; ++$i; } } //Incluimos la libreria de funciones include("funciones.php"); //Creamos el encabezado HTML html_encabezado("Servicio de postales de DesarrolloWeb","Servicio de postales gratuitas para todo tipo de felicitaciones","postal, navidad, san valentin, cumpleaos, felicitacion"); //Creamos el formulario, rellenamos los campos que conocemos con session y/o cookies //Enviamos un dato escondido: id_imagen ?> <table align="center" border="0" cellpadding="2" cellspacing="2"> <td colspan="2" align="center" style="celda1"><font color="#9933ff">Ten la amabilidad de rellenar el formulario</font></td> <form action="enviopostal.php" method="post"> <tr> <td align="center">Email destinatario<br><input type="Text" name="email_destino" size="20" maxlength="50" value="<? echo $variables_formulario[0]; ?>"></td> <td align="center">Nombre destinatario<br><input type="Text" name="nombre_destino" size="20" maxlength="50" value="<? echo $variables_formulario[1]; ?>"></td>
SISTEMA DE ENVIOS DE POSTALES CON PHP </tr> <tr> <td align="center">Email remitente<br><input type="Text" name="email_origen" size="20" maxlength="50" value=" <? if (isset($email)) echo $email; else echo $variables_formulario[2]; ?> "></td> <td align="center">Nombre remitente<br><input type="Text" name="nombre_origen" size="20" maxlength="50" value=" <? if (isset($nombre)) echo $nombre; else echo $variables_formulario[3]; ?> "><td> </tr> <tr> <td align="center" colspan="2"><input type="Checkbox" name="avisar" <? echo $variables_formulario[4]; ?>>Quiero ser avisado de la recepcin</td> </tr> <tr> <td align="center" colspan="2">Texto postal<BR><textarea name="texto" cols="40" rows="6"><? echo $variables_formulario[5]; ?></TEXTAREA></td> </tr> <tr> <td align="center" colspan="2"><input type="Submit" value="Enviar" name="enviar"> & & & <INPUT type="Submit" value="Ver postal" name="ver"></td> </tr> </table> <input type="Hidden" name="id_imagen" value="<? echo $id ?>"> </form> <? //Generamos enlace hacia atras y cierre de documento html_pie_volver("index.php") ?>
Es en esta pgina donde daremos por comenzada la sesin y lo haremos registrando una variable de tipo array que llamaremos variables_formulario cuyo contenido va a ser, obviamente, los datos introducidos en este formulario. El objeto de usar una variable de sesin para conservar los valores del formulario en otras pginas es de ndole prctico: Queremos que, si el internauta vuelve hacia atrs para corregir su postal antes de enviarla, no se vea obligado a rellenar de nuevo el formulario. Definido el array, el paso siguiente es inicializarlo en el caso que no lo est ya. Ya hemos explicado que la funcin isset nos dice si una variable ha sido inicializada o no. En el caso de que no lo est, llenaremos 7 elementos del array con contenidos nulos ("") que sern sustituidos por los valores del formulario en el
Presentamos el listado del script principal de la aplicacin y comentamos algunos puntos generales
El formulario que acabamos de ver propone dos botones distintos (enviar y ver) que, por pertenecer a la misma etiqueta form, apuntan hacia el mismo script: enviopostal.php. Este script ha de encargarse por lo tanto de llevar a cabo ambas tareas: Visualizar la tarjeta que el internauta ha compuesto Enviar la postal al destinatario Hemos querido fusionar ambas tareas en un mismo archivo para de esta forma introducir tcnicas con condicionales if que nos permitan discriminar una de las dos tareas en funcin de la orden del visitante. Por el momento contentmonos de echar una ojeada al script para entrar en estos detalles posteriormente:
<? //Iniciamos la sesion en la pagina session_start(); //Comprobamos si venimos de esta misma pagina o de la del formulario if (!ereg($PHP_SELF,$HTTP_REFERER)) //Si venimos del formulario { //Guardamos las cookies para futuras visitas SetCookie("nombre",$nombre_origen,time()+86400*365); SetCookie("email",$email_origen,time()+86400*365);
SISTEMA DE ENVIOS DE POSTALES CON PHP //Creamos el array variables_formulario tipo sesion con los datos del formulario $variables_formulario[0]=$email_destino; $variables_formulario[1]=$nombre_destino; $variables_formulario[2]=$email_origen; $variables_formulario[3]=$nombre_origen; $variables_formulario[5]=$texto; $variables_formulario[6]=$id_imagen; //Miramos si el checkbox esta validado if (isset($avisar)) $variables_formulario[4]="checked"; else $variables_formulario[4]=""; } //Incluimos la libreria de funciones include("funciones.php"); //Creamos el encabezado HTML html_encabezado("Servicio de postales de DesarrolloWeb","Servicio de postales gratuitas para todo tipo de felicitaciones","postal, navidad, san valentin, cumpleaos, felicitacion"); //Miramos si queremos ver o enviar la postal if (isset($ver)) //Si queremos ver la postal { //Generamos la postal ?> <table align="center" cellspacing="0" cellpadding="2" border="0" bgcolor="White"> <tr> <td colspan="2" align="center" bgcolor="#ccff00"><font color="#9933ff">Aqu tienes la postal que recibir <? echo $variables_formulario[1]?></font></td> </tr> <tr> <td align="left" valign="middle"><img src="2lightho.gif" width="32" height="32" border="0" alt=""></td> <td rowspan="2" width="300"><? echo $variables_formulario[1].",<br> ".$variables_formulario[5]."<br>".$variables_formulario[3];?></td> </tr> <tr> <td><img src="<? echo"imagenes/".$variables_formulario[6].".gif" ?>" border="0"></td> </tr> </table> <div align="center"><a href="enviopostal.php">Enviar</a></div> <? //Generamos enlace hacia atras y cierre de documento html_pie_volver($HTTP_REFERER); } //Si el formulario no esta completamente relleno... 10
SISTEMA DE ENVIOS DE POSTALES CON PHP elseif (!$variables_formulario[0] or !$variables_formulario[1] or !$variables_formulario[2] or !$variables_formulario[3] or !$variables_formulario[5]) { echo "<div align=\"center\">Tu formulario esta incompleto, por favor compltalo para poder enviar la postal</div>\n"; //Generamos enlace hacia atras y cierre de documento html_pie_volver("formulario.php"); } else //Querra decir que enviamos la postal { //Conectamos a la BD $connectid=mysql_conexion(); //Creamos un numero aleatorio para el id_postal que no este utilizado ya //Primero creo una semilla para los numeros aleatorios srand ((double) microtime() * 1000000); //Generamos un numero aleatorio distinto hasta que tengamos un numero libre do { $aleatorio = rand(0,32000); $resultid = mysql_db_query("postal","Select * From postal Where id_postal=" . $aleatorio); $dameFila=mysql_fetch_array($resultid); }while ($dameFila); //Insertamos los datos necesarios en la BD $sentencia_sql = "Insert Into postal (id_postal, texto,email_destinatario, nombre_destinatario, email_remitente, nombre_remitente, id_imagen,avisar) "; $sentencia_sql .= "Values (" . $aleatorio . ",'" . $variables_formulario[5] . "','" . $variables_formulario[0] . "','" . $variables_formulario[1] ; $sentencia_sql .= "','" . $variables_formulario[2] ."','" . $variables_formulario[3] ."'," . $variables_formulario[6] .",'".$variables_formulario[4]."')"; mysql_db_query("postal",$sentencia_sql); //Enviamos el e-mail al destinatario //Variables de configuracion del correo $asunto = "Has recibido una postal"; $cuerpo_mensaje = "Saludos cordiales ".$variables_formulario[1].",\n\n"; $cuerpo_mensaje .= $variables_formulario[3]." te ha enviado una postal.\n"; $cuerpo_mensaje .= "Para recoger la postal que has recibido, accede a la siguiente direccin:\n"; $cuerpo_mensaje .= "http://localhost/postal/leepostal.php?id_postal=" . $aleatorio; $headers_mensaje = "From: DesarrolloWeb>\n"; //Funcion para enviar el correo $mailenviado = mail ($variables_formulario[0], $asunto, $cuerpo_mensaje, $headers_mensaje); //Mensaje para informar del exito o fracaso de las operaciones if ($mailenviado) { 11
SISTEMA DE ENVIOS DE POSTALES CON PHP echo "<div align=\"center\">Tu postal ha sido enviada correctamente</div>\n"; session_destroy(); } else echo "<div align=\"center\">Ha habido un error en el envio del correo electrnico</div>"; //Generamos enlace hacia atras y cierre de documento html_pie_volver("index.php"); } ?>
Diremos, antes de pasar a un comentario detallado, que el script esta dividido en dos bloques principales delimitados por dos condicionales. El primero de estos bloques gestiona el almacenamiento de las cookies y el relleno de la variable de sesin a partir de los datos del formulario. Esto se llevara nicamente a cabo cuando el visitante venga de la pgina formulario.php. El segundo bloque es una instruccin if que ejecuta una u otra serie de sentencias dependiendo de si el visitante quiere ver la postal o desea enviarla. En este condicional se tiene en cuenta tambin la posibilidad de que el usuario no haya rellenado el formulario completamente. Pasemos a ver ms detalladamente cada una de estas partes...
Comentamos la primera parte del script donde se gestiona la sesin y las cookies
Ya hemos visto que en el script formulario.php introducamos en el atributo value de las etiquetas input del formulario unas pequeas incrustaciones de cdigo PHP que nos permitan rellenar el formulario automticamente. Lo que no vimos es cmo esas variables eran definidas. El proceso de creacin de esas variables tiene lugar en el script enviopostal.php que es donde recibimos los datos del formulario. Para hacer partcipe al script de las variables registradas en la sesin es necesario antes de nada iniciar la sesin:
session_start();
Seguidamente, puesto que este script puede llamarse a s mismo y no necesariamente ejecutarse desde la pgina del formulario, debemos crear la condicin de que la creacin de las variables_formulario y de las cookies tenga lugar en el caso de que provengamos del script formulario.php o, lo que es lo mismo, que el script no se est ejecutando desde l mismo (un enlace que apunta a la misma pgina). Esta condicin ha sido expresada en trminos de variables del sistema tan slo para presentar una vez ms su utilidad a la vez que mostramos una funcin muy til para la gestin de cadenas:
if (!ereg($PHP_SELF,$HTTP_REFERER))
Esta condicin lo que expresa es: "Si en la variable $HTTP_REFERER (URL de procedencia) NO est incluida la variable $PHP_SELF (camino virtual de ejecucin del script) llevamos a cabo lo siguiente..." La funcin ereg sirve para detectar si un determinado texto ha sido encontrado en el interior de otro. Aqu los textos seran las dos variables de sistema. El paso siguiente, si la condicin resulta verdadera, es crear las variables de sesin y las cookies algo relativamente trivial salvo para el caso del campo checkbox avisar donde, si queremos que el checkbox sea validado al volver al formulario, hemos de darle el valor "checked".
12
Comentamos el fragmento de enviopostal.php que se encarga de visualizar la postal antes de ser enviada
Hemos comentado previamente la existencia de un segundo bloque principal del script delimitado por una condicin if que se encarga de evaluar si el visitante ha pedido visualizar la postal. Esta condicin es definida inicialmente por la lnea:
13
do { $aleatorio = rand(0,32000); $resultid = mysql_db_query("postal","Select * From postal Where id_postal=" . $aleatorio); $dameFila=mysql_fetch_array($resultid); }while ($dameFila);
Este es un ejemplo en el que un bucle do/while puede resultar til con respecto a un while simple dado que necesitaremos ejecutar el bucle al menos una vez para generar nuestro numero aleatorio y comprobar que es nico en nuestra base de datos. Una vez tenemos un identificador de la postal exclusivo nos disponemos a introducir en la base de datos la informacin de las variables_formulario y el identificador. Para ello construimos dinmicamente una sentencia SQL que inserte la informacin que hemos recibido del formulario. A continuacin se ha de mandar el correo electrnico informando de la creacin de la postal. En el ejemplo, primero creamos una serie de variables que nos ayudarn a configurar el mensaje de correo electrnico. Estas variables son: $asunto: Para el asunto del correo electrnico $cuerpo_mensaje: Con un texto que informa de la creacin de la postal y la URL para ir a recogerla. En la direccin web que construimos pasamos por parmetro el nmero aleatorio asignado a la postal, para que la pgina encargada de mostrarla sepa cul es la postal que debe sacar por pantalla. $headers_mensaje: Para indicar algn dato adicional que se coloque en la cabecera del mensaje. En este caso indicamos que lo enva DesarrolloWeb. Con la funcin mail(), pasndole los parmetros de configuracin, enviamos el correo electrnico. La funcin mail devuelve un valor que nos servir ms tarde para saber si el mensaje se envi correctamente o si hubo algn error. En el caso de que todo haya funcionado correctamente, damos por finalizada la sesin por medio de la funcin session_destroy con lo que elimenaremos aquellas variables que nos han servido a llenar el formulario.
Describimos el programa que se encarga de visualizar la postal al destinatario una vez sta ha sido enviada
En el e-mail recibido, el destinatario ver una URL que nosotros mismos hemos generado dinmicamente. Al dirigirse a ella lo que estar haciendo es ejecutar un script que, en base al identificador que su URL, mostrar la postal correspondiente por una simple llamada a la base de datos. El script ha de tener en cuenta la posibilidad de que el identificador sea errneo ya sea debido a que dicho registro haya sido borrado de la base o bien a causa de que el internauta est intentando acceder a una postal que no es la suya. Si se trata efectivamente del identificador correcto, por medio de la llamada a la base de datos, podremos ir sacando uno a uno los parmetros almacenados para recomponer la postal tal y como el remitente la ha creado. A continuacin, en el caso en el que el remitente lo haya solicitado, le enviaremos un mensaje notificndole de la recepcin de la postal:
14
SISTEMA DE ENVIOS DE POSTALES CON PHP include("funciones.php"); //Creamos el encabezado HTML html_encabezado("Servicio de postales de DesarrolloWeb","Servicio de postales gratuitas para todo tipo de felicitaciones","postal, navidad, san valentin, cumpleaos, felicitacion"); //En $id_postal tenemos la clave de la postal que se solicita //Extraemos de la BD los datos para generar la postal //Conectamos a la BD $connectid=mysql_conexion(); //Ejecutamos sentencia SQL y recogemos resultado en damefila $resultid = mysql_db_query("postal","SELECT * FROM postal WHERE id_postal=" . $id_postal); $damefila=mysql_fetch_array($resultid); //Si el identificador es correcto, deberiamos tener valores en damefila if ($damefila) //Si existe esa postal la muestro { //Recreamos la postal con los datos extraidos ?> <br> <table align="center" cellspacing="0" cellpadding="2" border="0" bgcolor="White"> <tr> <td align="left" valign="middle"><img src="2lightho.gif" width="32" height="32" border="0" alt=""></td> <td rowspan="2" width="300"><? echo $damefila["nombre_destinatario"].',<br> '.$damefila["texto"].'<br>'.$damefila["nombre_r emitente"];?></td> </tr> <tr> <td><img src="<? echo"imagenes/".$damefila["id_imagen"].".gif" ?>" border="0" alt=""></td> </tr> </table> <div align="center"><a href="index.php">Enva una postal a alguien</a></div> <? //En caso de haberlo pedido, enviamos un mail para notificar la recepcion if ($damefila["avisar"]="checked") { //Variables de configuracion del correo $asunto = "Tu postal ha sido recibida"; $cuerpo_mensaje = "Saludos cordiales ".$damefila["nombre_remitente"].",\n\n"; $cuerpo_mensaje .= $damefila["nombre_destinatario"]." ha recibido bien tu postal.\n"; $headers_mensaje = "From: DesarrolloWeb.com>\n"; //Funcion para enviar el correo $mailenviado = mail ($damefila["email_remitente"], $asunto, $cuerpo_mensaje, $headers_mensaje); } } 15
SISTEMA DE ENVIOS DE POSTALES CON PHP else //El identificador era erroneo, la postal no existe echo "<div align=\"center\">Lo sentimos, pero esa postal no existe</div>"; //Liberamos la memoria de consulta mysql_free_result($resultid); ?> </body> </html>
Con este script finaliza este manual prctico de programacin en PHP. Esperamos que hayis sacado partido de l y que os haya dado un poco ms de soltura para poder abordar vuestros primero proyectos en PHP con una base suficiente. Os agradeceremos cualquier comentario sobre este o cualquier otro de los manuales a la vez que os invitamos a plantearnos vuestras posibles dudas en la direccin de ayuda de esta misma web. Asimismo os recordamos la existencia de foros especializados y ponemos a vuestra disposicin la lista de recursos de PHP ms significativos del web.
16