No existe ninguna imagen

Como crear un juego de registro (recordset) sencillo o avanzado usando Dreamweaver CS5

Este artículo es parte de la serie enfocada en Dreamweaver y es, a la vez, una continuación de artículo que explica como configurar una conexión entre DW y MySQL. Debido a ésto último voy a añadir también las instrucciones de como crear una tabla sencilla con 4 campos usando phpMyAdmin.

Crear una tabla usando phpMyAdmin

Primero abrimos phpMyAdmin, le damos click a la base de datos que vamos a usar y donde dice: Create new table on database *el nombre de tu database escribimos el nombre de la tabla que deseamos crear el campo “Name” y “Number of fields” especificamos el número de campos de la misma. Siempre puedes agregar o eliminar campos después:

En la próxima ventana introduces la información específica de los campos a crearse. En mi caso yo voy a crear 4 campos:

  1. id – el id de la tabla (integer, incremental).
  2. nombre – sevirá de título (varchar, allow null).
  3. descripción – descripción mas información (longtext, allow null)
  4. fecha – aquí se guardará la fecha en el que se hizo el insert (datime)

Una vez hecho puedes llegar a la tabla dando un click a la base de datos. Si le das click a icono de “Structure” se mostrarán los campos dentro de la tabla:

Ahora insertamos información en nuestra nueva tabla (Insert) para tener algo con qué trabajar. Vamos a la pestaña de “Insert” y agregamos información adecuada. En mi caso he puesto información genérica. También, en mi caso dejo los id en blanco ya que los he asignado como autoincremental:

Creación de un juego de registros (recordset) sencillo en Dreamweaver

Pasamos después a Dreamweaver y ahí podremos ver la nueva tabla en el panel de Base de Datos (Databases):

Para crear un un jugo de registros vamos al panel de Vinculaciones (Bindings) y escogemos Juego de Registros (Recordset):

En la ventana de Recordset defines el tipo de información que quieres extraer de la base de datos:

  1. Nombre (Name): Se especifica el nombre del recordset. Se puede dejar el que viene ya puesto pero lo mejor es que se ponga un nombre mas descriptivo, ‘usuarios1′ por ejemplo. Los nombres de los recorset tienen que ser únicos por páginas y sólo pueden ser letras, números, guión (-) y underscore (_). Nada de caracteres especiales ni empezar el nombre con número.
  2. Conexión (Conection): Se escoge la conexión
  3. Tabla (Table): Se escoge la tabla de la base de datos.
  4. Columnas (Columns): En el campo columna se escogen los campos que se van a estar utilizando en el script. También se pueden escoger todos, aunque siempre es mejor sólo utilizar los campos necesarios.
  5. Filtros (Fiters): Con el campo filtro hacecemos que la información sea más específica, por ejemplo, si quieres escoger la entrada donde el nombre del usuario sea “Juan” puedes fácilmente hacer que el campo nombre concuerde con el la valor entrado “Juan”. Puedes también utilizar valores como variables URL o variables enviadas de un formulario, variables de sesión, cookies y variables del ambiente (environment) del servidor.
  6. Ordenar (Sort): En el ‘sort’ se organiza el orden de los resultados, ascendente o descendente.

Este es un ejemplo de como escoger campos específicos y como usar los campos de filtro y sort. El la siguiente imagen se escogen sólo los campos “nombre” y “descripcion” de la tabla “tabla1″. Se le ha agregado un filtro para que la consulta solo devuelva los registros donde el valor del campo “id” sea igual a la variable de formulario “id” y también se ha especificado que el resultado se organice de forma descendente:

Consultas complejas (modo avanzado)

En el caso que se quiera hacer consultas complejas (más de un filtro y/o organizaciones de contenido complejas) se utiliza el modo avanzado (advanced). Para poder hacer este tipo de consultas es necesario tener claro como se construye una consulta SQL. Lo más recomendable es estudiar el lenguaje ya que el modo GUI del modo avanzado puede llegar a ser también bastante limitado a veces. Dicho esto, también puedo agregar que el modo avanzado resulta muy útil y es muy fácil de usar una vez se sabe usar. Para usarlo le damos al botón de “Avanzado” (Advanced):

Lo primero que vemos es que los dos primeros campos son iguales (nombre y conexión). Los otros campos ha sido removidos y ahora tenemos tres áreas nuevas:

  1. SQL: Área donde escribimos nuestra consulta SQL.
  2. Variables (Variables): Área donde creamos las variables que usaremos en los filtros.
  3. Elementos de base de datos (Database Items): Las tablas y los campos de la base de datos.

Lo importante es saber que el modo avanzado funciona igual que el sencillo. Los botones que están en el área de Elementos de la base de datos son los que agregan elementos a la consulta.

  • El botón SELECT tiene que ver con la selección de columnas o de la tabla completa.
  • Con el botón WHERE añades uno o múltiples filtros.
  • Por último, el botón ORDER BY especifica uno o más tipo de como organizar el resultado.

SELECT

Si queremos hacer una selección de todos los campos de una tabla escogemos la tabla y después le damos click al botón de Select. Por ejemplo,en la siguiente imagen he seleccionado todos los campos de “tabla1″ :

De igual forma, si queremos escoger campos individuales damos click al campo y luego al botón SELECT con cada uno de los campos deseados. En el próximo ejemplo he escogido los campos “id”, “nombre” y “fecha”:

WHERE

Para agregar un filtro lo más recomendable es crear una variable primero. NO es realmente necesario para que funcione el script pero, de esa forma, DW crea el código necesario para validar los valores antes de que estos ínter-actúen con la base de datos. Creamos una variable dándole click al símbolo de más que está en la sección de variables:

En la ventana de “Añadir variable” (Add Variable) DW te pide varios campos:

  1. Nombre (Name): Nombre de la variable. Es el nombre que usará DW cuando crea la variable. El nombre debe obedecer las reglas de una variable (en este caso, una variable PHP). Sólo letras de la “a” a la “z“, números del 0 al 9, guiones ( – ) y “underscores” ( _ ). No caracteres especiales (ñ, acentos, etcétera).  Por último, se debe comenzar el nombre con una letra.
  2. Tipo (Type): El tipo SQL del valor de la variable. DW los agrupa según el tipo de código que va a crear.
  3. Valor Defecto (Default Value): Es el valor de la variable en caso de que no se especifique o llegue vacía al momento de ejecutar el script. DW usa “-1″ cuando en código creado usando el modo sencillo. Este valor asegura que la consulta no devuelva ningún resultado. Si necesitas que tu variable tenga un valor defecto puedes cambiarlo a lo que necesitas.
  4. Valor de ejecución (Runtime Value): Es el valor que se usará al momento de ejecución del script. En el modo sencillo DW crea el código dependiendo del tipo de variable. En el modo avanzado se debe agregar el código PHP además del nombre de la variable. Los tipos son los siguiente. Están acompañados con sus respectivos ejemplos de códigos PHP:
    • Variable URL (URL VAriable) (GET). Variable pasada a través del “query string
      $_GET['nombre_de_la_variable']
    • Variable de formulario (Form Variable) (POST). Variable pasada a través de un formulario.
      $_POST['nombre_de_la_variable']
    • Cookie (Cookie). Variable pasada a través de una cookie.
      $_COOKIE['nombre_de_la_variable']
    • Variable de sesión (Session Variable). Variable pasada a través de una sesión.
      $_SESSION['nombre_de_la_variable']
    • Variable de servidor (Server Variable) . Variable tomada de una de las variables del servidor.
      $_SERVER['nombre_de_la_variable']
    • Variable arbitraria. También se puede usar una variable que ya ha sido creada anteriormente o función PHP que devuelva un valor.
      $pedro
      date('Y-m-d H:i:s')

En el siguiente ejemplo, la variable “variable1″ es de tipo “texto”, su valor defecto es “-1″ y la variable es enviada vía un formulario:

Una vez creada la variable podemos agregar un filtro. Seleccionamos el campo que usaremos en el filtro y le damos clic al botón de WHERE:

Esto agregará el nombre del campo que vamos a usar. La variable y la condición la tenemos que agregar manualmente. Aquí usaremos el operador o condición correspondiente dependiendo de los valores que se quieren obtener de la base de datos . En ese caso he usado igual que “=” para que la consulta devuelva los registros donde el valor del campo ‘nombre” sea igual a la variable de formulario “nombre”:

Para usar una constante no es necesario crear una variable ya que ésta no necesita ser validada. Sólo tenemos que agregarla manualmente. Por ejemplo, la siguiente consulta devuelve los registros donde el campo nombre es igual a la constante ‘Pedro’:

Lo bueno del modo avanzado es que podemos poner múltiples filtros. Sólo tenemos que seguir creando variables y agregando tablas y condiciones. El próximo ejemplo devuelve los registros donde el valor del campo nombre es igual a “pedro” y el valor del campo descripcion es igual a la variable de formulario “descripcion” (variable1):

DW sólo usa el operador lógico ”AND” (Y). Con este operador se tienen que cumplir todas las condiciones. En el último ejemplo se tienen que cumplir las dos condiciones (filtros). Para más información acerca de otros operadores lógicos visite la página de MySQL que trata ese tema.

*Nota: Por alguna razón no se pueden crear variables  que no se van a utilizar. DW lanzará un error si existe alguna que no se está usando en la consulta.

ORDER BY

Con el botón de ORDER BY se controla la organización del resultado de la consulta. Por ejemplo, para que el resultado se organice con respecto al campo nombre escogemos el campo le damos clic al botón de ORDER BY.  Por alguna razón, DW no incluye una opción para controlar el modo de organización (Ascendente/Descendente) como en el modo sencillo. Si no lo especificamos  la organización siempre será ascendente. Para que sea descendente agregamos “DESC” después del nombre del campo. Podemos también agregar organización múltiple de la misma forma que con los filtros. Estas se separan por comas:

Conclusión

Como mencioné antes, la mejor forma de construir consultas exitosas a una base de datos es entendiendo como se construye una consulta SQL. DW provee funciones sencillas que ayudan a la construcción de consultas básicas, pero estas sólo pueden ayudar en un limitado número de casos. Conocimiento de los lenguajes envueltos (MySQL y PHP en este caso) son necesarios para consultas y sistemas más complejos. Yo recomiendo el foro de Base de datos de Foros del Web para cualquier tipo de duda relacionada no solo a MySQL, sino también otros servidores de bases de datos.

  • Matt

    Compadre grandioso el tuto, hice cada paso pero no me ha resultado, hice mi juego de registro pra ejecutarlo desde un inputtext donde tengo por nombre id igual de la variable lo llamo desde $_POST[cveNombre] que es el nombre de mi campo en la BD pero no me hace la busqueda puedes decirme cual es mi error…

    • http://juaniquillo.com juaniquillo

      La verdad es que no podría saber cual es el problema con tu código. Verifica si el método del formulario es POST y no GET.

  • Kart Michel

    Genial Mente explicado, el que no entienda no esta preparado para esto… gracias por el aporte,…

  • Vicente

    Estoy intentando con dreamweaver cs5, vincular 3 listas-menu dinámicas, para que cuando se rellene el primer parámetro en la primera lista menu, la segunda dé las opciones correspondientes a ese parametro, Ejem: primera lista, continentes, selecionaríamos Europa y en la segunda lista tendrían que salir solo los paises correspondientes a Europa. He leido un tutorial tuyo muy bueno en http://www.original-design.es/tutoriales/tutocombo.php, pero el enlace al programa ejemplo no funciona y al final del tutorial, falta la última línea que hay que poner al código.
    ¿Podría hacer el combo sin escribir código, utilizando los filtros que explicas aqui?. Hoy llevo todo el día intentandolo y no me funciona, o ¿puedes decirme cual es la última línea que falta en el tutorial de combos, para ver si me funciona?
    Gracias por los tutoriales

    • http://juaniquillo.com juaniquillo

      Eso no se puede hacer con funciones de DW. Es algo complicado dependiendo del método que uses. Si luego me animo trataré de hacer un artículo sobre eso.

  • http://.. rodrigo

    hola soy nuevo en esto queria saber como hago para que el formulario de registro aparesca en mi web todabia no realize nada queria saber nomas! haber si esto me sirve

    • http://juaniquillo.com juaniquillo

      en Foros del Web tengo un tutorial sencillo de como hacer un sistema de autorización de usuarios con DW: http://www.forosdelweb.com/f17/cuenta-usuario-480382/

      • http://. rodrigo

        hola en el tuto que me pasastes no lo entendi muy bien el signo + en comportamiento del servidor lo tengo bloquedo que tengo que hacer?? en el tutorial decis que tengo que tener la pagina que quiero restringir y otra como es eso?. Mira te cuento mejor lo que quiero hacer, quiero que se registren en mi web y luego inicien una sesion con un username y un password y cuando inician secion aparesen en una parte de mi pagina que los que no estan registrados no puedan verla espero que me puedas ayudar te pido esta ayuda a vos porque sos una de las personas que explica muy bien en la web.
        Gracias ;)

  • http://.. rodrigo

    hola que tal al final pude seguir los pasos del tutorial que me pasates pero como hago para que aparesca en mi web ????

    • http://juaniquillo.com juaniquillo

      No entiendo que quieres decir con eso. Se supone que tengas dos servidores, el de prueba (el que instalaste) y el de producción (el tienes en un servidor de pago).

      • http://.. rodrigo

        Disculpame si me exprese mal
        Quiero que se registren en mi web y luego inicien una sesion con un username y un password y cuando inician secion aparesen en una parte de mi pagina que los que no estan registrados no puedan verla.
        Yo realizo lo del tutorial que me pasastes (que no se si sirve para lo que quiero hacer) y se queda todo en el en el DW lo que tambien quiero saber que es lo que puse en el ultimo comentario es como hago para que aparesca el formulario que registro y el de LOG IN en mi pagina (ponele una seccion que diga REGISTRATE y otra INICIAR SESION)
        Espero que me puedas ayudar Gracias por la pasincia

        • http://juaniquillo.com juaniquillo

          Yo prefiero no hablar de este tutorial aquí ya que no tiene nada que ver. En estos días estoy muy ocupado como para pasar por el foro pero y continuar la conversación ahí, pero espero poder volver a colaborar el mes que viene. También estoy preparando un nuevo tutorial de como hacer un sistema de registro con el CS5. Si quieres te puedo avisar cuando esté listo.

  • gaby

    Hola!
    mira tengo un problema al hacer una busqueda
    ya tengo la BD,la conexión y todo
    ya hice el recordset
    pero al hacer la busqueda
    el campo ‘nombre’ distingue entre mayusculas y minusculas
    osea que si busco Paco y yo pongo PACO ó paco no lo encuentra
    que me recomiendas?
    de antemano gracias!

    • http://juaniquillo.com juaniquillo

      ese es un tema algo complicado para discutirlo aquí. te recomiendo que busques la solución en algún foro que hable acerca de bases de dato. Te recomiendo la sección de MySQL de Foros del web: http://www.forosdelweb.com/f86/

  • http://www.curso-de-milagros.com Enrique

    gracias por el aporte sirve para los que enpiezan en esto y a los que no para reafirmar , pero quiero comentarte otra cosa respecto a dreamweaver , y es que luego se bloquea impidiendome crear juegos de registros o utilizar los comportamiento de servidor saliendome un error de javascript y bueno quiero preguntarte si te ha pasado? y como lo has solucionado si es asi.

    otra cosa que queria preguntarte es sobre los juegos de registros , por ejemplo

    en dw se puede crear varios recorsets ya que puede que requieras en una misma pagina varias funciones pero tambien se que se puede crear un solo juego de registros avanzado para todo , tu que recomiendas al respecto?

    es que he pensado esto porque mi DW me da mucha lata no me deja desplayarme ejjejejejejejje por lo que te dijo del error de javascript

    • http://juaniquillo.com juaniquillo

      Si haces los recordset como yo explico no creo que se bloquee DW. Esto casi siempre pasa cuando modificas los recordset no son creados por DW o cuando son modificados.

      En cuanto al segundo punto, mientras menos recursos uses mejor. Si puedes reutilizar la misma consulta para todo lo que necesitas en tu página pues adelante y úsala. Pero esto casi nunca es el caso ya que la mayoría de las veces necesita mostrar diferentes resultados de diferentes tablas.

      • http://www.curso-de-milagros.com Enrique

        muchas gracias por la respuesta , pues aplicarlo pues

  • http://www.educalandia.net anibal

    Hola

    Podrias decir como crear un registro de juegos avanzado y cuando no se seleccione una de las opciones se muestren todos los registros?

    Tengo dos variables, localidad y habitaciones, quiero que seleccionando solo localidad me de como resultado todos los registros de esa localidad sin necesidad de q el usuario escoja tambien nº de habitaciones.

    Creo q se hace con un if else , per oya es programar a pelo sin usar dreamweaver.
    Va una ayuda por favor

    • http://juaniquillo.com juaniquillo

      No necesitas if sino varias condiciones. Le la parte acerca del “WHERE”.

      • http://www.educalandia.net anibal

        $var_poblacion_Rs_viviendas = “none”;
        if (isset($_GET['poblacion'])) {
        $var_poblacion_Rs_viviendas = $_GET['poblacion'];
        }
        $var_habitaciones_Rs_viviendas = “none”;
        if (isset($_GET['habitaciones'])) {
        $var_habitaciones_Rs_viviendas = $_GET['habitaciones'];
        }
        mysql_select_db($database_Rs_inmorocha, $Rs_inmorocha);
        $query_Rs_viviendas = sprintf(“SELECT poblacion, habitaciones FROM propiedades WHERE poblacion = %s AND habitaciones = %s ORDER BY precio ASC”, GetSQLValueString($var_poblacion_Rs_viviendas, “text”),GetSQLValueString($var_habitaciones_Rs_viviendas, “text”));
        $Rs_viviendas = mysql_query($query_Rs_viviendas, $Rs_inmorocha) or die(mysql_error());
        $row_Rs_viviendas = mysql_fetch_assoc($Rs_viviendas);
        $totalRows_Rs_viviendas = mysql_num_rows($Rs_viviendas);

        Me podrias ayudar juaniquillo? ando ahi atrancado varios dias.

        • http://juaniquillo.com juaniquillo

          No sé a qué te refieres Aníbal. Solo pusiste código pero no sé que quieres hacer.

          • http://www.educalandia.net anibal

            Hola
            lo que quiero es que haya una opcion e nque se muestren todos los registros de la localidad seleccionada en caso de no seleccionar ninguna habitacion. Como explique anteriormente tengo una buscados con dos listas sacadas de dos campoc de BBDD, una localidad otra habitaciones, hago la busqueda y bien cuando selecciono las dos opciones, cuando selecciono una sola de ellas me devuelve valor 0.

          • http://juaniquillo.com juaniquillo

            Necesitas otra consulta alterna para eso. Una que no tenga un WHERE.

  • http://www.educalandia.net anibal

    me podrias poner algun ejemplo juaniquillo? o algun enlace q contenga ese ejemplo , aunq venga en ingles?

    • http://juaniquillo.com juaniquillo

      si te refieres de un ejemplo de como construir la consulta SQL solo necesitas quitarle las condiciones WHERE. Si te refieres a como escoger entre una consulta u otra requiere más código (php en este caso) y no viene al caso en este tutorial. Además, es algo que no puedes hacer usando funciones de DW solamente. Si quieres puedo poner un un tutorial parecido a la lista de tutoriales que pienso hacer.

  • daniel

    juaniquillo, hola he leido tus notas son muy buenas, pero hay algo que no consigo hacer desde dreamweaver ya sea en asp o php, supongamos una tabla de tipo dinamica, al final de cada fila encuentras 2 botones, editar y borrar, cuando haces click sobre editar, yo quiero que se produzca l edicion del registro dentra de la misma tabla sin salir de ella, y cuando borras, eliminar el registro en donde está el cursor y desaparece el mismo registro de la tabla.
    Saludos
    Daniel

    • http://juaniquillo.com juaniquillo

      Se puede hacer con DW pero conlleva más trabajo que el de crear un juego de registros. Yo estoy trabajando en la primera parte de un artículo donde voy a explicar como crar un CRUD sencillo en DW. Espero poder tenerlo lista la primera parte este mismo mes.

  • Alejandro

    hola necesito algo de ayuda:

    estoy trabajando con DW CS5.

    Resulta que en el index inserte un inicio de sesión, y tengo dos bases de datos. Pues necesito que el usuario inicie sesión y solo le muestre sus datos, es decir que vaya a una de las dos bases de datos y que se muestre solo los datos de ese usuario indiferentemente de la base de dato donde se encuentren sus registros.

    muchas gracias y espero me puedan ayudar.

  • Flako_207

    Hola estoy realizado un mini proyecto y tengo la mala suerte de no poder realizar una relaciones entre dos vinculaciones

    si alguien me pudiera ayudar dejo mi correo si alguien ayuda flako_207@live.cl