Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores   |   Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons
Introducción a PHP + MySql + Apache + phpMyAdmin (293095 lectures)
Per Gabriel, Gigi (http://www.degabriel.net)
Creado el 09/05/2001 00:07 modificado el 09/05/2001 00:07

Este articulo muestra como montar una web desde cero de forma facil con ejemplos de como hacerlo paso a paso usando PHP + MySql + Apache + phpMyAdmin.
  • Introducción
  • Ficheros de configuración
  • Crear una BD y recuperarla de un fichero
  • Conexión a la Base de Datos
  • Consultas a la base de datos
  • Borrado de registros
  • Configurar phpMyAdmin
  • ODBC en MYSQL
    INTRODUCCION
    Veremos como instalar los paquetes necesarios para poder usar PHP + MySql + Apache + phpMyAdmin.
    Nos hemos basado en los paquetes RPM de la Distribución de Mandrake 7.2, pero se puede aplicar a Red Hat sin problemas.

    COMANDOS NECESARIOS

    Montar y desmontar CDROM
    [root@gigi]# mount /mnt/cdrom
    [root@gigi]# umount /mnt/cdrom

    Instalar paquetes:
    [root@gigi]# rpm -ihv paquete.rpm

    Informacion del paquete:
    [root@gigi]# rpm -qil php | less

    COMENCEMOS LA INSTALACION EN MANDRAKE 7.2

    Para empezar montamos el CDROM y nos vamos al directorio donde se encuentran los paquetes de Apache, PHP4 y del MySql. Mas tarde, vamos a instalar el programa phpMyAdmin, que nos servira para hacer el mantenimiento de la Base de Datos

    [root@gigi]# mount /mnt/cdrom
    [root@gigi]# cd /mnt/cdrom/Mandrake/RPMS

    Localizamos los paquetes RPM y los instalamos de la forma:
    [root@gigi]# rpm -ihv paquete.rpm

     
    ----apache-1.3.14---- 
    [root@gigi RPMS2]# ls *apac* 
    apache-1.3.14-2mdk.i586.rpm         apache-mod_perl-1.3.14_1.24-2mdk.i586.rpm 
    apache-common-1.3.14-2mdk.i586.rpm  apache-suexec-1.3.14-2mdk.i586.rpm 
     
    ----php-4.0.3pl1------ 
    [root@gigi]# ls *php* 
    mod_php-4.0.3pl1-1mdk.i586.rpm  php-4.0.3pl1-1mdk.i586.rpm 
     
    ----MySQL-3.23.23-----(En el 2º CDROM de la Mandrake) 
    [root@gigi]# umount /mnt/cdrom 
    [root@gigi]# mount /mnt/cdrom 
    [root@gigi]# cd /mnt/cdrom/Mandrake/RPMS2 
     
    [root@gigi RPMS2]# ls *My* 
    MySQL-3.23.23-1mdk.i586.rpm         MySQL-devel-3.23.23-1mdk.i586.rpm 
    MySQL-bench-3.23.23-1mdk.i586.rpm   MySQL-shared-3.23.23-1mdk.i586.rpm 
    MySQL-client-3.23.23-1mdk.i586.rpm  perl-Mysql-1.22_15-3mdk.i586.rpm 
     
    Ahora buscamos las librerias del PHP para que funcione MySQL con PHP 
     
    [root@gigi RPMS2]# ls -l  ph* 
    -r--r--r--    2 root     root        21478 oct 23 20:02 php-dba_gdbm_db2-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root      1582095 oct 23 20:02 php-devel-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root        37020 oct 23 20:02 php-gd-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root       383386 oct 23 20:02 php-imap-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root        24070 oct 23 20:02 php-ldap-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root       904468 oct 23 20:02 php-manual-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root        26503 oct 23 20:02 php-mysql-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root        31826 oct 23 20:02 php-oracle-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root        27246 oct 23 20:02 php-pgsql-4.0.3pl1-1mdk.i586.rpm 
    -r--r--r--    2 root     root        19076 oct 23 20:02 php-readline-4.0.3pl1-1mdk.i586.rpm 
     
    ----phpMyAdmin 2.0.x----- 
     
    Bajaros el fichero: phpMyAdmin_2.1.0.tar.gz(1) 
     
    Descomprimirlo en: 
    [root@gigi]# cd /home/httpd/html/ 
    [root@gigi html]# tar zxvf phpMyAdmin_2.1.0.tar.gz  
    [root@gigi html]# mv phpMyAdmin_2.1.0 myadmin 
     
    La ultima linia renombra el directorio y nos facilita llegar hasta el directorio 
     
    

    Volver


    Ficheros de configuración

    Una vez hemos instalado los paquetes anteriores debemos comprobar si todo ha ido bien, y comprobar o añadir algunas linias en los ficheros de configuración que vamos a emplear

     
    FICHEROS NECESARIOS 
     
    Necesitamos comprobar 2 ficheros: 
     
    En el directorio: 
    [root@gigi]# cd /etc/httpd/conf 
    Usaremos el fichero: httpd.conf 
     
    En el directorio: 
    [root@gigi]# cd /etc 
    Usaremos el fichero: php.ini 
     
    ----httpd.conf----- 
    Comprobamos que existen estos modulos buscando estas linias, sino  
    estan significara que nos hemos olvidado de instalar algun paquete: 
    LoadModule php4_module      modules/libphp4.so 
    AddModule mod_php4.c 
     
    Le indicamos al Apache que es aqui desde donde comienzan nuestras paginas,  
    busca la linia donde se encuentre 'DocumentRoot': 
    DocumentRoot /home/httpd/html 
     
    Le indicamos las extensiones que queremos utilizar por defecto, busca la  
    linia donde se encuentre 'DirectoryIndex': 
    DirectoryIndex index.html index.php index.htm index.shtml index.cgi  
    Default.htm default.htm index.php3 
     
    Buscamos las siguientes linias y las ponemos como a continuacion: 
     
    # For example, the PHP3 module (not part of the Apache distribution) 
    # will typically use: 
    #AddType application/x-httpd-php3 .php3 .phtml .php 
    AddType application/x-httpd-php4 .php4 .phtml .php .php3 
    AddType application/x-httpd-php4-source .phps 
    # The following is for PHP/FI (PHP2): 
    #AddType application/x-httpd-php .phtml 
     
     
    ----php.ini----- 
     
    Aqui solo necesitamos comprobar que esta incluido las libraria para PHP de MySql 
     
    ;Windows Extensions 
    ;extension=php_mysql.dll 
    ;extension=php_nsmail.dll 
    ;extension=php_calendar.dll 
    ;extension=php_dbase.dll 
    ;extension=php_filepro.dll 
    ;extension=php_gd.dll 
    ;extension=php_dbm.dll 
    ;extension=php_mssql.dll 
    ;extension=php_zlib.dll 
    ;extension=php_filepro.dll 
    ;extension=php_imap4r2.dll 
    ;extension=php_ldap.dll 
    ;extension=php_crypt.dll 
    ;extension=php_msql2.dll 
    ;extension=php_odbc.dll 
    ;extension=gd.so 
    extension=mysql.so 
    ;extension=pgsql.so 
    ;extension=ldap.so 
    ;extension=imap.so 
    ;extension=readline.so 
    ;extension=dba_gdbm_db2.so 
    ;extension=libphp_java.so 
    
    Antes de nada tendremos que comprobar que todo funciona correctamente usando el siguiente ejemplo:
     
    	<html> 
    	<body> 
    	<?php 
    		phpinfo(); 
    	?> 
    	</body> 
    	</html> 
    
    Sabras si esta bien si te aparece una pagina llena de información como la que hay en
    Bulma(2), y en la que podras encontrar referencias a la versión del PHP, Apache y MySql instalados, ademas de otros programas.

    Volver


    Crear una BD y recuperarla de un fichero

    Primeros pasos en el manejo de la Base de Datos MySql

     
    Para empezar vamos a utilizar una Base de Datos llamada 'ejemplodb'  
    en todos los ejemplos que usemos de aqui en adelante 
     
    Para Crear la Base de Datos 
    [root@gigi]# mysqladmin -p create ejemplodb 
     
    Para Borrar la Base de Datos 
    [root@gigi]# mysqladmin -p drop ejemplodb 
     
    En este punto vamos a utilizar una tabla de ejemplo que usaremos  
    en todos los ejemplos que usemos de aqui en adelante. 
    Tendremos que haber creado la Base de Datos antes de este paso 
     
    Crearemos el fichero backup.sql que las siguientes linias: 
     
    #--Inicio Fichero backup.sql----------------------- 
    # Base de Datos: ejemplodb 
    # Estructura de la Tabla 'prueba' 
     
    CREATE TABLE prueba ( 
      ID_Prueba int(11) NOT NULL auto_increment, 
      Nombre varchar(100), 
      Apellidos varchar(100), 
      PRIMARY KEY (ID_Prueba), 
      UNIQUE ID_Prueba (ID_Prueba) 
    ); 
     
    INSERT INTO prueba VALUES (1,'re','er'); 
    INSERT INTO prueba VALUES (4357,'pepin','tomas'); 
    INSERT INTO prueba VALUES (4356,'pepe','pepe'); 
    #--FIN Fichero------------------------------------ 
     
    Como veis la tabla tiene 3 campos: 
    ID_Prueba: Identificador de la tabla, es autonumerico y Clave Primaria 
    Nombre: Nombre de la persona de un maximo de 100 caracteres 
    Apellidos: Apellidos de la persona de un maximo de 100 caracteres 
     
    Ahora solo teneis que hacer el siguiente paso. 
     
    Para Recuperar la copia de seguridad de un fichero de Backup 
    [root@gigi]# mysql -u root ejemplodb -p < backup.sql 
     
    Para Crear una copia de seguridad de la Base de Datos 
    [root@gigi]# mysqldump  -p ejemplodb > backup.sql 
     
    Para Consultas a la Base de Datos 
    [root@gigi]# mysql -e "select * from prueba" ejemplodb -p 
    [root@gigi]# mysql -e "select * from prueba where ID_Prueba=1" ejemplodb -p 
     
    Mostrar todas las Bases de Datos 
    [root@gigi]# mysqlshow 
    +-----------+ 
    | Databases | 
    +-----------+ 
    | ejemplodb | 
    | mysql     | 
    | test      | 
    +-----------+ 
     
    Mostrar las tablas de ejemplodb 
    [root@gigi]# mysqlshow ejemplodb 
     
    Database: ejemplodb 
    +--------+ 
    | Tables | 
    +--------+ 
    | prueba | 
    +--------+ 
     
    Mostrar la tabla 'prueba' que hemos creado 
    [root@p90 ejemplo]# mysqlshow ejemplodb prueba 
    Database: ejemplodb  Table: prueba  Rows: 3 
    +-----------+--------------+------+-----+---------+----------------+---------------------------------+ 
    | Field     | Type         | Null | Key | Default | Extra          | Privileges                      | 
    +-----------+--------------+------+-----+---------+----------------+---------------------------------+ 
    | ID_Prueba | int(11)      |      | PRI |         | auto_increment | select,insert,update,references | 
    | Nombre    | varchar(100) | YES  |     |         |                | select,insert,update,references | 
    | Apellidos | varchar(100) | YES  |     |         |                | select,insert,update,references | 
    +-----------+--------------+------+-----+---------+----------------+---------------------------------+ 
    

    Volver


    Conexión a la base de datos

    Con este codigo conseguiremos hacer una conexión muy sencilla a la Base de Datos 'ejemplodb' que hemos creado anteriormente. Simplemente comprobara si existe o no la Base de Datos 'ejemplodb'

    Crearemos el fichero consultar.php que las siguientes linias:

    #--Inicio Fichero consultar.php-----------------------

     
    <?php 
     
    function Conectarse() 
    { 
    	if (!($link=mysql_connect("localhost","root","root"))) 
    	{ 
    		echo "Error conectando a la base de datos."; 
    		exit(); 
    	} 
    	if (!mysql_select_db("ejemplodb",$link)) 
    	{ 
    		echo "Error seleccionando la base de datos."; 
    		exit(); 
    	} 
    	return $link; 
    } 
     
    $link=Conectarse(); 
    echo "Conexión con la base de datos conseguida.
    "; mysql_close($link); //cierra la conexion ?>

    #-- Fin Fichero consultar.php-----------------------

  • $link=Conectarse();
    Se va a la funcion Conectarse().
  • if (!($link=mysql_connect("localhost","root","root")))
    Mira de conectarse a la IP con el usuario y Pasword 'Root'.
  • if (!mysql_select_db("ejemplodb",$link))
    Comprueba la existencia de la Base de Datos a 'ejemplodb' con la IP, usuario y Pasword correctos.
  • mysql_close($link);
    Una vez que hemos terminado de usar el vínculo con la base de datos, lo liberaremos para que la conexión no quede ocupada.

    Volver


    Consultas a la base de datos

    Usaremos el ejemplo anterior para crear las conexiones a la Base de Datos a traves de un fichero que nos facilitara el trabajo de no tener que repetir el codigo cada vez que lo necesitemos.

    Crearemos el fichero conex.phtml que las siguientes linias:

    #--Inicio Fichero conex.phtml-----------------------

     
    <?php 
     
    function Conectarse() 
    { 
    	if (!($link=mysql_connect("localhost","root","root"))) 
    	{ 
    		echo "Error conectando a la base de datos."; 
    		exit(); 
    	} 
    	if (!mysql_select_db("ejemplodb",$link)) 
    	{ 
    		echo "Error seleccionando la base de datos."; 
    		exit(); 
    	} 
    	return $link; 
    } 
     
    ?> 
    
    #-- Fin Fichero conex.phtml-----------------------

    El Fichero insertar.php es un formulario que nos permite introducir nombre y apellido para añadirlo a la base de datos, seguido de una consulta que nos muestra el contenido de la tabla prueba. El formulario llama a la pagina insertar.phtml que añadirá los datos a la tabla.

    #--Inicio Fichero insertar.php-----------------------

     
    <html>
    <head>
       <title>Ejemplo de PHP</title>
    </head>
    <body>
    <H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
    <FORM ACTION="insertar.phtml">
    <TABLE>
    <TR>
       <TD>Nombre:</TD>
       <TD><INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30"></TD>
    </TR>
    <TR>
       <TD>Apellidos:</TD>
       <TD><INPUT TYPE="text" NAME="apellidos" SIZE="20" MAXLENGTH="30"></TD>
    </TR>
    </TABLE>
    <INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
    </FORM>
    <hr>
    <?php
       include("conex.phtml");
       $link=Conectarse();
       $result=mysql_query("select * from prueba",$link);
    ?>

       <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
          <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD></TR>
    <?php      

       while($row = mysql_fetch_array($result)) {
          printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>", $row["Nombre"], $row["Apellidos"]);
       }
       mysql_free_result($result);
       mysql_close($link);   
    ?>

    </table>
    </body>
    </html>

    #-- Fin Fichero insertar.php-----------------------

    Crearemos el fichero insertar.phtml que nos servira para hacer inserciones en la Base de Datos con las siguientes linias:

    #--Inicio Fichero insertar.phtml-----------------------

     
    <?php 
       include("conex.phtml"); 
       $link=Conectarse(); 
       mysql_query("insert into prueba (Nombre,Apellidos) values ('$nombre','$apellidos')",$link); 
        
       header("Location: insertar.php"); 
    ?> 
    
    #-- Fin Fichero insertar.phtml-----------------------

    Volver


    Borrado de registros

    El Fichero borrar.php es un formulario que nos permite indicar que elemento vamos a borrar usado un enlace a la página borrar.phtml pasándole el ID_Prueba de cada registro, de esta manera la página borrar.phtml sabe que elemento de la tabla ha de borrar.

    #--Inicio Fichero borrar.php-----------------------

     
    <html>
    <head>
       <title>Ejemplo de PHP</title>
    </head>
    <body>
    <H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>

    <?php
       include("conex.phtml");
       $link=Conectarse();
       $result=mysql_query("select * from prueba",$link);
    ?>

       <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
          <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD> <TD>&nbsp;<B>Borrar</B>&nbsp;</TD></TR>
    <?php      

       while($row = mysql_fetch_array($result)) {
          printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td> <a href=\"borra.phtml?id=%d\">Borra</a></td></tr>", $row["Nombre"],$row["Apellidos"],$row["ID_Prueba"]);
       }
       mysql_free_result($result);
       mysql_close($link);
    ?>

    </table>
    </body>
    </html>
    #-- Fin Fichero borrar.php-----------------------

    La página borra.phtml se conecta a la base de datos y borra el registro indicado en la variable $id que ha sido pasado desde la página borrar.php. Una vez el registro se ha borrado se vuelve a cargar la página borrar.php

    #--Inicio Fichero borrar.phtml-----------------------

     
    <?php 
       include("conex.phtml"); 
       $link=Conectarse(); 
       mysql_query("delete from prueba where ID_Prueba = $id",$link); 
       header("Location: borrar.php"); 
    ?> 
    
    #-- Fin Fichero borrar.phtml-----------------------

    Volver


    Configurar phpMyAdmin

    Configurar phpMyAdmin(3)

    En la Introducción hemos visto como instalar phpMyAdmin en:
    [root@gigi]# cd /home/httpd/html/myadmin

    Estas son las linias que tendras que tocar para que te funcione, las que no necesites no las pongo

     
    $cfgServers[1]['host'] = 'localhost'; // pon aqui tu IP 
    $cfgServers[1]['port'] = '80'; // Pon el puerto que uses en la web 
    $cfgServers[1]['adv_auth'] = false; 
    $cfgServers[1]['user'] = 'root'; // pon el usuario 
    require("spanish.inc.php3"); // libreria en Castellano 
    
    El fichero 'spanish.inc.php3' tiene algun que otro error en la traducción, pero lo puedes editar y corregirlo a mano

    Volver


    ODBC en MYSQL

    Teneis el articulo de Como Acceder via ODBC a nuestro MySQL(4) que te lo explica paso a paso, y tambien tienes Como Acceder via ODBC a nuestro PostgreSQL(5), te resolveran las dudas del acceso mediante ODBC

    Volver


    Nota: Este articulo lo ire retocando a medida que encuentre errores, que seguro que los hay, y pondre en breve los ficheros comprimidos con los ejemplos para que los puedas usar directamente, tened paciencia


    Bibliografia:

  • http://bulma.net(6)
  • http://webestilo.com/php/(7)
  • http://www.php-es.com/(8)
  • http://www.nusphere.com/(9)
  • http://rpms.arvin.dk/(10)
  • http://www.navegalia.com/personal/gginard/mispag.htm(11)


    Lista de enlaces de este artículo:
    1. http://phpwizard.net/projects/phpMyAdmin/
    2. http://bulma.net/test.php
    3. http://bulma.net/phpmyadmin.php
    4. http://bulma.net/body.phtml?nIdNoticia=703
    5. http://bulma.net/body.phtml?nIdNoticia=385
    6. http://bulma.net
    7. http://webestilo.com/php/
    8. http://www.php-es.com/
    9. http://www.nusphere.com/
    10. http://rpms.arvin.dk/
    11. http://www.navegalia.com/personal/gginard/mispag.htm

  • E-mail del autor: gginard _ARROBA_ gmail.com
    Podrás encontrar este artículo e información adicional en: http://bulma.net/body.phtml?nIdNoticia=628