Сохранение данных

Главные вкладки

Аватар пользователя puhur01 puhur01 9 июля 2012 в 15:41

Добрый день. Можно ли как-то сохранять данные, введенные пользователем, в базу данных или текстовый файл? Например, если пользователь в анкете или тесте указал имя, возраст, прошел какой-то тест и т.д. И по нажатию на кнопку введенные данные и результат обработки этих данных (результат тестирования) писались в базу.

Комментарии

Аватар пользователя puhur01 puhur01 9 июля 2012 в 23:24

Прошу прощения за, возможно, глупый вопрос, но как создать в Друпале базу для этого? Базу с единственной таблицей для хранения результатов теста, которую может посмотреть админ.

Аватар пользователя puhur01 puhur01 9 июля 2012 в 16:34

А как? Есть какой-то модуль? Или писать придется? Мне нужен тест, где помимо вопросов (вопрос и несколько вариантов в виде радиокнопок) заполняется еще личная информация. У меня уже есть джаваскрипты, которые обрабатывают значения радиокнопок и считают характеристику (обычная строка) в зависимости от суммы баллов. Нужно личную информацию и полученную характеристику записать в базу.

Аватар пользователя Chyvakoff Chyvakoff 10 июля 2012 в 9:15

Друпал вообще то и так работает с БД.
Создай в ней таблицу.
Если хочешь-пиши свой модуль.Вот примерно так.(можешь здесь исходник скачать,если начать трудно) Тут смотри более детально,в частности тебе понадобятся Form API и DataBase API.

если не судьба-то извращаться с готовыми модулями..подстраивать и подправлять их под то,что тебе нужно..

Аватар пользователя puhur01 puhur01 10 июля 2012 в 11:01

Спасибо за ссылки. Мне интересен способ создания таких таблиц - это можно сделать только кодом или через интерфейс какой-нибудь тоже можно? И можно ли обращаться к этой таблице из других модулей? И как можно посмотреть ее содержимое, где она физически располагается?

Аватар пользователя natbampo natbampo 10 июля 2012 в 11:06

"puhur01" wrote:
Мне интересен способ создания таких таблиц

hook_schema
"puhur01" wrote:
И как можно посмотреть ее содержимое, где она физически располагается?

phpmyadmin если база mysql

Аватар пользователя puhur01 puhur01 10 июля 2012 в 11:14

Спасибо. А я могу создать эту таблицу в phpmyadmin и использовать ее везде, где захочу? Например, выбрать в basic page режим теста php code и обращаться к ней в коде? А не только в модуле.

Аватар пользователя natbampo natbampo 10 июля 2012 в 12:20

ну можно конечно, работать будет, но это не совсем корректно.
Идея такова что друпал управляет сайтом и соответственно его таблицами в БД.
Модуль устанавливается - таблица создается, деинсталируется - таблица удаляется. Так правильно.

Аватар пользователя puhur01 puhur01 10 июля 2012 в 12:24

Ну эту таблицу не нужно в общем-то удалять - она будет нужна для статистики: пользователь проходит тест - результаты заносятся в базу, админ может их посмотреть. Она не будет напрямую связана с модулями.

Аватар пользователя Chyvakoff Chyvakoff 10 июля 2012 в 14:27

Таблицы можно как в install файле модуля описать,так и тупо в phpmyadmin`е вручную создать..
первый случай кропотливей,но зато будет "связь" с Друпалом.
а пользоваться таблицей в любом случае будете одинаково,неважно как она была создана.

Аватар пользователя puhur01 puhur01 10 июля 2012 в 15:01

А как добавлять запись в таблицу? Интересует конкретно как добавлять значения полей с автоинкрементом.
Я пробую так:

<?php
db_insert
('test_statistics')
    ->
fields(array('id' => 1'user_personality' => strval($result->description)))
    ->
execute();
?>

Поле id типа int(11) с автоинкрементом. Первая запись с id=1 добавляется, потом ошибки. Если просто игнорировать вставку записи в это поле, тоже ошибки.

Аватар пользователя Orion76 Orion76 11 июля 2012 в 9:34

"puhur01" wrote:

А как добавлять запись в таблицу?


Если таблица добавлена стандартно по друпаловски(hook_schema, hook_install)
то можно просто drupal_write_record ( http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_wri... )
А вообще, если данные в таблице не чисто "служебные", а планируется организовывать их вывод.. то проще, как минимум, просто добавить спец.тип материала с нужными полями, как максимум, создать свою сущность(Entity API) со своей таблицей..

Аватар пользователя puhur01 puhur01 11 июля 2012 в 11:10

А если создать таблицу в phpMyAdmin, как потом можно организовать к ней доступ из basic page?
Я пробую так, но не получается:

<script>src="jquery.min.js"</script>
<script>
function calc(){
    var username;
    var faculty;
    var personality;
    /* далее формируются строки username, faculty, personality */
 
$.ajax({
    type: "POST".
    url: "php-file.php",
    data: {"username="+username, "faculty="+faculty, "personality="+personality}
});
</script>

Вот содержимое php-file.php:


<?php
    $username 
$_POST[username];
    
$faculty $_POST[faculty];
    
$personality $_POST[personality];
        
db_insert('DB_table')
          ->
fields(array('Name' => $username'Faculty' => $faculty'Personality' => $personality))
          ->
execute();
?>
Аватар пользователя Orion76 Orion76 11 июля 2012 в 11:30

Вам бы какую-нибудь книжку почитать... хотябы по ОСНОВАМ программирования для Друпал..
Сэкономите себе кучу времени..

Аватар пользователя puhur01 puhur01 11 июля 2012 в 11:32

Я не программист, просто вышло так, что мне нужно сделать эти тесты (передать параметры-строки из джаваскрипта в php файл для записи их в базу). Если у вас эта задача не займет так много времени, как у меня, мне будет очень приятно, если вы поможете.

Аватар пользователя natbampo natbampo 11 июля 2012 в 15:09

мда приехали, работу программиста поручают("просто вышло так") непонятно кому. Безопасность сайта, ошибки и т.д. - кого это волнует?

Аватар пользователя Chyvakoff Chyvakoff 12 июля 2012 в 9:07

"natbampo" wrote:
работу программиста
"puhur01" wrote:
сделать эти тесты

Может это и не работа вовсе,а так,проверка навыков чтоли?
ТС,подход верный,только все эти действия упакуй в модуль.Но никак не засовывай в ноду с форматом ввода php...