PHP: Revertir orden de palabras desde un archivo

El proposito de este programa es revertir el orden de las palabras en cada oracion que se escriba en un archivo txt. Para lograr esto se Deben seguir los siguientes pasos:

1. Crear dos archivos, uno input.txt y otro index.php, ambos en la misma locacion.
2. En el archivo input.txt escribir varias oraciones una en cada linea.
3. En el archivo index.php escribir el siguiente codigo:


<?php
$fh = fopen("input.txt", "r");
while (!feof($fh)) {
 
$test = trim(fgets($fh));
 echo (nl2br(reversed($test) . "\n"));
     if (empty($test) == true) {
            break;      
    }
}
function reversed($test) {

$words = explode(" ", $test);
$reversed = array_reverse($words);
return $testResult = implode(" ", $reversed);
}
fclose($fh);
?>


El codigo de arriba dara el siguiente resultado:

Entrada
Hola mundo!

Salida
mundo! Hola








PHP: Suma de enteros desde un archivo

El siguiente programa imprimira la suma de enteros leidos desde un archivo txt.

Para ello crea un archivo .txt con varios valores enteros escritos en el archivo uno por cada linea. El programa leera esos valores y los sumara. Guarda el archivo en la misma carpera en que guardas el programa o de lo contrario especifica el directorio en donde se encuentra el mismo.

Ejemplo de entrada
5
12

Ejemplo de salida
17


<?php
$fh = fopen("nombre_archivo.txt", "r");
$t  = 0;
while (!feof($fh)) {
 
    $test = fgets($fh);
 
    $t = $test + $t;
 
    if (empty($test) == true) {
             break;      
    }
 
}
echo ($t . "\n");
fclose($fh);

?>



Notas

fopen
Abre un fichero o una URL

feof 
Comprueba si el puntero a un archivo está al final del archivo

fclose
Cierra un puntero a un archivo abierto





Enviar HTML E-Mails con PHPMailer



1- Averiguar que version de PHP tienes instalada.

<?php
echo phpversion();
?> 

2- De acuerdo a la version que tengas descargar PHPMailer desde aqui .
3- Luego descomprimir el archivo que descargaste en la carpeta de tu proyecto.
4- Crear el archivo index e incluir el siguiente codigo:

<?php
$destinatario = 'destinatario@algo.com';
$nombre = 'Juana';
$apellido = 'Almonte';

require("PHPMailer-master/class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP(); // Enviar via SMTP
$mail->Host = "smtp.gmail.com"; // SMTP servers
$mail->SMTPAuth = true; // encender SMTP autenticacion
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->Username = "mi_email@gmail.com"; // aqui escribe tu correo de gmail
$mail->Password = "mi_contrasena"; // aqui escribe tu contrasena del correo 

$mail->From = "mi_email@gmail.com";
$mail->FromName = "PHPMailer prueba";
$mail->AddAddress($destinatario,$nombre.' '.$apellido);
$mail->AddReplyTo("mi_email@gmail.com","PHPMailer.com");

$mail->WordWrap = 50; // establecer word wrap

$mail->IsHTML(true); // enviar como HTML

$mail->Subject = "PHPMailer mensaje de prueba";
$mail->Body = "
<!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>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
<title>PHPMailer E-mail</title>
<meta name='viewport' content='width=device-width, initial-scale=1.0'/>
</head>
<body style='margin: 0; padding: 0;'>

<table width='600px' bgcolor='#ffffff' style='border:1px solid #CCCCCC; color: #696969; border-collapse: collapse; padding:15px 10px 20px 10px; margin: 5px 0;'>
<tr>
<td width='100%' bgcolor='#1fc8f2' style='padding: 5px; letter-spacing: -3px; color: #ffffff; font-size: 24px; border-bottom: 2px dashed #f2821f;'> TuEmail </td>
<td width='30%'> </td>
</tr>

<tr>
<td style='padding: 0 15px;'>Hola <strong>$nombre $apellido,</strong></td> 
<td width='30%'> </td>
</tr>

<tr>
<td style='padding: 0 15px;'> Este es un email de prueba </td>
<td width='30%'> </td>
</tr>


<tr>
<td bgcolor='#EFEFEF' style='padding: 0 0 10px 5px;'>Gracias por aprender con nosotros.<br /> <i> BlueProgramming Staff </i> </td>
<td width='30%'> </td>
</tr>

</table>
</body>
</html>
";
$mail->AltBody = "Este es un mensaje de solo texto";


if(!$mail->Send())
{
echo "el mensaje no fue enviado";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

echo "El mensaje ha dijo enviando";

    
?>


5- Editar el codigo de acurdo a tu necesidad ej
La variable $destinatario cambiar por el correo al que quieras que llegue este correo de prueba.
En este ejemplo se envia mediante el server de Gmail por lo que es obligatio en username escribir un correo de tu propiedad (desde el que se enviara el email) que sea de Gmail y en password escribir la contrasena de ese correo.

En la parte del body o cuerpo de el mensaje esta todo el codigo HTML que se enviara al correo. Algunas notas que hay que tener en cuenta al enviar correos HTML son las siguientes:

a) Procura usar la menor cantidad de CSS para el estilo del mensaje. En vez de eso se recomienda usar los  atributos HTML como por ejemplo para el color de fondo la una tabla bgcolor en vez de background-color de CSS.

b) Cuando asignes colores siempre hacerlo de la forma larga de seis caracteres debido a la que forma corta de tres no siempre va a funcionar.

Puedes descargar este ejemplo desde aqui.




PHP: Calcular cuantos dias faltan para tu cumpleaños

Al insertar el mes el dia y el ano de tu proximo cumpleanos el programa te dira cuantos dias restan para esta fecha.

<!DOCTYPE html>
<html>
<head>
  <title>PHP: Dias para tu cimpleanos</title>
  </head>
  <body>
  
 <?php


if (isset($_POST['mes'], $_POST['dia'], $_POST['anio']) == true) {
    
    $mes  = $_POST['mes'];
    $dia  = $_POST['dia'];
    $anio = $_POST['anio'];
    
    if (empty($mes) || empty($dia) || empty($anio)) {
        echo '<strong> * Todos los campos son necesarios </strong>';
    } else {
        
        
        $t_dias   = mktime(0, 0, 0, $mes, $dia, $anio);
        $hoy      = time();
        $dif_dias = ($t_dias - $hoy);
        $dias     = (int) ($dif_dias / 86400);
        print "Dias que faltan para tu cumplea&ntilde;os: 
<strong > $dias </strong> dias";
        
    }
    
}
?>

<h3> Escribe tu fecha de cumplea&ntilde;os </h3>
<form method="POST" action="">
Mes <br />
<input type="text" name="mes" /> <br />
Dia <br />
<input type="text" name="dia" /> <br />
A&ntilde;o <br />
<input type="text" name="anio" /> <br />
<input type="submit" name="calcular">
</form> 

</body>
<html>






Encriptacion de datos en PHP

En PHP existen varias funciones para la encriptacion de datos. Estas funciones son utiles para encriptar ciertas informaciones importantes tales como contrasenas. Entre allas estan las funciones crypt(), crc32(), md5() y sha1. Algunas son mas seguras que otras, en los ejemplos las coloco segun su nivel de seguridad:
 El siguiente es un ejemplo de como usar algunos:


<h2> Encriptaci&otilde;n de datos en PHP </h2>

<?php 
$dato = '123456';

$contrasena_crypt = crypt($dato);
$contrasena_crc32 = crc32($dato);
$contrasena_md5 = md5($dato);
$contrasena_sha1 = sha1($dato);

echo '<strong>crypt </strong>'.$contrasena_crypt.'<br />';
echo '<strong>crc32 </strong>'.$contrasena_crc32.'<br />';
echo '<strong>md5 </strong> '.$contrasena_md5.'<br />';
echo '<strong>sha1 </strong>'.$contrasena_sha1.'<br />';
?>


Si los datos encryptados estan compuestos de palabras y/o numeros consecutivos es muy probable que alguien pueda descifrar el codigo encriptado, por eso es importante que en el caso de las contrasenas se compongan de combinaciones de letras, numeros y caracteres especiales. Existen websites que pueden intentar descifrar estos codigos encriptados tales como: md5decript.org y md5decripter.co.uk por mencionar algunos. 

Manipulacion de tablas HTML con DataTables

En mi experiencia en mejor plugin para la manipulacion de datos en tablas HTML es DataTables. El mismo le permitira ordenar, buscar y mostrar los datos de sus tablas de una forma dinamica, gracias a que es un plugin de la libreria de javascript JQuery.

A continuacion un ejemplo de como instalar DataTable con datos traidos desde la base de datos. 

1. Descargar la version mas reciente de DataTable en la siguiente direccion: http://datatables.net/download/, extraer el archivo .zip

2. Ejecutar el siguiente script para la creacion de la base de datos:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `datatable_ejemplo`
--
CREATE DATABASE IF NOT EXISTS `datatable_ejemplo` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `datatable_ejemplo`;

-- --------------------------------------------------------

--
-- Table structure for table `cliente`
--

CREATE TABLE IF NOT EXISTS `cliente` (
  `codigo` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(25) NOT NULL,
  `apellido` varchar(25) NOT NULL,
  `direccion` varchar(45) NOT NULL,
  `telefono` varchar(12) NOT NULL,
  PRIMARY KEY (`codigo`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Dumping data for table `cliente`
--

INSERT INTO `cliente` (`codigo`, `nombre`, `apellido`, `direccion`, `telefono`) VALUES
(1, 'Maria', 'Lopez', 'c/ 20 Los Ramos', '829-234-2344'),
(2, 'Juan', 'Gomez', 'c/ D Las Flores', '849-322-2344'),
(3, 'Flavia', 'Pichardo', 'c/77 El tronco', '809-345-6420');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


3.  Abrir un documento php con el formato HTML correspondiente. 

4. Hacer la conexion a la base de datos:

<?php
mysql_connect('localhost','root','') or die ("No se pudo conectar a la base de datos");
mysql_select_db('datatable_ejemplo') or die("No se pudo seleccionar la base de datos");
?>

5. Crear la tabla html que contendra nuestros datos. Es muy importante que la tabla cuente con las etiquetas <theader> y <tfooter> para que el DataTable pueda funcionar. El siguiente es mi codigo para el ejemplo. 

<table id="datatables">
    <thead>
       <tr>
<th> <strong>Codigo </strong>    </th>   
<th> <strong>Nombre </strong>    </th>  
<th> <strong>Apellido </strong>  </th>
<th> <strong>Direccion </strong> </th>
<th> <strong>Telefono </strong> </th>
 </tr>
    </thead>
    <tbody>
       <?php

$sql = "SELECT codigo, nombre, apellido, direccion, telefono FROM cliente";
$re = mysql_query($sql) or die("Error al ejecutar la consulta") . mysql_error();

while ($fila = mysql_fetch_array($re)) {
    
    
    echo '<tr">

<td>' . $fila['codigo'] . '</td> 
<td>' . $fila['nombre'] . '</td> 
<td>' . $fila['apellido'] . '</td> 
<td>' . $fila['direccion'] . '</td> 
<td>' . $fila['telefono'] . '</td> 

</tr>';
    
}

?>
    </tbody>
</table>

6. Luego hay que anadir dentro de las etiquetas <head> el enlace a los estilos css para el dataTable de la siguiente manera:

<style type="text/css" title="currentStyle">
@import "DataTables-1.9.4/media/css/jquery.dataTables.css";
</style>

7. Finalmente necesario insertar justo despues del cierre de la etiqueta <body> los siguientes enlaces:


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <!-- ENLACE A JQUERY ALMACENADO EN LA LIBRERIA DE GOOGLE -->

<script src="DataTables-1.9.4/media/js/jquery.dataTables.js" type="text/javascript"> </script> <!-- ENLACE A LOS SCRIPTS DE JQUERY DE EL DATATABLE -->

<script type="text/javascript" charset="utf-8"> <!-- FUNCION PARA INICIALIZAR EL DATATABLE Y PERSONALIZARLO AL ESPANOL -->

$(document).ready(function() {

$('#datatables').dataTable({


   "aaSorting": [[0, "desc"]],
        "sPaginationType": "full_numbers",
"bAutoWidth": false,
"oLanguage": {
            "sLengthMenu": "Mostrar _MENU_ ",
            "sZeroRecords": "No existen datos para esta consulta",
            "sInfo": "Mostrando del _START_ al _END_ de un total de _TOTAL_ registros",
            "sInfoEmpty": "Mostrando del 0 al 0 de un total de 0 registros",
            "sInfoFiltered": "(De un maximo de _MAX_ registros)",
"sSearch": "Buscar: _INPUT_",
"sEmptyTable": "No hay datos disponibles para esta tabla",
"sLoadingRecords": "Por favor espere - Cargando...",  
"sProcessing": "Actualmente ocupado",
"sSortAscending": " - click/Volver a ordenar en orden Ascendente",
"sSortDescending": " - click/Volver a ordenar en orden descendente",
"oPaginate": {
        "sFirst":    "Primero",
        "sLast":     "Ultimo",
        "sNext":     "Siguiente",
        "sPrevious": "Anterior"
    },
        }
});

})

</script>


El resultado deberia lucir asi:


Este es mi codigo completo:

<?php
mysql_connect('localhost', 'root', '') or die("No se pudo conectar a la base de datos");
mysql_select_db('datatable_ejemplo') or die("No se pudo seleccionar la base de datos");
?>
<html>
<title> DataTable Ejemplo </title>
<head>
<style type="text/css" title="currentStyle">

@import "DataTables-1.9.4/media/css/jquery.dataTables.css";

</style>
</head>

<body>

<table id="datatables">
    <thead>
       <tr>
<th> <strong>Codigo </strong>    </th>
<th> <strong>Nombre </strong>    </th>
<th> <strong>Apellido </strong>  </th>
<th> <strong>Direccion </strong> </th>
<th> <strong>Telefono </strong> </th>
 </tr>
    </thead>
    <tbody>
       <?php

$sql = "SELECT codigo, nombre, apellido, direccion, telefono FROM cliente";
$re = mysql_query($sql) or die("Error al ejecutar la consulta") . mysql_error();

while ($fila = mysql_fetch_array($re)) {
 
 
    echo '<tr">

<td>' . $fila['codigo'] . '</td>
<td>' . $fila['nombre'] . '</td>
<td>' . $fila['apellido'] . '</td>
<td>' . $fila['direccion'] . '</td>
<td>' . $fila['telefono'] . '</td>

</tr>';
 
}

?>
    </tbody>
</table>
</body>


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <!-- ENLACE A JQUERY ALMACENADO EN LA LIBRERIA DE GOOGLE -->

<script src="DataTables-1.9.4/media/js/jquery.dataTables.js" type="text/javascript"> </script> <!-- ENLACE A LOS SCRIPTS DE JQUERY DE EL DATATABLE -->

<script type="text/javascript" charset="utf-8"> <!-- FUNCION PARA INICIALIZAR EL DATATABLE Y PERSONALIZARLO AL ESPANOL -->

$(document).ready(function() {

$('#datatables').dataTable({


   "aaSorting": [[0, "desc"]],
        "sPaginationType": "full_numbers",
"bAutoWidth": false,


"oLanguage": {
            "sLengthMenu": "Mostrar _MENU_ ",
            "sZeroRecords": "No existen datos para esta consulta",
            "sInfo": "Mostrando del _START_ al _END_ de un total de _TOTAL_ registros",
            "sInfoEmpty": "Mostrando del 0 al 0 de un total de 0 registros",
            "sInfoFiltered": "(De un maximo de _MAX_ registros)",
"sSearch": "Buscar: _INPUT_",
"sEmptyTable": "No hay datos disponibles para esta tabla",
"sLoadingRecords": "Por favor espere - Cargando...",
"sProcessing": "Actualmente ocupado",
"sSortAscending": " - click/Volver a ordenar en orden Ascendente",
"sSortDescending": " - click/Volver a ordenar en orden descendente",

"oPaginate": {
        "sFirst":    "Primero",
        "sLast":     "Ultimo",
        "sNext":     "Siguiente",
        "sPrevious": "Anterior"
    },

        }
});

})

</script>

</html>

PHP conexión a base de datos MySQL

Para conectarse a una base de datos en MySQL con PHP primero debemos crear la base de datos en MySQL, utilizando alguna interfaz, en my caso utilizo phpmyadmin que viene con el Appserv, el cual es mi servidor web local.  Los siguientes son los pasos para lograr la conexion:

1- Luego de haber instalado nuestro servidor web escribir en el navegador localhost/phpmyadmin.
2- Este pedira una auntetificacion de usuario mayormente el nombre de usuario por defecto es 'root', la contrasena sera la que hayas especificado en la instalacion del servidor web (esto dependera de cual servidor instales).
2- Especificar el nombre de la nueva base de datos (en phpmyadmin). Luego de esto preciona "Crear" o "Create" si esta en ingles.



4- Luego de haber creado la base de datos ir a nuestro editor y escribir el siguiente codigo:


<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin titulo</title>
</head>

<body>


<?php
$server='localhost'; //Los mismo que 127.0.0.1
$user='root'; // Nombre de usuario de MySQL con el que te quiere conectar
$pass='admin'; // Contrasena de MySQL correspondiente al usuario
$db='bdConexion'; // Nombre de la base de datos

$conexion=mysql_connect($server,$user,$pass)or die("Error al conectarse a la base de datos").mysql_error();
mysql_select_db($db,$conexion) or die ("Error al seleccionar base de datos").mysql_error();
if ($conexion > 0)  {
echo "Conectado";
}
else
{
echo "No conectado";
}
?>

</body>
</html>


3- Si se ha conectado satisfactoriamente aparecera en la pantalla en mensaje "Conectado" de lo contrario aparecera "No conectado".

Notas:

mysql_connect: Abre una conexión al servidor MySQL
mysql_select_db: Seleccionar una base de datos MySQL

:)


Articulo relacionado 
¿Como programar en PHP?


Tabla dinamica PHP

Este es el codigo html para crear una tabla dinamica. La Parte de arriba pertenece a la apariencia html, el codigo que se encuentra entre las etiquetas <?php   ?> es la parte del codigo que hara que cuando insertemos valores en las casilla filas y colunnas estos se conviertan en una tabla con las dimensiones dadas. Para crear una tabla dinamica en PHP debemos escribir el siguiente codigo en el Body del html:


<body bgcolor="#FFFFFF">

<table align="center" bgcolor="#F1F1F1">
<tr>
<td colspan="2" align="center">Tabla Dinamica</td>
</tr>

<form method="post" enctype="text/multipart">
<tr>
<td>Filas:</td>
<td> <input type="text" name="f"> </td>
</tr>

<tr>
<td>Colunnas:</td>
<td><input type="text" name="c"> </td>
</tr>

<tr>
<td><input type="submit" value="Aceptar"> </td>
</tr>

<tr>
<td><input type="submit" value="Limpiar"> </td>
</tr>

</table>

</form>

&nbsp;



//Este es el codigo que creara la tabla
 
<table border=1 align="center">

<?php

$filas=$_POST['f'];
$a=0;
while($a < $filas){
echo "<tr>
</tr>";
$a++;


$colunnas=$_POST['c'];
$b=0;
while($b < $colunnas){
echo "<td>colunnas</td>";
$b++;

}
 }
?>



//Esta parte es para el boton limpiar

<?php
$filas=$_POST['0'];
$colunnas=$_POST['0'];
?>

</table>

</body>




Ejemplo: Si insertamos 2 en la casilla filas y 2 en la de colunnas aparecera una tabla como la siguiente: