Justi Lunes, 19 de Mayo de 2008 a las 12.58
   Imprimir artículo
elWebmaster.com

Taller de PHP: MySQL - Consultas

Taller de PHP: MySql - Consultas¡Hola de nuevo! ¿Estuvieron practicando? ¡Espero que sí! En la clase de hoy ya vamos a empezar a trabajar con Php y MySQL al mismo tiempo, quiza recién hoy van a empezar a entender todo esto que les vengo diciendo de la creación de sitios dinámicos obteniendo el contenido de la base de datos.

Veamos entonces cómo utilizar Php y MySQL en conjunto…

Tipos de Consultas

Básicamente tenemos cuatro consultas a realizar entre PHP y MySQL que son las siguientes:

  • Select: busca información en la base de datos.
  • Insert: ingresa información para almacenarla y luego ser obtenida mediante una consulta select.
  • Update: actualiza la información guardada.
  • Delete: obviamente borra la información.

Con estas cuatro consultas es que nosotros vamos a desarrollar todos nuestros sitios webs, obviamente que a medida que avanza el curso vamos a ir aprendiendo elementos más complejos, como uniones entre tablas por ejemplo, pero no nos apuremos.

Primeros pasos en PHP

Antes que nada en PHP a la hora de realizar una consulta SQL, debemos indicarle con qué base de datos queremos trabajar y conectarnos a la misma. Supongamos que tenemos nuestro archivo “noticias.php”, lo primero que tenemos que hacer es conectar con la base de datos:

<?
// datos de configuracion
$ip = 'localhost';
$usuario = 'nombre_de_usuario_que_conecta_con_la_db';
$password = 'password_de_la_db';
$db_name = 'nombre_de_la_base_de_datos_que_usamos';

// conectamos con la db
$conn = mysql_pconnect($ip,$usuario,$password)
or die();

// seleccionamos la base de datos
$huboerror = mysql_select_db($db_name,$conn)
or die();

?>

Con la función “mysql_pconnect” obtenemos la conexión con el servidor de base de datos, tenemos que completar entonces la ip al servidor, nombre de usuario y contraseña, una vez hecho esto guardamos la conexión en la variable “$conn”.
En caso de que no conecte “matamos” la aplicación (para que nuestro script no continúe corriendo).

Una vez que tenemos nuestra conexión le decimos con qué base de datos queremos trabajar, ya que es posible tener varias base de datos en un mismo servidor. Con “mysql_select_db”, le pasamos el nombre de la base de datos y la conexión que acabamos de crear y listo, ya tenemos todo preparado para comenzar con nuestras consultas.

Bien, supongamos que tenemos nuestra tabla noticias con los siguientes campos idNoticia, Título, Cuerpo y Estado. Vamos a realizar una consulta para traer el listado completo de noticias que están almacenadas en esa tabla.

A continuación de lo que escribimos antes, siempre dentro de los <? ?> vamos a poner:

$query = SELECT idNoticia,titulo,cuerpo,estado FROM `noticias`";
$response = mysql_query($query, $conn);
$c = 0;
while( $row = mysql_fetch_assoc($response) ) {
$noticia[$c] = $row;
$c++;
}

Fijense que hicimos una consulta SELECT y le indicamos los campos que queremos traer (no es necesario traer todos), luego en el FROM le decimos de qué Tabla (OJO, no confundan tabla con base de datos, por un lado tenemos la base de datos que fue la que elegimos al conectar y dentro de la base de datos tenemos muchas tablas, la semana pasada creamos una).

Con mysql_query enviamos la consulta a la base de datos activa, le tenemos que decir qué queremos hacer y le pasamos la conexión ($conn).

Luego con mysql_fetch_assoc obtenemos un array que corresponde con una fila, devolviendo en ese array los tres campos que nosotros le pedimos en este caso: idNoticia, Título y Cuerpo. Y pasa el puntero a la siguiente línea, es por eso, que usamos un while, recuerden que mientras que exista la línea en la base de datos, nos va a devolver un array en la variable row y nosotros a ese array, para no perderlo, lo pasamos a un array que llamamos “$noticia”, así de esta forma, ya tenemos toda la información de la base de datos en esa variable y no tenemos que recurrir de nuevo a la base de datos si lo necesitamos usar más adelante en el mismo script.

Por ejemplo si queremos mostrar el título de la primer noticia que tenemos en la base de datos ponemos <? echo $noticia[0]['titulo']; ?> y nos imprime en pantalla el título.

Ordenar nuestras consultas

Ahora bien, yo quiero que la última noticia que ingrese me la traiga primero, como pasa en casi cualquier blog, esto se soluciona muy fácilmente agregando en nuestra consulta la orden ORDER BY y luego indicando cómo queremos que sea: DESC (descendente) o ASC (ascendente).

Básicamente nuestro query queda:

$query = SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` ORDER BY idNoticia DESC";

Filtrar las consultas

Y qué pasa si nosotros ahora queremos traer una consulta donde solo me traiga las noticias publicadas, es decir que estado sea igual a ‘publicado’.
Para ello entre el FROM y el ORDER debemos ubicar una nueva cláusula que es WHERE y ahí le indicamos qué campo queremos que sea igual a qué, es decir:

$query = SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` WHERE estado = 'publicado' ORDER BY idNoticia DESC";

Perfecto, eso es todo por hoy, ya a partir de la semana que viene veremos como ir insertando datos en la base mediante PHP.

<< CLASE ANTERIOR  

CLASE SIGUIENTE >>

Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (10)

  1. Karen dice:

    Gracias por las clases de php me han servido mucho, ahora las pondre en practica!!!

  2. alejandra dice:

    muy bueno el sitio recien estoy empezando voy por la clase 7 entiendo todo pero lo que necesito saber es como hago funcionar el programa y a donde tengo que escribir el codigo como hago para ver lo que hice gracias

  3. JHONNATAN LOZANO PALMA dice:

    EXECELENTE LA FORMA EN QUE SE EXPLICA EL CODIGO Y LA PROGRAMACION, SIN EMBARGO COMO RECOMENDACIÓN SERIA MUY BUENO QUE SE INCLUYERAN SCREEN SHOOTS, PARA QUE SE VISUALIZARA DENTRO DEL PROGRAMA Y LOS PROBABLES RESULTADOS CON UN EJEMPLO REAL.

  4. Melanie dice:

    HELP… por favor necesito ayuda. Estoy siguiendo tus clases todas las semanas y me parecen excelentes. A la par estoy construyendo un sitio muy simple en el cual necesito de una BD para almacenar unos 2000 registros como mucho. Trabajo con Win XP; MySQL 5.0.27; PHP Version 4.3.11;
    Apache1.3.33. Pude configurar la BD y crear un formulario con PHP para cargar datos en ella, PERO NUNCA PUDE REALIZAR LAS CONSULTAS. Me da el siguiente error: Parse error: parse error in c:\appserv\www\omvc\consulta.php on line 21 (c:\appserv\www\ es mi localhost). La línea de error es: $query = SELECT id,razonsocial,direccion,localidad FROM `curuzu`”;
    Puedo conectarme a MySQL, eso no tengo dudas ya que de lo contrario mi formulario de CARGA no funcionaria. ¿Por que aparece ese error Parse?… por favor, estoy desesperada. Gracias

  5. Justi dice:

    te esta faltando abrir las comillas antes del SELECT

  6. Mijael dice:

    hola
    felicidades por el curso es super bueno y quiziera q me ayudes a solucionar el siguiente error

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\bd.php on line 22

  7. nabor dice:

    no puedo conoectar la base al servidor, por lo qu no se si sea por que uso win vista, de lo cointyrario estare reprobado en mi cproyecto de carrera de la universidad tecnologica.
    gracias por el apoyo

  8. César Cancino dice:

    Hola Melani, el problema ahí está en la variable $query, debiera quedar así:

    $query=”select campo1,campo2,campo3 from nombre_tabla”;

    saludos…

  9. Txikitxu102 dice:

    Buenas! Hace tiempo que estaba buscando un sistema de noticias, y este me ayuda bastante xD.
    Quisiera saber como mostrar todas las noticias de la BD en vez de poner sentencias infinitas

    y más…

    No se si es con un array que recorra todo… pero no me sale.
    Pues eso si alguien sabe como hacerlo me ayudaria mucho.
    Gracias!

  10. Erikson Rodriguez dice:

    Hola, muchas gracias ya que he aclarado algunos puntos que tenia duda pero aun no he podio conectar con una db que cree y la unica manera que tengo de modificarla es por la consola de phpmyadmin necesito ayuda por favor…..

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Iniciar Sesión