1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - новый и перспективный форумный движок от бывших создателей vBulletin.

1.4.x Подключение к БД

Тема в разделе "Для новичков", создана пользователем madwizard, 29 дек 2014.

Загрузка
  1. madwizard

    madwizard Новичок

    Регистрация:
    24.12.14
    Сообщения:
    12
    Симпатии:
    0
    Версия XF:
    1.4.3
    Добрый день.
    Возможно ли как то подключиться к БД (mssql)?
    И если можно то как?

    Пробовал вот таким способом, но всегда выдает "Connection could not be established."

    PHP:
    <?php
    class Example_index
    {
        public static function 
    getHtml()
        {

                
    $Server "ip";
                
    $User "user";
                
    $Pass "pass";
               

                
    $connectionInfo = array("UID" => $User"PWD" => $Pass);
                
    $conn sqlsrv_connect$Server$connectionInfo);

                if( 
    $conn ) {
                    echo 
    "Connection established.<br />";
                }else{
                    echo 
    "Connection could not be established.<br />";
                }
        }
    }
    ?>
    И вызывал это на странице (page):
    <xen:callback class="Example_index" method="getHtml"></xen:callback>
     
  2. infis

    infis Местный Команда форума

    Регистрация:
    27.06.11
    Сообщения:
    5.526
    Симпатии:
    3.322
    Версия XF:
    1.5.9
    Ну так саму ошибку-то надо смотреть, а не просто констатировать факт ошибки. Например, так:
    Код:
    if( $conn ) {
    echo "Connection established.<br />";
    }else{
    echo "Connection could not be established.<br />";
    die( print_r( sqlsrv_errors(), true));
    }
    --- добавлено : Dec 29, 2014 2:36 PM ---
    А вообще подробно это расписывается тут.
     
    Последнее редактирование модератором: 6 янв 2015
  3. madwizard

    madwizard Новичок

    Регистрация:
    24.12.14
    Сообщения:
    12
    Симпатии:
    0
    Версия XF:
    1.4.3
    Код:
    Connection could not be established.
    Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [code] => -49 [2] => This extension requires the Microsoft SQL Server 2012 Native Client. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712 [message] => This extension requires the Microsoft SQL Server 2012 Native Client. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712 ) [1] => Array ( [0] => IM002 [SQLSTATE] => IM002 [1] => 0 [code] => 0 [2] => [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию [message] => [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию ) )
    Получается чтобы подключится к базе MS SQL через форум, необходимо чтоб на машине с форумом был установлен Microsoft SQL Server 2012 Native Client?
     
  4. Exile

    Exile Местный

    Регистрация:
    27.06.11
    Сообщения:
    999
    Симпатии:
    546
    Версия XF:
    1.4.4
  5. madwizard

    madwizard Новичок

    Регистрация:
    24.12.14
    Сообщения:
    12
    Симпатии:
    0
    Версия XF:
    1.4.3
    Подключился к MS SQL. Дело было в SQL Server 2012 Native Client'e.
    Но появилась другая проблема.
    Из БД я легко извлекаю данные, но вот не могу внести в нее по средством формы.
    Создал страницу, в ней форму. При клике на кнопку Submit, форум выдает ошибку:
    Security error occurred. Please press back, refresh the page, and try again.

    UPD. Может дело форме и в кнопке?


    HTML:
    <form action="<?php echo htmlentities($_SERVER['PHP_SELF'])?>" method="post">
    <p>
        <label>Ваш логин:<br></label>
        <input name="login2" id="login2" type="text" size="15" maxlength="15">
    </p>
    
    <p>
        <label>Ваш пароль:<br></label>
        <input name="password2" id="password2" type="password" size="15" maxlength="15">
    </p>
    <p>
        <label>Email:<br></label>
        <input name="email2" id="email2" type="text" size="15" maxlength="15">
    </p>  
    <p>
        <input type="submit" name="submit-reg" id="submit-reg" value="Зарегистрироваться">
    </p></form>
     
  6. Exile

    Exile Местный

    Регистрация:
    27.06.11
    Сообщения:
    999
    Симпатии:
    546
    Версия XF:
    1.4.4
    Дело в попытках записать что-то в базу данных форума прямыми коннектами используя методы, которые устарели несколько лет назад. Хотите записывать что-то в базу форума - есть прекрасное API (https://github.com/Contex/XenAPI), да и просто поковыряв код некоторых дополнений можно понять, насколько это несложно.
    PHP:
    form action="<?php echo htmlentities($_SERVER['PHP_SELF'])?>"
    Лучше сразу код eval-ом выполнять, чего уж там :thumbsdown:
     
  7. madwizard

    madwizard Новичок

    Регистрация:
    24.12.14
    Сообщения:
    12
    Симпатии:
    0
    Версия XF:
    1.4.3
    Это был просто танец с бубном :)
    Попробую полностью описать свои действие и задачу которую рвусь решить.
    Задача. Через страницу, путем подключения нужного класса и метода, заполнять базу, которая никак не связана с форумом (БД игры MSSQL).
    Действия:
    1. Создал некое подобие дополнения, папку Example (library/).
    2. В этой папке есть файл .php с классом и методом, которые проверяют коннект с БД через функцию sqlsrv_connect и подключают еще один .php файл, который отвечает за заполнение БД (форма + скрипт).
    3. Вызываю данное "дополнение" во вкладке Page Options (Template HTML), путем callback'a:
    <xen:callback class="Example_index" method="getHtml"></xen:callback>
    4. т.е. в action я пробовал прописать название файла в котором и находится форма, но результат тот же.

    п.с. к бд конектится отлично. Так же извлекал из базы информацию. Все хорошо, кроме работы с формой.
    пп.с. благодарю за ссылку буду пробовать. Обязательно поделюсь результатами.
     
  8. Exile

    Exile Местный

    Регистрация:
    27.06.11
    Сообщения:
    999
    Симпатии:
    546
    Версия XF:
    1.4.4
    madwizard, ну вообще логику описываете верно, но скорее всего ксену просто не нравится инклуд еще одного пхп файла. Лучше делать без инклуда, а вызовом классов, в движке автозагрузчик ведь есть. Просто все остальное проблем вызывать не должно в принципе.
     

Поделиться этой страницей