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;'