Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Já pesquisei e foi muito, e esse assunto não tem em lugar nenhum. Bem eu desenvolvi um CRUD com LOGIN e SESSION, em php ficou perfeito cada usuário com sua sessão funcionando no XAMPP, só que estou tentando, desenvolver um app pelo CORDOVA, via AJAX com estas mesmas características se tratando de cliente , servidor, ok, fiz sessão de login, registro e o CRUD, certo..tudo beleza,.. Até eu relacionar a tabela de login com a do crud aí lascou, o login eu consigo entrar e ser redirecionado para o CRUD e ao inserir sei lá "produtos" na tabela não róla, claro que a dor de cabeça é... as sessões LOCAL ou SESSION STORAGE se conversarem com a $_SESSAO php, eu fiz isso, tanto que o login que tem o START() lado servidor e o registro como já disse funcionam normalmente, agora percebi que o problema esta no start do CRUD, devo estar pecando no AJAX erro de principiante, tenho dúvidas e a pergunta é esta do titulo.
Aos mais experientes peço ajuda.
>
55 minutos atrás, lui hurk disse:
Para todos efeitos continuo com esse problema a segunda tabela ou seja a do cliente não recebe os dados.
Ola veja se isso lhe ajuda CLIQUE AQUI...
Opa Jack, brigado pela ajuda, deixa eu reformular meu help..., pela inserção ou conexão ta beleza,
São duas tabelas relacionadas:
CREATE TABLE `users` (
`id` int(9) NOT NULL,
`name` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
`username` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
ALTER TABLE `users`
MODIFY `id` int(9) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
CREATE TABLE `employees` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(100) NOT NULL,
`duration` int(5) NOT NULL,
`price` decimal(10,2) NOT NULL,
`login_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT FK_employees_1
FOREIGN KEY (login_id) REFERENCES users(id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB;
A questão das **Sessions** está superada, eu entro com usuário na table "**users**" e tranquilo e só , pois na table "**employees**" não consigo cadastrar os dados, porém ao segregar as tables, a table "**employees**" ela cadastra normal, o problema, está aí quando há o relacionamento entre elas. Aí mais curioso no servidor php sem o Ajax róda perfeitamente.{ você entra na sessão com o seu usuário e cadastra seu os dados} mas em Ajax tá difícil.
Abaixo o link para acessar o exemplo, de como eu quero.
[DesteJeito](https://armstrongtechx.000webhostapp.com/product/index.php)
Tomara que tenha s*ido* claro, abraços.>
16 minutos atrás, lui hurk disse:
Opa Jack, brigado pela ajuda, deixa eu reformular meu help..., pela inserção ou conexão ta beleza,
São duas tabelas relacionadas:
CREATE TABLE `users` (
`id` int(9) NOT NULL,
`name` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
`username` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
ALTER TABLE `users`
MODIFY `id` int(9) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
CREATE TABLE `employees` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(100) NOT NULL,
`duration` int(5) NOT NULL,
`price` decimal(10,2) NOT NULL,
`login_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT FK_employees_1
FOREIGN KEY (login_id) REFERENCES users(id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB;
A questão das **Sessions** está superada, eu entro com usuário na table "**users**" e tranquilo e só , pois na table "**employees**" não consigo cadastrar os dados, porém ao segregar as tables, a table "**employees**" ela cadastra normal, o problema, está aí quando há o relacionamento entre elas. Aí mais curioso no servidor php sem o Ajax róda perfeitamente.{ você entra na sessão com o seu usuário e cadastra seu os dados} mas em Ajax tá difícil.
Abaixo o link para acessar o exemplo, de como eu quero.
[DesteJeito](https://armstrongtechx.000webhostapp.com/product/index.php)
Tomara que tenha s*ido* claro, abraços.
O problema não esta na sua tabela e sim no seu código então
Se tu posta parte do código que esta dando o problema que tu disse ai
Será ate melhor para os membros do FÓRUM lhe ajudar tbm.....Ok, como eu faço exponho o código da table users e employees aqui?....
Certo...
Mas beleza aí no entendimento né, em Ajax não funfa employees, no servidor funfa tudo, como no " exemplo ".
Vou dar uma analisada para pontuar aí eu posto o código.
abraços.
Bem la vai,
form.html
<div class="list">
<input type="hidden" id="id" value="" />
<div class="item">
<label> Name title</label>
<input type="text" name="title" id="title" value="" />
</div>
<div class="item">
<label>Employee Position duration</label>
<input type="text" name="duration" id="duration" value="" />
</div>
<div class="item">
<label>Employee Salary price</label>
<input type="text" name="price" id="price" value="" />
</div>
<div class="item">
<input type="button" id="insert" class="button button-block" value="Enviar" />
</div>
</div>
Ajax.js ( insert )
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#insert").click(function() {
var title = $("#title").val();
var duration = $("#duration").val();
var price = $("#price").val();
var dataString = "title=" + title + "&duration=" + duration + "&price=" + price + "&insert=";
if ($.trim(title).length > 0 & $.trim(duration).length > 0 & $.trim(price).length > 0) {
$.ajax({
type: "POST",
url: "https://caminho.com.br/insert.php",
data: dataString,
crossDomain: true,
cache: false,
beforeSend: function() {
$("#insert").val('Connecting...');
},
success: function(data) {
if (data == "success") {
alert("inserted");
$("#insert").val('submit');
} else if (data == "error") {
alert("error");
}
}
});
}
return false;
});
});
</script>
insert.php
<?php
ob_start();
session_start();
include "db.php";
if(isset($_POST['insert']))
{
$title=$_POST['title'];
$duration=$_POST['duration'];
$price=$_POST['price'];
$loginId = $_SESSION['id'];
$q=mysqli_query($con,"INSERT INTO employees (`title`,`duration`,`price`,`login_id`) VALUES ('$title','$duration','$price','$loginId')");
if($q)
echo "success";
else
echo "error";
}
ob_end_flush();
?>
users.php
if(isset($_POST['login']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$login = mysqli_query($con, "SELECT * FROM `users` WHERE `username`='$username' AND `password`='$password'")
or die("Could not execute the select query.");
$row = mysqli_fetch_assoc($login);
if(is_array($row) && !empty($row)) {
$validuser = $row['username'];
$_SESSION['valid'] = $validuser;
$_SESSION['id'] = $row['id'];
echo "success";
}else{
echo "error";
}
}
mysqli_close($con);
Acrescentando;
/monthly_2019_10/normal.JPG.813d5a8667e74c707a3def25df6e6370.JPG" />
Só lembrando que a requisição é realizado do lado cliente em html.
Ok, tentei sumarizar o máximo.
Abraços.>
Em 08/10/2019 at 22:10, Jack Oliveira disse:
O problema não esta na sua tabela e sim no seu código então
Se tu posta parte do código que esta dando o problema que tu disse ai
Será ate melhor para os membros do FÓRUM lhe ajudar tbm.....
Beleza a parte é essa.
<?php session_start(); ?>
<?php
session_id();
header("Access-Control-Allow-Origin: *");
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
include "db.php";
if(isset($_POST['insert'])){
$title=$_POST['title'];
$duration=$_POST['duration'];
$price=$_POST['price'];
$loginId = $_SESSION['id'] = 'login_id';
$q=mysqli_query($con,"INSERT INTO employees
(`title`,`duration`,`price`,`login_id`)
VALUES
('$title','$duration','$price','$loginId')");
if($q) {
echo "success";
}else{
echo "error";
}
}
?>
Se puderem me ajudar fico muito grato.
Abraço a todos.@lui hurk
Não existe poblema em inserir informações em tabelas relacionadas deste que exista registro na tabela MÃE para que possa ser inserido registro na tabela filha, este é o conceito.
Experimenta usar o comando de INSERT como abaixo:
$q=mysqli_query($con,"INSERT INTO employees
(id, title, duration, price, login_id)
VALUES (NULL, '".$title."', ".$duration.", ".$price.", ".$loginId.")");
Só uma dica do que estava errado no seu INSERT.
Variáveis do tipo ALHANUMERICA devem ser colocadas entre aspas na clausula SQL.
Variáveis do tipo NUMEICA devem ser colocadas SEM aspas na clausula SQL.
O banco de dados identifica um ALPHANUMERICO como STRING quando existem ASPAS no inicio e fim da palavra, como você declarou TITLE como VARCHAR elas devem ser colcadas entre aspas, mas isso estou falando dentro do VALUE então TITLE no VALUE fica 'Titulo aqui como Alphanumerico', para os outros campo como DURATION PRICE e LOGINID você declarou como INT e DECIMAL, lembrando que INT só aceita numeros inteiros, então se tiver . (ponto) e/ou , (vigula) vai dar erro, lembrando também que para o Banco de Dados, não existe , como separados de casas decimais, então o ponto deve ser usado.
Exemplo, valor R$ 1.221.469,99 <-- esse valor para ser inserido no banco de dados deve ficar como 1221469.99.
A mesma regra do INT deve ser aplicado para o DECIMAL então no VALUR esses "valores" numéricos devem ser cadastrados sem as aspas.
VALUE (NULL, 'meu titilo aqui', 1, 15.99, 1) <-- exemplo de como deve ser formatado o VALUE.
Espero ter ajudado.
Att.
***Felipe Coutinho***
>
Em 23/01/2019 at 21:16, lui hurk disse:
Já pesquisei e foi muito, e esse assunto não tem em lugar nenhum. Bem eu desenvolvi um CRUD com LOGIN e SESSION, em php ficou perfeito cada usuário com sua sessão funcionando no XAMPP, só que estou tentando, desenvolver um app pelo CORDOVA, via AJAX com estas mesmas características se tratando de cliente , servidor, ok, fiz sessão de login, registro e o CRUD, certo..tudo beleza,.. Até eu relacionar a tabela de login com a do crud aí lascou, o login eu consigo entrar e ser redirecionado para o CRUD e ao inserir sei lá "produtos" na tabela não róla, claro que a dor de cabeça é... as sessões LOCAL ou SESSION STORAGE se conversarem com a $_SESSAO php, eu fiz isso, tanto que o login que tem o START() lado servidor e o registro como já disse funcionam normalmente, agora percebi que o problema esta no start do CRUD, devo estar pecando no AJAX erro de principiante, tenho dúvidas e a pergunta é esta do titulo.
Aos mais experientes peço ajuda.
Para todos efeitos continuo com esse problema a segunda tabela ou seja a do cliente não recebe os dados.