Agenda Basica con PHP/MySQL

Este lo hice hace ya un poco de tiempo, cuando estaba comenzando, asi que ahi les va un vil CopyPaste, nisiquiera un review, es el mismo exactamente (Falta de tiempo y eso) XD

El objetivo de este ejemplo no es hacer una agenda con todas las posibles funcionalidades, sino mas bien mostrar las operaciones basicas de una BD en MySQL con PHP. Tampoco pretende ser una guia definitiva, sino mas bien una guia de orientacion para principiantes, por lo que gran parte de lo aqui presentado puede y debe ser optimizado por el lector. Este tutorial requiere tener creada una BD de nombre "agenda";, y dentro de ella una tabla llamada "contactos"; con los campos: ID[Extra: auto_increment], nombre, email, telefono.

Nota:Aún cuando este tutorial esta pensado para novatos, te aconsejo leeas el Tutorial basico de Base de Datos y Como crear bases de datos mysql desde el cpanel.
Las aclaraciones al igual que los comentarios del autor irán entre corchetes [Aclaración/ComentarioAutor]

Si no pudiste crear la BD estas son las consultas SQL necesarias, solo introducelas en la pestaña SQL o directamente a la consola de SQL

Para crear la BD:

MySQL:
  1. <b>CREATE DATABASE `agenda`;</b><br />Para crear la tabla:<b>CREATE TABLE `contactos` (
  2. `ID` INT( 2 ) NOT NULL AUTO_INCREMENT ,
  3. `nombre` MEDIUMTEXT NOT NULL ,
  4. `email` MEDIUMTEXT NOT NULL ,
  5. `telefono` MEDIUMTEXT NOT NULL ,
  6. PRIMARY KEY ( `ID` )
  7. ) TYPE = MYISAM COMMENT = 'Tabla para gestionar los datos de los contactos de mi agenda';</b></p>

Documentación:

  • Formulario para actualizar un contacto:
    • Cajas de texto: nombre, email y telefono
    • Boton actualizar.
  • Scripts PHP:
    • Conectar.php: Encargado de hacer la autentificación y conectarse a la Base de Datos
    • AgregarContacto.php: Sript que recibe el nombre, email y telefono de nuestro contacto, para despues agregarlo a la BD
    • BuscarContacto.php: Busca en la BD y muestra las coincidencias con la palabra buscada.
    • MuestraActualizaDatos.php: Recibe la ID del contacto, muestra sus datos y actualiza los datos en la BD
    • EliminaContacto.php: Recibe la ID del contacto y lo elimina de la BD
  • Empezaremos por hacer un sencillo formulario para agregar contactos, esto solo es el lado HTML:

    HTML:
    1. &lt;form name=&quot;form1&quot; method=&quot;post&quot; action=&quot;AgregarContacto.php&quot;&gt;<br />
    2. Nombre: &lt;input type=&quot;text&quot; name=&quot;nombre&quot;/&gt;<br />
    3. e-mail: &lt;input type=&quot;text&quot; name=&quot;email&quot;/&gt;<br />
    4. telefono: &lt;input type=&quot;text&quot; name=&quot;telefono&quot;/&gt;<br />
    5. &lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Enviar&quot;/&gt;<br />
    6. &lt;/form&gt;

    Esto solo es un simple formulario, que envia las variables por el metodo post [method="post"] al archivo AgregarContacto.php [action="AgregarContacto.php"].

    Ahora viene la parte donde PHP entra en escena, asi que empezaremos por el script que nos conecta a la BD.

    Conectar.php.

    PHP:
    1. &lt;?php <br />
    2. function  Conectar() <br />
    3. { <br />
    4. //Establecemos una conexi&oacute;n al servidor, especificando el servidor al que queremos conectarnos[generalmente &quot;localhost&quot;] al igual que un usuario y contrase&ntilde;a.<br />
    5. if (!($link= mysql_connect ( &quot;tuServidor&quot; , &quot;tuUsuario&quot; , &quot;tuPassword&quot; )))<br />
    6. { <br />
    7. echo &quot;Error de conexion a la BD, verifique que el usuario y contrase&ntilde;a que proporcion&oacute; sean correctos.&quot;; <br />
    8. exit ();//Si la conexi&oacute;n fue fallida, terminamos de ejecutar el script. Es una especie de break para el script. <br />
    9. } <br />
    10. return $link; //Regresamos la ID de la conexion, en caso de ser fallida esta linea no llega a ejecutarse.<br />
    11. } <br />
    12. ?&gt;

    AgregarContacto.php

    PHP:
    1. &lt;?php      include(&quot;Conectar.php&quot;);//Importamos el script que hace la conexi&oacute;n          if($conexion=Conectar())//Nos conectamos, $conexion guarda la ID de conexion..          {      mysql_select_db(&quot;agenda&quot;,$conexion);//mysql_select_db nos permite seleccionar una BD previamente creada, su primer parametro es el nombre de la BD y el segundo la ID de la conexion.       //Guardamos en $sql las sentencias SQL,con las cuales insertamos en la tabla &quot;contactos&quot; los datos nombre, email, telefono.            $sql=&quot;INSERT INTO `contactos` (`ID`,`nombre`,`email`,`telefono`) VALUES ('','$nombre','$email','telefono');&quot;;      if(mysql_query($sql,$conexion))//con mysql_query enviamos una consulta SQL a la MySQL. El primer parametro es la consulta SQL[las guardamos en el string $sql] y el segundo, la ID de la conexion.          {        //Mostramos los datos que vamos a actualizar en pantalla              echo &quot;&lt;p&gt;&lt;strong&gt;Datos que se actualizaron en la BD&lt;/strong&gt;&lt;/p&gt;\n&quot;;            echo &quot;&lt;p&gt; Nombre: &quot;.$nombre.&quot;&lt;/p&gt;&lt;p&gt;email: &quot;.$email.&quot;&lt;/p&gt;&lt;p&gt;Tel&eacute;fono: &quot;.$telefono.&quot;&lt;/p&gt;\n&quot;;            }         else        {echo &quot;Problemas al guardar los datos&quot;;}//Puede que la tabla o algun campo que pusiste en la sentencia SQL[string $sql] no exista en la BD. Reviza tu String $sql                  }          else{echo &quot;Problemas al conectarse a la BD&quot;;}   ?&gt;

    Al principio del tutorial se te pidio que previamente crearas la BD con las especificaciones que el mismo requeria, una de ellas es que el campo ID tuviera como extra "auto_increment". Cuando creaste la tabla te pidio las propiedades que se le asignarian a cada campo, si lo creaste desde phpMyAdmin, la propiedad extra auto_increment se encuentra al final del extremo derecho de la pagina. Por si acaso dejo un screen:

    Auto_Increment

    BuscarContacto.php

    PHP:
    1. &lt;html&gt;
    2. &lt;head&gt;
    3.   &lt;title&gt;Busqueda por nombre del contacto'')//Verificamos que el que el campo nombre no este vacio
    4.  {<br />
    5.   $tabla=&quot;contactos&quot;; $campo=&quot;nombre&quot;;<br />
    6.   $sql=mysql_select_db(&quot;agenda&quot;,$conexion);//Seleccionamos la BD agenda<br />
    7.   //Selecionamos todos los registros de la tabla contactos, que contengan el nombre que estamos buscando[&quot;%&quot; es un comodin, es como el &quot;*&quot; al hacer busquedas de archivos en el PC] y le pedimos que las coincidencias nos las ordene segun el valor de la ID de cada contacto[&quot;ORDER BY&quot;].<br />
    8.   $sql=&quot;SELECT * FROM $tabla WHERE $campo LIKE '%$buscado%' ORDER BY $campo&quot;;<br />
    9.   $resultado=mysql_query($sql,$conexion);<br />
    10.   if($fila=mysql_fetch_array($resultado))//Si se encontr&oacute; alguna coincidencia......<br />
    11.   {<br />
    12.   echo &quot;&lt;table border='1'&gt;&quot;;//...pues mostramos los resultados en una tabla<br />
    13.   echo &quot;&lt;tr&gt;&lt;td&gt;ID&lt;/td&gt;&lt;td&gt;Nombre&lt;/td&gt;&lt;td&gt;e-mail&lt;/td&gt;&lt;td&gt;Tel&eacute;fono&lt;/td&gt;&lt;/tr&gt;&quot;;<br />
    14.   <br />
    15.   do {<br />
    16.   echo &quot;&lt;tr&gt;&quot;;<br />
    17.   echo &quot;&lt;td align='center'&gt;&quot;.$fila[&quot;ID&quot;].&quot;&lt;/td&gt;&quot;;<br />
    18.   //En el nombre, insertamos un hipervinculo a MustraDatosActualiza.php al cual le pasamos todos los parametros en la url.[para fines educativos esto sirve ;) ]<br />
    19.   echo &quot;&lt;td&gt;&lt;a href='MuestraActualizaDatos.php?ID=&quot;.$fila[&quot;ID&quot;].&quot;&amp;nombre=&quot;.$fila[&quot;nombre&quot;].&quot;&amp;telefono=&quot;.$fila[&quot;telefono&quot;].&quot;&amp;email=&quot;.$fila[&quot;email&quot;].&quot;'&gt;&quot;.$fila[&quot;nombre&quot;].&quot;&lt;/a&gt;&lt;/td&gt;\n&quot;;<br />
    20.   echo &quot;\t&lt;td&gt;&quot;.$fila[&quot;telefono&quot;].&quot;&lt;/td&gt;&quot;;<br />
    21.   echo &quot;\t&lt;td&gt;&quot;.$fila[&quot;email&quot;].&quot;&lt;/td&gt;&quot;;<br />
    22.   echo &quot;&lt;/tr&gt;&quot;;<br />
    23.   }while($fila = mysql_fetch_array($resultado)); //Mientras exista un resultado que mostrar<br />
    24.   } <br />
    25.   }else {echo  &quot;Porfavor introduce un nombre a buscar&quot;;}<br />
    26.   }<br />
    27.   }<br />
    28.   else{echo &quot;Problemas al conectarse a la BD&quot;;}<br />
    29.   }else//quiere decir que no se ah realizado ninguna busqueda, porque no se ah recibido el valor de $ValidarPHP con el metodo post <br />
    30.   {echo &quot;&iquest;cual es el nombre del contacto que quieres buscar?&quot;;}
    31. <p>?&gt;</p>

    Para fines practicos se inserto codigo HTML en el php, para no tener que enviar los datos a otro archivo php. Esto gracias a que tenemos un cuadro de texto oculto, al cual le asignamos un valor[<input n ame="ValidarPHP" type="hidden" value="1">], y solo entraremos a ejecutar el script si se recibio el valor "1" correspondiente al asignado en el formulario. Tambien hay que recordar que se inserta un hiperviculo mediante el cual se le envian los datos del registro al archivo MuestraActualizaDatos.php para su posterior actualizacion.

    MuestraActualizaDatos.php

    PHP:
    1. &lt;?php<br />
    2.   <br />
    3. echo &quot;&lt;html&gt;&lt;br /&gt;&lt;head&gt;&lt;title&gt;Actualizando datos&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h3&gt;Datos a actualizar de $nombre: &lt;/h3&gt;&lt;form name='DatosCliente' method='post' action='MuestraActualizaDatos.php'&gt;&lt;input name='ID' type='hidden' value='&quot; . $ID.&quot;'/&gt;&lt;input name='Evaluador' type='hidden' value='1'/&gt;&lt;p&gt;&lt;textarea name='nombre' id='nombre'&gt;&quot;.$nombre.&quot;&lt;/textarea&gt;&lt;/p&gt;&lt;p&gt;&lt;textarea name='email' id='email'&gt;&quot;.$email.&quot;&lt;/textarea&gt;&lt;/p&gt;&lt;p&gt;&lt;textarea name='telefono' id='telefono'&gt;&quot;.$telefono.&quot;&lt;/textarea&gt;&lt;/p&gt;&lt;input type='submit' name='submit' value='Actualizar'/&gt;&lt;/form&gt;&lt;/body&gt;&quot;;<br />
    4. if($Evaluador)<br />
    5. {<br />
    6. include(&quot;Conectar.php&quot;);//Importamos el script que hace la conexi&oacute;n<br />
    7. if($conexion=Conectar())//Nos conectamos, $conexion guarda la ID de conexion..<br />
    8. {<br />
    9. if($sql=mysql_select_db(&quot;agenda&quot;,$conexion))<br />
    10. {<br />
    11. $sql=&quot;UPDATE contactos SET nombre='$nombre',telefono='$telefono',email='email'WHERE  ID=$ID&quot;;<br />
    12. $resultado=mysql_query($sql,$conexion);//Hacemos la consulta para actualizar los datos<br />
    13. if($resultado)<br />
    14. {echo &quot;&lt;p&gt;Datos del cliente actualizados.&lt;/p&gt;&quot;;}<br />
    15. else<br />
    16. {echo &quot;Los datos del cliente no fueron actualizados, problemas con la conexi&oacute;n a la BD&lt;p&gt;&lt;/p&gt;&quot;;}<br />
    17. }else {echo &quot;Problemas al seleccionar la tabla&quot;;}<br />
    18. }else {echo &quot;Problemas al conectarse a la BD&quot;;}<br />
    19. //Liga para regresar a la pagina anterior[Los resultados] || Eliminar el contacto || Buscar otro contacto <br />
    20. }else{echo &quot;Modifica los campos necesarios para actualizar&quot;;}<br />
    21. echo &quot;&lt;p&gt;&lt;a href='javascript:history.back()'&gt;Regresar&lt;/a&gt; || &lt;a href=EliminaContacto.php?ID=&quot;.$ID.&quot;&gt;Eliminar Contacto&lt;/a&gt;||&lt;a href='BuscaContacto.php'&gt;Buscar otro contacto&lt;/a&gt;&lt;/p&gt;&quot;;<br />
    22. ?&gt;

    Al igual que en formulario de buscar, se agrego una caja de texto invisible, para tomarlo como bandera y decidir si ejecutar la busqueda o esperar a que el usuario actualize

    EliminaContacto.php

    PHP:
    1. <?php
    2.    include("Conectar.php");//Importamos el script que hace la conexión
    3.    if($conexion=Conectar())//Nos conectamos, $conexion guarda la ID de conexion..
    4.    {
    5.     mysql_select_db("agenda",$conexion);
    6.     $sql="DELETE FROM contactos WHERE ID=$ID";
    7.     $resultado=mysql_query($sql,$conexion);
    8.     if($resultado)
    9.      {echo "Registro $ID eliminado correctamente";}
    10.     else
    11.     {echo "Problemas al eliminar";}
    12.    }
    13.    else{echo "Problemas al conectar a la BD";}
    14. ?>

    Para este script solo era necesario enviar la pura ID, tambien se pudo enviar el nombre y personalizar un poco mas la eliminacion. Si se desea conservar los datos, pero solo darlos de baja; una buena solucion es agregar un campo mas a la tabla en el cual se indica el estado del registro[Activo=1/Inactivo=0]

    Tambien esta disponible una version lista para imprimir: aqui


    Sin categoría

    If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

    Comments

    Es cosa mía, o te has colado en el copia pega de los dos primeras archivos .php
    Son identicos!!!

    Cachis, con lo bien que iba :D

    oye disculpa tengo dudas en lsa secuencia insert into, os campos debia declararlos como text o como char,

    $sql="INSERT INTO `contactos` (`ID`,`nombre`,`email`,`telefono`) VALUES (‘’,’$nombre’,’$email’,’telefono’);";

    ese punto y coma antes de las comillas dobles de cierre deberia de existir? en en values por que aparece las comillas simples sin nada las que pertenecen al ID.

    Muchas gracias por tu ayuda y por tu colaboración

    he armado todo de nuevo llegue hasta la captura de la información, aumentado algunas cositas
    paara una aplicación practica pero................ NO PASO
    DE.......... {echo "Los datos del cliente no fueron actualizados, problemas con la conexión a la BD";}
    REVISE TODO NO SE ENCUENTRO EL ERROR

    AGRADECERE CUALQUIER COLABORACIÓN
    GRACIAS

    Actualizando datos


    Registro de: $ID

    Apellidos / Fecha de Nacimiento:
    ".$nombre."
    ".$apellido."
    ".$nacido."
    Numero de Registro CAULP / Ultima Cuota CANCELADA
    ".$caulp."
    ".$cuotas."
    Domicilio / Macrodistrito-Distrito-OTB:
    ".$dir."
    ".$zona."
    E-mail / Teléfono / Célular :
    ".$email."
    ".$telefono."
    ".$celular."
    Organización en la que trabaja / Nombre de la unidad /Cargo:
    ".$empresa."
    ".$eunidad."
    ".$ecargo."
    Teléfonos / Dirección / Zona / Ciudad:
    ".$etelefono."
    ".$edir."
    ".$ezona."
    ".$eciudad."

    ";

    if($Evaluador)
    {
    include("conectar.php");//Importamos el script que hace la conexión
    if($conexion=Conectar())//Nos conectamos, $conexion guarda la ID de conexion..
    {
    if(mysql_select_db("etica",$conexion))
    {
    $sql="UPDATE contactos SET
    nombre='$nombre',
    apellido='$apellido',
    nacido='$nacido',
    ci='$ci',
    de='$de',
    caulp='$caulp',
    cuotas='$cuotas',
    dir='$dir',
    zona='$zona',
    email='$email',
    telefono='$telefono'
    celular='$celular'
    empresa='$empresa'
    edir='$edir'
    ezona='$ezona'
    eciudad='$eciudad'
    etelefono='$etelefono'
    eunidad='$eunidad'
    ecargo='$ecargo'
    WHERE ID=$ID LIMIT 1"; // where caompo definico
    $resultado=mysql_query($sql,$conexion);
    //Hacemos la consulta para actualizar los datos
    if($resultado)
    {echo "Datos del cliente actualizados.\n";}
    else
    {echo "Los datos del cliente no fueron actualizados, problemas con la conexión a la BD";}
    }else {echo "Problemas al seleccionar la tabla";}
    }else {echo "Problemas al conectarse a la BD";}
    //Liga para regresar a la pagina anterior[Los resultados] || Eliminar el contacto || Buscar otro contacto

    }else{echo "Modifica los campos necesarios para actualizar";}
    echo "||Regresar || Eliminar el Registro||Buscar otra vez||Registro Todo de Nuevo||";
    ?>

    Alguien me puede decir como como declaro variables en php, y ademas como identificar tipo de datos, como notaran no se nada de esto pero necesito saber eso, ya uqe tengo que hacer una agenda en este leguaje de programacion, y no tengo idea.

    tengo un problema con Conectar.Php para Minichat me podrias ayudar

    oye no entiendo muy bien la parte decodigo de
    BuscarContacto.php
    esta parte>
    php]

    Busqueda por nombre del contacto'')//Verificamos que el que el campo nombre no este vacio
    {
    el tag .......no se cierra?

    Si se cierra, es problema con el theme Actual de Wordpress.
    Gracias.

    Dejar un comentario

    (requerido)

    (requerido)