Как отправить массив javascript в мою базу данных? - PullRequest
0 голосов
/ 26 мая 2020

Я застрял, потому что не понимаю, что не так с моим запросом, может ли кто-нибудь изучить его?

Обычно я использую ajax для отправки моего массива на php, и затем используя php, чтобы отправить мои данные в мою таблицу, но он ничего не отправляет

Здесь мой javascript

// ENVOI DE LA GRILLE VERS LE SERVEUR
            var col_tab = document.getElementById('grille').rows[0].cells;
            var type_tab = document.getElementById('grille').rows[1].cells;
            var nb_cols = document.getElementById('grille').rows[0].cells.length;
            var titre_col=[];
            var type_col;

            var lignes_tab = document.getElementById('grille').rows;
            var nb_lignes = document.getElementById('grille').rows.length;
            var contenu_cell=[];
            var nb_options;
            var options;

            for (var ind=1; ind<nb_cols; ind++)
            {
                titre_col[ind-1] = col_tab[ind].children[4].value;
                type_col = type_tab[ind].children[0].type;
                options = "";

                if (type_col == "text")
                {
                    for (var indlg=1; indlg<nb_lignes; indlg++)
                    {
                        contenu_cell[ind-1] = lignes_tab[indlg].cells[ind].children[0].value;
                    }
                }
                else if (type_col == "number")
                {
                    for (var indlg=1; indlg<nb_lignes; indlg++)
                    {
                        contenu_cell[ind-1] = "Min=" + lignes_tab[indlg].cells[ind].children[0].attributes["min"].value + " Max=" + lignes_tab[indlg].cells[ind].children[0].attributes["max"].value;
                    }
                }
                else
                {
                    for (var indlg=1; indlg<nb_lignes; indlg++)
                    {
                        nb_options = lignes_tab[indlg].cells[ind].children[0].children.length;
                        for (var indop = 0; indop<nb_options; indop++)
                        {
                            options += lignes_tab[indlg].cells[ind].children[0].children[indop].text + "|";
                        }
                        contenu_cell[ind-1] = options;
                    }
                }

                $.post('ajout.php',{titre_col:titre_col,contenu_cell:contenu_cell,ind:ind});
            }

Здесь мой php

<?php

$connect = new PDO("mysql:host=localhost;dbname=innovatech", "root", "12345");

if(isset($_POST["titre_col"]))
{
    $titre_col = $_POST['titre_col'];
    $contenu_cell = $_POST['contenu_cell'];
    $ind = $_POST['ind'];
    sleep(5);
    $query = "
    INSERT INTO colonne_grille 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) VALUES 
    (:titre_col[0], :titre_col[1], :titre_col[2], :titre_col[3], :titre_col[4], :titre_col[5], :titre_col[6], :titre_col[7], :titre_col[8], :titre_col[9],)
    ";
        $user_data = array(
            ':titre_col' => $_POST["titre_col"],
        );
        $statement = $connect->prepare($query);
        $statement->execute($user_data);

        $query = "
    INSERT INTO ligne_grille 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, num_ligne) VALUES 
    (:contenu_cell[0], :contenu_cell[1], :contenu_cell[2], :contenu_cell[3], :contenu_cell[4], :contenu_cell[5], :contenu_cell[6], :contenu_cell[7], :contenu_cell[8], :contenu_cell[9], :ind)
    ";
        $user_data = array(
            ':contenu_cell' => $_POST["contenu_cell"],
            ':ind' => $_POST["ind"],
        );
        $statement = $connect->prepare($query);
        $statement->execute($user_data);
}

?>

Здесь изображение моих таблиц изображение таблиц

Здесь изображение примера того, что находится в моих массивах пример переменных

Как вы можете видеть в моем javascript, я создаю 2 массива (titre_col[] и contenu_cell[]). И затем я отправляю эти 2 массива в свой php с ajax ($.post('ajout.php',{titre_col:titre_col,contenu_cell:contenu_cell,ind:ind};). И, наконец, я получаю эти массивы ($titre_col = $_POST['titre_col']; $contenu_cell = $_POST['contenu_cell'];) и отправляю их в свои таблицы

Может ли кто-нибудь помочь мне исправить эту проблему?

Спасибо, ребята, будьте осторожны! :)

1 Ответ

0 голосов
/ 26 мая 2020

Просто используйте JSON .stringify во втором параметре $ .post

// ENVOI DE LA GRILLE VERS LE SERVEUR
            var col_tab = document.getElementById('grille').rows[0].cells;
            var type_tab = document.getElementById('grille').rows[1].cells;
            var nb_cols = document.getElementById('grille').rows[0].cells.length;
            var titre_col=[];
            var type_col;

            var lignes_tab = document.getElementById('grille').rows;
            var nb_lignes = document.getElementById('grille').rows.length;
            var contenu_cell=[];
            var nb_options;
            var options;

            for (var ind=1; ind<nb_cols; ind++)
            {
                titre_col[ind-1] = col_tab[ind].children[4].value;
                type_col = type_tab[ind].children[0].type;
                options = "";

                if (type_col == "text")
                {
                    for (var indlg=1; indlg<nb_lignes; indlg++)
                    {
                        contenu_cell[ind-1] = lignes_tab[indlg].cells[ind].children[0].value;
                    }
                }
                else if (type_col == "number")
                {
                    for (var indlg=1; indlg<nb_lignes; indlg++)
                    {
                        contenu_cell[ind-1] = "Min=" + lignes_tab[indlg].cells[ind].children[0].attributes["min"].value + " Max=" + lignes_tab[indlg].cells[ind].children[0].attributes["max"].value;
                    }
                }
                else
                {
                    for (var indlg=1; indlg<nb_lignes; indlg++)
                    {
                        nb_options = lignes_tab[indlg].cells[ind].children[0].children.length;
                        for (var indop = 0; indop<nb_options; indop++)
                        {
                            options += lignes_tab[indlg].cells[ind].children[0].children[indop].text + "|";
                        }
                        contenu_cell[ind-1] = options;
                    }
                }

                $.post('ajout.php',JSON.stringify({titre_col:titre_col,contenu_cell:contenu_cell,ind:ind})");
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...