Empezando con PHP + mySQL

Ok me he decidido a hacer una segunda guia, muy general, porque la primera se enfoco mas en XHTML y CSS y quedo muy corta en esta parte del PHP y mySQL, asi que vamos a esta vez enfocarnos mas a la parte dinamica, tomando como ejemplo transformar una pagina estatica en dinamica, peeeeero antes veamos algunas cosas importantes

Primero tenemos que saber que es PHP, que se usa como lenguaje del lado de servidor para intercambiar datos de manera dinamica, y que es usado en conjunto con HTML para generar una presentación para esos datos. Ahora aclaremos un par de cosas, el codigo PHP es invisible para el usuario, cuando terminemos el ejemplo, la pagina dinamica y estatica seran iguales, salvo por el tiempo que tarde la dinamica en hacer las consultas. (no ni siquiera si le dan ver codigo fuente podran ver el codigo php)

Ahora como es la sintaxis?

nota: asegurense de que el < y el ? esten pegados porque sino no les va a funcionar, aqui estan separados

< ?php
echo "hola mundo";
?>

Ya hicimos el clasico Hola mundo, pero en PHP. Ahora como lo pruebo desde mi casa? instala alguno de los paquetes que te crea un servidor local sin mucha complicación, una vez hagas eso, ya podras “compilar” el codigo PHP

Ahora intentemos entender un poco esto de PHP. Cualquier pagina dinamica(este blog incluso) es desplegado por el navegador basado en codigo HTML, que no es mas que “generado” por un monton de archivos php detras, digamos que el resultado del codigo php es HTML (perdoname FSM, pero es que asi se entiende mas facil) ok ahora vayamos a hacer las pruebas, que asi es que se aprende

Primero, imaginense que la pagina estatica tiene un diseño bastante unificado es decir es lo mismo en todas las secciones y solo cambia el contenido, ahora tenemos que llevar eso a dinamico, el primer paso es crear una BD, que pueden hacerlo mediante phpMyAdmin, no es objeto de este articulo asi que no lo explico, en dicha BD(que llamaremos ejemplo) creamos 1 tabla que se llamara “paginas” y que tendra como atributos: id, nombre y contenido, nada del otro mundo.

Ahora vamos a conectarnos a la BD

< ?php
function Conectarse()
{
$user="root";
$pass="";
if (!($conex=mysql_connect("localhost",$user,$pass)))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("ejemplo",$conex))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $conex;
}
?>

Aqui especificamos el usuario y el password para verificar conexión, luego seleccionamos la BD y retornamos el string de conexión. Como esta es una función bastante especifica y que usaremos mas de una vez la colocamos en un archivo aparte que llamamos “conex.php”

Ahora necesitamos hacer consultas a la BD, ahora no vamos a ver en especifico que consultas se pueden hacer, pero aqui hay un buen tuto, asi que sigamos haciendo la pagina dinamica

Lo primero que uno nota, es que la pagina en sus distintas paginas, la presentación es la misma, solo cambia el contenido de la sección central, entonces, esta pagina que estamos “dinamizando” tiene 3 secciones: Inicio, Acerca y Contacto, entonces, podriamos crear 3 php donde en cada uno se consulta la entrada en la BD que contenga la info de esa pagina en particular, peeeeero, no estariamos haciendolo como deberiamos y con la facilidad que nos permite php, lo que vamos a hacer es lo siguiente.

Vamos a usar un solo archivo php(el index) para mostrar las 3 paginas(inicio, acerca, consulta) y tendremos una variable que nos dira que toca consultar en determinado momento, ya asi hasta se escucha mejor no?

primero es lo primero, vamos a hacer la función que se va a encargar de consultar lo que le digamos por medio de una variable

< ?php
include("conex.php");
function pagina($id)
{
if(!$id){
$id=1;
}
$link = Conectarse();
$result = mysql_query("SELECT * FROM Paginas WHERE id=$id",$link);
if(!$result){
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
else{
while ($row = mysql_fetch_assoc($result)) {
echo $row['nombre'];
echo $row['contenido'];
}
}
mysql_close($link);
}
?>

Y como buenos programadorres modulares que son todos uds, este sera otro archivo que llamamos “funciones.php”. Ahora veamos que hacemos aqui, noten que lo primero que hacemos es incluir el archivo conex.php para poder usar la función que esta en ese archivo (y si mas adelante tendremos que incluir este) luego comenzamos la función pagina que fijense que recibe como parametro una variable de nombre “id” que sera quien nos diga que fila de la tabla de paginas en la BD consultaremos, primero verificamos si la variable esta definida, sino lo esta significa que estamos en el index, es decir que vamos a consultar el id = 1 que seria el contenido correspondiente a Inicio, hacemos la conexión, luego la consulta y despues “imprimimos” (con el comando echo) los resultados, ahora cerramos nuestra conexión y listo.La idea es que funciones.php nos sirva para tener mas funciones no esta sola, sino quizas tambien insertar, eliminar y otras.
Aqui dejo varios links interesantes de PHP.

Referencia de Funciones de PHP pueden buscar la función que no entiendan en el buscador, por ejemplo, mysql_query o mysql_fetch_assoc

Tambien aqui hay algunos articulos, tanto basicos como avanzados, en ingles. Y otro tuto de comienzo con PHP+mySQL+Apache
Ahora que ya tenemos casi todo listo toca colocar la llamada a la función que hara la consulta en el lugar adecuado del HTML, que seria dentro del div del contenido.

Como se habran imaginado la cosa es que incluimos funciones.php en nuestro index.php y donde queramos que aparezca nuestro contenido hacemos la llamada a paginas de esta manera

< ?php
@pagina($_GET[pagina]);
?>

Ahora se preguntaran que demonios es eso, y pues es la llamada a la función, el “GET” lo que hace es que toma el valor de la variable que esta en la barra de direcciones, y uds diran, pero si no hemos hablado de eso, y tienen razón, fijense una de las maneras(insegura) de pasar variables es asi, la pasas en la dirección(URL) ahora en vez de linkear a “contacto.html” o “acerca.html“, linkearemos asi:

index.php?pagina=2 o index.php?pagina=3

De esa manera le pasamos al index una variable de nombre pagina con el valor que tenga luego del igual, y eso lo recibe el “GET” y se lo pasa como parametro a la función pagina. c00l no?

Bueno ya el resto es cosa de imaginación, darle presentación a la información que recuperan de la BD pueden hacerlo de 2 maneras o directamente sobre la BD o mediante el codigo php, haciendo echo de algun tag html, uds decidiran que es mejor para cada caso.

Tambien pueden averiguar otras maneras de pasar variables entre documentos, y bueno otro monton de cosas mas, espero que este les haya ayudado aun mas que el primero que voy a modificar y dejar solo como XHTML y CSS

Siempre tengan a la mano la referencia oficial de php

This entry was posted in General, Internet, Programacion, Prozac. Bookmark the permalink.

12 Responses to Empezando con PHP + mySQL

  1. Gubatron says:

    Algunas Recomendaciones:

    -> No hagas directamente $_GET[''] o $_POST[''] o $_REQUEST[] para los valores de las variables. Es preferible hacer esto:

    function getParameter($paramName) {
    return (isset($_REQUEST[$[$paramName]) ? $_REQUEST[$paramName] : null; }

    -> Trata de utilizar “include_once” si sabes que no vas a necesitar incluir de nuevo. Generalmente cuando necesitas incluir librerias con clases o funciones utiles.

    -> Lee la diferencia entre “include” y “require”

    -> No utilizes las funciones “mysql_” para conectarte a la base de datos, utiliza PEAR::DB. Es orientada a objetos, y te permite utilizar cualquier manejador de base de datos aparte de MySQL.

    -> Cualquier duda de PHP, pueden ir a http://www.linuxmachos.org, o pueden preguntarnos en irc.freenode.net en el canal #php-ve

    Saludos.

  2. Prozac says:

    pues si queda mucho mejor con la función de los parametros :P

    buena anotación acerca de lo del include_once

    aqui dejo algunos enlaces, para los interesados en la diferencia entre include y require(algunos en ingles otros en español), muy buena anotación tambien

    ya me han comentado bastante acerca de PEAR, lo tendre muy en cuenta cuando me toque desarrollar de ahora en adelante, y cuando tenga “algun” conocimiento acerca les comento como me fue

    Gracias por la ayuda man!!
    Saludos y que bueno que te pases por aqui!

  3. demimismo says:

    Muy bueno :-)

    En lo que te dicen de usar PEAR:DB… sinceramente, si buscas una forma de acceder a bases de datos de forma abstracta y sencilla está bien, pero eso de hacerlo porque se puede “enchufar” con cualquier gestor de bases de datos… es una estupidez, lo siento. Mira que llevo años usando este tipo de capas de abstracción, en mi vida he tenido que cambiar una aplicación de MySQL a Postgres o ponga-aqui-el SGBD que quiera.

    Lo que sí recuerdo es una query con 3 joins que tardaba 10 veces más usando PEAR:DB que con las funciones MySQL de PHP.

    Saludos.

  4. Prozac says:

    mmm buen punto, pero imagino que nunca esta de mas probar claro cuando la velocidad de la consulta es critica pues si hay que considerarlo

  5. Daniel Ortega says:

    Hola

    Muy buen articulo, estoy probando las conexiones entre PHP y MySQL y me han resolvido algunas dudas. Solo hay una, cuando mando una variable por medio de un “SUBMIT” de un .html a un .php marca vacia la variable en el .php (lo compruebo con el isset($variable)) esto me ha dado dolores de cabeza ya que hago exactamente lo mismo que en sus códigos pero nada. Le he cambiado en el formulario el method pero nada, el unico cambio que veo es en la direccion, que al final me manda el nombre de la variable con su valor asignado (…prueba.php? variable = ‘algun_nombre’) pero el resultado del isset es vacio.
    Puede ser algun error de la version del PHP?
    Algun error en el metodo del formulario?
    Falta incluir alguna libreria, DLL u alguna otra cosilla?

    Por cierto tengo el wampServer (PHP, MySql y Apache juntos)

    Su ayuda la agradeceria infinitamente y si requieren de algun socket en Java o algo relacionado en eso con gusto les puedo ayudar (no soy muy experto pero de que les ayudo les ayudo)

    Gracias

    Si me contestan a mi mail es mucho mejor
    danielnakata@hotmail.com

    Felices fiestas navideñas 2006

  6. Prozac says:

    depende del metodo que uses para pasar las variables, debes recogerlas de la misma manera antes de usarlas

    var=$_GET["var"];

    ^^

    Saludos

  7. Daniel Ortega says:

    Gracias mi estimado Prozac, me sacaste de un embrollo grande
    Saludos y felices fiestas
    Sigue en pie lo de java

  8. ana says:

    Hola es muy buena tu explicacion….ahora yo quisiera saber si podrias dar una explicacion acerca de la manipulacion de los valores que contiene una variable y con ese valor(el que tiene la variable) hacer una consulta a mysql desde java por supuesto….ejemplo le doy un valor a un string(H=8 por ejemplo) y en la sentencia desde java para mysql coloco es la variable para que cuando este numero varie mysql tome es el valor de la variable y asi no tener que hacerlo maunalmente……
    estaria muy agradecida si me le das una respuesta a esta incognita……gracias

  9. Prozac says:

    en java al igual que en php se construye la consulta en un String y luego se le pasa la función encargada de ejecutarla, asi que vendria siendo en java algo asi

    sql = SELECT * FROM tabla WHERE id="+ H;

    donde H es la que usaste en el comentario anterior asignandole 8

    PD: en php se concatena usando un punto (.)

  10. miguel says:

    Abusando de los conocimientos en Programación de un buen amigo solicito se sirvan indicarme lo siguiente: Poseo una página web en construcción bajo FrontPage en la que necesito colocarle un formulario. Este formulario ya lo poseo , pero mi consulta puntual es como hago para que los “Comentarios” que tipeen los futuros visitantes se puedan leer uno debajo de otro picando un botón que diga por ejemplo “Leer todos los Comentarios” y además como hago para incorporar al formulario ese botón “Leer todos los Comentarios”. Como solo conozco algo de FrontPage en forma estática y se que esto es dinámico, no se absolutamente nada, por eso les agradeceré me indiquen como lo tengo que hacer por favor paso a paso.
    Muchas gracias.
    Atentamente.

  11. nadia says:

    hola estoy creando una pagina dinamica en php, y no puedo incluir una libreria propia. Uso include(‘nombre.php’) y luego llamo a la funcion que necesito y no hace nada, tambien probe con include_once, require…y no hay caso, por favor si alguien puede decirme que puede ser se lo voy a agradecer.
    Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>