Gravity Forms post / get для получения данных из базы данных MySQL - PullRequest
0 голосов
/ 19 октября 2018

К сожалению, у меня нет успеха при получении данных с помощью простого запроса ajax из моей базы данных mysql.

У меня есть сила тяжести, настроенная с помощью ajax в включенном шорткоде.Когда я изменяю выбор первого поля, я хочу, чтобы выполнялся запрос ajax для извлечения данных из базы данных и загрузки их в другое поле в зависимости от выбора первого поля.

Предупреждения работаютпоэтому я предполагаю, что с запросом jquery что-то не так.

Это мой код, который я написал в фрагменте кода.

add_filter ("gform_pre_render_2", "monitor_dropdown");

function monitor_dropdown($form){
    ?>
        <script type="text/javascript">
        jQuery(document).ready(function(){
            jQuery('#input_2_1').bind('change', function()
            {
                var vdepot_id = jQuery("#input_2_1").val(); //vdepot_id in variable speichern, muss an get request weitergegeben werden um über die id die richtige rce depot dann zu ermitteln
                //alert(vdepot_id);                       

                if(vdepot_id == "2")
                 {  
                    alert("Starte request mit vdepot_id = " + vdepot_id);
                    jQuery.ajax({
                        type: 'post',
                        url: 'https://tradingdiary.whitepictures.de/getrcedepot.php',
                        data: {
                              virtuellesdepot_id:vdepot_id,     //links virtuellesdepot_id ist die variable die übegeben wird mit dem Wert von rechts
                        },
                        success: function (response) {      //im falle von erfolg wird in variable response das ergebnis (echo) geschrieben
                           alert(response);

                           //rce_vdepot = response;**
                        }
                    });
                 }
                 else
                 {
                    alert("Kein request gestartet");
                 }  

                var rce_vdepot = 77777;
                jQuery("#input_2_28").val(rce_vdepot);  //rce in gravity form feld schreiben
            });
        });
        </script>
    <?php
    return $form;
    }

Это мой php код.Я не совсем уверен, где разместить файл php на моем сервере WordPress?При переходе на www. ***** / getrcedepot.php php выполняется, поэтому я думаю, что он находится в правильном месте.

Сначала я просто хочу добиться успеха, отправив число с эхо, просто чтобы посмотреть,запрос работает.Но это не так.Было бы здорово, если бы кто-то мог мне помочь, я просто новичок в кодировании.

        <?php
if( isset( $_POST['virtuellesdepot_id'] ) )
{
    $vdepot_id = $_POST['virtuellesdepot_id'];

    $servername = "localhost:3306";
    $username = "wp_6kven";
    $password = "DOWN19kona93Hill";
    $dbname = "wp_13538";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    //echo "Connected successfully";


    $sql = "SELECT * FROM virtuelledepots WHERE virtuellesdepot_id = '$vdepot_id' ";
    $result = mysqli_query($conn,$sql);


    //echo $result;
    echo 55555555;


    //$conn->close();

    }else{
    echo "Fehler bei if isset";
}

?>

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Хорошо, наконец, я понял.Вот код для ajax-запроса гравитационной формы для получения данных из базы данных mysql после внесения изменений в поле выбора.

add_filter("gform_pre_render_2", "getdbdata");
    function getdbdata($form){
        ?>
            <script type="text/javascript">
            jQuery(document).ready(function(){
                jQuery('#input_2_1').bind('change', function()
                {
                  var vdepot_id = jQuery("#input_2_1").val();   

                  alert("Starte request mit vdepot_id = " + vdepot_id);
                  jQuery.ajax({
                    async: 'false',
                    type: 'post',
                    global: 'false',
                    dataType: 'html',
                    url: 'https://tradingdiary.whitepictures.de/getrcedepot.php',
                    data: {
                      virtuellesdepot_id:vdepot_id,
                    },
                    success: function (data) {  
                        jQuery("#input_2_28").val(data);
                    }
                  });                       
                });
            });
            </script>
        <?php
        return $form;
        }

и это код php, который вам нужен на вашем сервере:

<?php
if( isset( $_POST['virtuellesdepot_id'] ) )
{
$vdepot_id = $_POST['virtuellesdepot_id'];

$servername = "****";
$username = ""****"";
$password = ""****"";
$dbname = ""****"";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//echo "Connected successfully";


$sql = "SELECT virtuellesdepot_id, virtuellesdepot_calc_rce FROM virtuelledepots WHERE virtuellesdepot_id = '$vdepot_id' ";
$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo $row["virtuellesdepot_calc_rce"];
    }
} else {
    echo "0 results";
}

$conn->close();

}else{
echo "Fehler bei if isset";
}

?>
0 голосов
/ 19 октября 2018

Многое можно сказать о вашем коде, но, как вы сказали, вы новичок в коде, поэтому давайте начнем с малого.

Хорошая вещь, которую нужно сделать при разработке для Интернета, - это использовать инструменты разработчика, которыебольшинство из последних браузеров есть.Особенно с Ajax, так как он может помочь вам понять, что не так.

В Firefox или Chrome вы можете отобразить его, нажав F12.Он должен отображать новые окна (или панель в нижней части или на одной стороне вашего текущего открытого окна).на этой панели вы найдете несколько вкладок, но та, которая нас здесь интересует, называется «Сеть».На вкладке сети отображаются все запросы, сделанные при загрузке вашей страницы (даже после): попробуйте перезагрузить ее, и вы ее увидите.Внутри сетевой панели вы найдете несколько «кнопок»: ALL, XHR JS, CSS, ... позволяющих вам фильтровать типы запросов для отображения.Для AJAX-запроса на пример это «XHR».

Теперь Если вы манипулируете своим элементом select (тем, который вы создаете действие для «изменения» с помощью jQuery), вы должны увидеть, что ваш AJAX-запрос появляется на панели.

Нажмите на него, и вы увидите подробную информацию о том, что было отправлено, и ответ получен: Заголовки соответствуют вашему запросу. Предварительный просмотр и ответ отображают возврат сервера (в вашем случае: getrcedepot.php) (предварительный просмотр.это просто самая симпатичная (и навигационная) версия Response, в которой отображается необработанный ответ)

Вы можете найти некоторую подсказку в этом вопросе (или, по крайней мере, некоторые признаки).

Также, если у вас есть какая-то ошибка в вашем коде JavaScript, вы можете найти некоторую информацию на вкладке «Консоль» панели инструментов разработчика.

...