Consultas MySQL en Drupal

Después de estar un rato peleándome con Drupal para hacer una consulta en PHP a una base de datos mediante el tipo de contenido Page,

por fin he dado solución a mi problema. La cosa es que seguramente existan módulos que seguramente te faciliten la tarea, pero no era mi caso ya que necesitaba de algo más personalizado.

Aclarar que ante todo no soy un experto en PHP, y mucho menos en Drupal.

En una Pagina, tenía una consulta  a la base de datos MySQL la cual hacia un SELECT de una tabla creada por mi y la mostraba en la misma pagina.

La Pagina estaba creada desde Drupal con un tipo de contenido “Page” y “formato de entrada PHP”, a su vez, mediante un formulario realizaba la llamada a un archivo “insertar_datos.php”, éste (en teoría) tenía que ingresar los datos el la Base de datos y devolverte a la pagina anterior y mostrarte los resultados de la Pagina mediante el SELECT otra vez.

La cosa es que no funcionaba, por lo cual he obtado por crear otra página (nodo) utilizando la variable POST y llamarla desde el formulario.

A quedado más o menos así:

Esto sería la pagina que realiza el SELECT.

<?php
$host="localhost";
$user="root";
$password="toor";
$dbname="joker_drupal";
$tablename="libro_de_visitas";
$link = mysql_connect ($host, $user, $password) or die ("<center>No se puede conectar con la base de datos\n</center>\n");
?>

<table>
<?php
$query="SELECT * FROM $tablename;";
$result=mysql_db_query ($dbname, $query, $link);
while ($row = mysql_fetch_array ($result))
{
print ("<TR>");
print ("<TD>$row[nombre] -- ");
print ("$row[fecha]</TD>\n");
print ("</TR>");
print ("<TR>");
print ("<TD>$row[contenido_libro_visitas]</TD>\n");
print ("</TR>");
}
mysql_free_result($result);
    mysql_close($link);
?>
</table>

<form name="formulario_tablon" action="?q=node/4" method="POST">
Nombre: <input type="text" name="nombre"><br>
<textarea name="contenido_libro_visitas"></textarea><br>
<input type="submit" value="Enviar">
</form>


I ahora creamos otra Page con  formato de entrada en php y introducimos el código para el INSERT:

<?php
$host="localhost";
$user="root";
$password="toor";
$dbname="joker_drupal";
$tablename="libro_de_visitas";

// Primero comprobamos que ningún campo esté vacío y que todos los campos existan.
if(isset($_POST['nombre']) && !empty($_POST['nombre']) &&
isset($_POST['contenido_libro_visitas']) && !empty($_POST['contenido_libro_visitas'])) {

$link = mysql_connect ($host, $user, $password) or die ("<center>No se puede conectar con la base de datos\n</center>\n");
mysql_select_db($dbname,$link);
mysql_query("insert into $tablename (nombre,contenido_libro_visitas) values ('$_POST[nombre]','$_POST[contenido_libro_visitas]')");

}

mysql_close($link);

?>

Esta ha sido mi solución, seguramente existan otras alternativas o se pueda mejorar bastante el código, pero si a alguien le puede servir de ayuda me conformo.

Un Saludo.

Juanan.

6 respuestas a “Consultas MySQL en Drupal

  1. Hola, Gracias por tu aporte, yo no soy experto en estas plataformas de Drupal, mucho menos en MYSQL y PHPO, digamos que soy muy novato, y esto es exactamente lo que he estado buscando, desde drupal hacer consultas a bases MYSQL y con codigo PHP actualizar o dar de alta registros….. voy a tomar tu idea para un sitio que estoy haciendo… comentare despues los resultados… SALE ¡¡¡

      • Amigo, ayúdame por favor, nunca he trabajado con Drupal y no se por donde ingresar el código para realizar una consulta a mysql,, instale unos módulos como view pero no hay suficiente información, y necesito por lo menos realizar una consulta a la BD de un formulario que cree con webform.

        Llevo varios días estancado y sin presentar resultados y esto es terrible.

      • Hola edwin, hace ya bastante tiempo que no utilizo drupal.
        El modulo que me comentas, uno es para hacer formularios y enviarlos por email y el otro es para hacer vistas a un tipo de contenido.
        Explicame un poco más detallado que quieres hacer exactamente a ver si te puedo ayudar.
        Un saludo.

  2. Hola Juanan!!

    Estoy haciendo una pagina web con drupal y ahora estoy haciendo una seccion en la que tengo que hacer consultas a una base de datos. El codigo de arriba que has puesto para hacer la consulta select me ha funcionado bien, los datos en la tabla en la base de datos me la muestra en la tabla, pero me salta un mensaje en rojo de error, diciendo esto:

    Deprecated function: Function mysql_db_query() is deprecated in eval() (line 15 of C:\xampp\htdocs\drupal\modules\php\php.module(80) : eval()’d code).

    Deprecated function: mysql_db_query(): This function is deprecated; use mysql_query() instead in eval() (line 15 of C:\xampp\htdocs\drupal\modules\php\php.module(80) : eval()’d code).

    Cual es el problema a esto?? Muchas gracias por la ayuda!!

    edu

    • Lo que te está diciendo el código es que la función mysql_db_query, está deprecated en la versión de PHP que usas.

      Prueba a usar lo mismo pero con mysql_query()

      Un saludo y perdon por tardar en la respuesta.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s