Write an array with a loop in the bank with ajax and php

0

I would like the help of you to insert into the bank with ajax, being that I have to do 3 insert, in 3 tables in the bank. There are several questions in a single insert, so it's an array. The answers pertaining to each question are also an array 2 insert use the id of the questionnaire. 3 insert use the id of the question which is an array 3 insert would use the response id, which is an array.

What am I doing wrong? Help me.

I have my ajax function.

<script>
        var mudadiv = 0;
        var NovaPergunta = 0;
        var mudaradio = 0;
        var mudatxt = 0;
        var con = 0;
        var conti = 0;
        var arrPerguntas = [];

        function Gravar() {
            /*

             *arrPerguntas {
             *  0 -> 3,
             *  1 -> 1,
             *  2 -> 5
             *}
             *para cada um dos elementos de arrPerguntas
             *  indice = id pergunta
             *  para de cont = 1 ate cont <= arrPerguntas[indice]
             *  document.getElementById("textodaresposta"+indicec+"-"+cont+"").value
             *
             *
             *
             **/
            var perguntasAbertas = [];

            for (i = 0; i < conti; i++) {
                perguntasAbertas.push(document.getElementById("perguntaA" + i + "").value);
            }

            var perguntasFechadas = [];

            for (l = 0; l < NovaPergunta; l++) {
                perguntasFechadas.push(document.getElementById("perguntaF" + l + "").value);

            }
            var respostas2 = new Array();
            for (l = 0; l < arrPerguntas.length; l++) {
              respostas2[l] = new Array();
              for (i=1; i <= arrPerguntas[l]; i++){
                respostas2[l].push(document.getElementById('textodaresposta' + l + '-' + i +'').value);
              }
            }
            $.ajax({
                type: "post",
                url: "RecebendoDados.php",
                dataType: "text",
                async: true,

                data: {
                    quest: document.getElementById("quest").value,
                    descr: document.getElementById("descr").value,
                    categ: document.getElementById("categ").value,
                    autor: document.getElementById("autor").value,
                    perguntasAbertas: perguntasAbertas,
                    perguntasFechadas: perguntasFechadas,
                    arrPerguntas: arrPerguntas,
                    respostas2: respostas2
                },
                success: function (resp) {
                  if (resp === "false") {
                    alert("ERROOO");
                  } 
                  else {
                     alert("OK");
                  }
                },
                error: function () {


                    alert('ERRO DO SISTEMA Nº22.\nENTRE EM CONTATO COM O ADMINISTRADOR DO SISTEMA.');
                }
            });
        }
</script>

I have my PHP class

function __construct() {

    $Conexao = new Conexao();
     $this->con = $Conexao->connection();
    }


$ques = isset($_POST["quest"]) ? $_POST["nome"]   : "Nome do questionario não informado";
$descr = isset($_POST["descr"]) ? $_POST["descr"] : "Descrição não informado";
$categ = isset($_POST["categ"]) ? $_POST["categ"] : "Categoria do questionario não informado";
$autor = isset($_POST["autor"]) ? $_POST["autor"] : "Autor não informado";
$perAbertas = isset($_POST["perguntasAbertas"])  ? $_POST["perguntasAbertas"] : "Nenhuma pergunta informada";
$perFechadas = isset($_POST["perguntasFechadas"]) ? $_POST["perguntasFechadas"] : "Nenhuma pergunta informada";
$qntPerguntas  = isset($_POST["arrPerguntas"])      ? $_POST["arrPerguntas"] : "Nenhuma resposta informada";
$respostas2  = isset($_POST["respostas2"])      ? $_POST["respostas2"] : "Nenhuma resposta informada";




   function insertgeral($nome_questionario, $descricao, $categoria, $autor, $texto_pergunta, $texto_resposta){
      $this->con->beginTransaction();
        try{$stmt = "
          INSERT INTO
          questionario (myid, nome_questionario, descricao, categoria, data, data_update,  autor)
          VALUES (NULL, :nome_questionario, :descricao, :categoria, :data, :data2, :autor)";
        $stmt = $this->con->prepare($stmt);
        $stmt->bindValue(":nome_questionario", $nome_questionario);
        $stmt->bindValue(":descricao", $descricao);
        $stmt->bindValue(":categoria", $categoria);
        $stmt->bindValue(":data", date('Y-m-d H:i:s'));
        $stmt->bindValue(":data2", date('Y-m-d H:i:s'));
        $stmt->bindValue(":autor", $autor);    
        $stmt->execute();
        $id_Questionario = $this->con->lastInsertId();
        //insert questionario
foreach ($perFechadas as $perguntaF){
    $stmt = "";
    $stmt .= "
          INSERT INTO perguntas (myid, id_questionario, texto_pergunta)
          VALUES (null, :id_questionario, :texto_pergunta)";
        $stmt = $this->con->prepare($stmt);
        $stmt->bindValue(":id_questionario", $idQuestionario);
        $stmt->bindValue(":texto_pergunta", $perguntaF);
        $stmt->execute();

}
//insert perguntas
foreach ($perAbertas as $perguntasA){

$stmt = "";  
$stmt .= "
          INSERT INTO perguntas (myid, id_questionario, texto_pergunta)
          VALUES (null, :id_questionario, :texto_pergunta)";
        $stmt = $this->con->prepare($stmt);
        $stmt->bindValue(":id_questionario", $id_Questionario);
        $stmt->bindValue(":texto_pergunta", $perguntasA);
        $stmt->execute();
        $id_Perguntas = $this->con->lastInsertId();

//receb o id de query_tab_3 => $idPerguntA
  for ($cont=0; $cont <= $qntPerguntas[i]; $cont++){
      $stmt = ""; 
      $stmt .= "
          INSERT INTO
            respostas (myid, id_perguntas, texto_resposta, correct)
          VALUES (null, :id_perguntas, :texto_resposta, NULL)";
        $stmt = $this->con->prepare($stmt);
        $stmt->bindValue(":id_perguntas", $id_Perguntas);// ou ".$idPerguntA."
        $stmt->bindValue(":texto_resposta", ".$respostas2[i][$cont].");
        $stmt->execute();

  }
  $i++;

  }
  //ultimo execute usar o commit
        $this->con->commit();
      return $this->processResults($stmt); 
      }

      catch (Exception $e){  
        $log = fopen('log.txt', 'a');
        fwrite($log, "ERRO EM 'pesRastreioDAO -> instPesRast' -=- DIA ".date("d/m/Y")." -=- HORA ".date("H:m:s")."\r\n".$e->getMessage()."\r\n");
        fclose($log);
        $this->con->rollBack();
        return false;
      }
    }

Database structure:

BANCO DE DADOS MYSQL'DROP TABLE IF EXISTS 'perguntas';
CREATE TABLE IF NOT EXISTS 'perguntas' (
  'myid' int(8) NOT NULL AUTO_INCREMENT,
  'id_questionario' int(8) NOT NULL,
  'texto_pergunta' varchar(300) NOT NULL,
  PRIMARY KEY ('myid'),
  KEY 'fk_questionario_pergunta' ('id_questionario')
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Estrutura da tabela 'questionario'
--

DROP TABLE IF EXISTS 'questionario';
CREATE TABLE IF NOT EXISTS 'questionario' (
  'myid' int(8) NOT NULL AUTO_INCREMENT,
  'nome_questionario' varchar(300) DEFAULT NULL,
  'descricao' varchar(300) DEFAULT NULL,
  'categoria' varchar(300) DEFAULT NULL,
  'data' datetime DEFAULT NULL,
  'data_update' datetime DEFAULT NULL,
  'autor' varchar(300) DEFAULT NULL,
  PRIMARY KEY ('myid')
) ENGINE=InnoDB AUTO_INCREMENT=92 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Estrutura da tabela 'respostas'
--

DROP TABLE IF EXISTS 'respostas';
CREATE TABLE IF NOT EXISTS 'respostas' (
  'myid' int(8) NOT NULL AUTO_INCREMENT,
  'texto_resposta' varchar(150) DEFAULT NULL,
  'id_perguntas' int(150) NOT NULL,
  'correct' varchar(300) DEFAULT NULL,
  PRIMARY KEY ('myid'),
  KEY 'fk_respostas_perguntas' ('id_perguntas')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Constraints for dumped tables
--

--
-- Limitadores para a tabela 'perguntas'
--
ALTER TABLE 'perguntas'
  ADD CONSTRAINT 'fk_questionario_pergunta' FOREIGN KEY ('id_questionario') REFERENCES 'questionario' ('myid');

--
-- Limitadores para a tabela 'respostas'
--
ALTER TABLE 'respostas'
  ADD CONSTRAINT 'fk_respostas_perguntas' FOREIGN KEY ('id_perguntas') REFERENCES 'perguntas' ('myid');
COMMIT;'
    
asked by anonymous 14.03.2018 / 20:56

0 answers