martes, 1 de julio de 2014

crear instalador con php

crear instalador con php 

(parte I)


En esta primera parte intentaré explicar lo mas simple posible como hacer un instalador con php y MySQL, este ejemplo MUY SIMPLE servirá para un pequeño script y solo registrará un nombre en una base de datos MySQL.
Este pequeño experimento lo dividí en 4 pasos para que sea lo mas claro posible (aunque se puede hacer solamente en 1 archivo pero para que sea lo mas claro posible lo dividí en 4 diferentes archivos).

Para comenzar serán necesarios los siguientes pasos:

1.- Creación del archivo de configuración
2.- Creación del instalador
3.- Registrar datos de ejemplo
4.- Recuperar datos registrados
desde luego que este script es solo a modo ilustrativo y se debe expandir muchisimo para que sea utilizable en un script real, tampoco es la única forma que se puede hacer un instalador en php pero es la mas simple que conseguí para hacer este ejemplo, en un futuro haré uno mas complejo.

comencemos!!

1.- Creación del archivo de configuración:

Este script lo que hará es encargarse de crear el archivo de configuración con el que podremos conectarnos a la base de datos (el típico caso del archivo config.php)

index.php:

if (!isset($_POST[enviar])) {
  if(!file_exists("config.php")) {
    define('DB_HOST','');
    define('DB_USER','');
    define('DB_PASS','');
    define('DB_NAME','');
// Si no se incluye el archivo se ponen las variables a 0 (el archivo se creara automaticamente)
  }
  else {
    include("config.php");
  }
?>
<form action="<?php echo $_SERVER[PHP_SELF] ?>" method="post">
  HOST: <input type="text" name="db_host" value="<?php echo DB_HOST ?>" /> (ej: localhost)<br />
  USER: <input type="text" name="db_user" value="<?php echo DB_USER ?>" /> (usuario MySQL)<br />
  PASS: <input type="password" name="db_pass" value="<?php echo DB_PASS ?>" /> (clave del usuario MySQL)<br />
  NAME: <input type="text" name="db_name" value="<?php echo DB_NAME ?>" /> (Nombre de la base de datos)<br />
  <input type="submit" name="enviar" value="Guardar" />
</form>
<?php
}
else {
// El contenido del archivo
  $contenido = "<?php \n";
  $contenido .= "define('DB_HOST','" .$_POST['db_host']."'); \n";
  $contenido .= "define('DB_USER','" .$_POST['db_user']. "'); \n";
  $contenido .= "define('DB_PASS','" .$_POST['db_pass']. "'); \n";
  $contenido .= "define('DB_NAME','" .$_POST['db_name']. "'); \n";
  $contenido .= "?>";

// Se abre el archivo (si no existe se crea)
  $archivo = fopen('config.php', 'w');
  $error = 0;
  if (!isset($archivo)) {
    $error = 1;
    print "No se ha podido crear/abrir el archivo.<br />";
  }
  elseif (!fwrite($archivo, $contenido)) {
    $error = 1;
    print "No se ha podido escribir en el archivo.<br />";
  }
  fclose();
  if ($error == 0) {
    require 'config.php';
    print "
      <h3>DATOS DE CONEXI&Oacute;N</h3>
      <p>DB HOST: " .DB_HOST. "</p>
      <p>DB USER: " .DB_USER. "</p>
      <p>DB PASS: " .DB_PASS. "</p>
      <p>DB NAME: " .DB_NAME. "</p>
      <a href=\"install.php\">siguiente</a>
    ";
  }
}

Ahora vamos a pasar al script que instala la tabla que se necesita en la base de datos (obviamente la base de datos hay que crearla desde el PHPMyAdmin) y se llamará de la misma forma que pongamos en el formulario inicial en DB_NAME.

Ahora bien, por motivos prácticos la base de datos que yo creé se llama "ejemplo" y la tabla se llama "nombres" ya que solo vamos a poner un id auto incremental y un campo nombres con característica unique pero esto se puede modificar.


install.php:

//incluimos el archivo con las configuraciones que introdujimos en el formulario
include ("config.php");
// conectamos al servidor mysql
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die ("Could not connect to mysql because ".mysql_error());
// seleccionamos la base de datos
mysql_select_db(DB_NAME) or die ("Could not select database because ".mysql_error());
// creamos las tablas necesarias en la base de datos
$create = "create table `nombres` (
  `id` int(11) NOT NULL auto_increment,
  `nombre` varchar(30) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY nombre (nombre) );";
mysql_query($create) or die ("Could not create tables because ".mysql_error());
echo "La instalaci&oacute;n se realiz&oacute; con &eacute;xito.";
// eso fue todo :D
 



Hasta aquí esta primera parte donde creamos los 2 archivos mas importantes que son el formulario desde donde se insertan los valores de configuración para poder conectarse a la base de datos y el archivo que registra nuestra hermosa tabla en la base de datos, en la proxima parte mostraré como registrar un nombre en la base de datos y recuperar los nombres que haya registrados.

Hasta la proxima parte y gracias por tu tiempo!

Gracias por tu lectura