Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Não consigo gravar no banco

Boa Noite pessoal, estou tendando criar um dicionario mas estar dando erro na lina 4 e linha 5

Notice: Undefined index: ingles in /opt/lampp/htdocs/dicionario-ingles-portugues/adiciona-palavras.php on line 3

Notice: Undefined index: portugues in /opt/lampp/htdocs/dicionario-ingles-portugues/adiciona-palavras.php on line 4

<?php include("cabecalho.php");?>
<?php

$ingles = $_GET['ingles'];
$portugues = $_GET['portugues'];

$conexao = mysqli_connect('localhost', 'root', '', 'dicionario');

$query = "insert into palavras (ingles, portugues) values ('($ingles)', '($portugues)')";
8 respostas

Oi Max, você poderia mostrar pra gente o formulário que envia as palavras? Será que você não está enviando como POST e recebendo como GET? Lembra, as formas de envio e recebimento precisam ser as mesmas.

Bom Dia Wanderson Aqui o formulário

ingles-formulario.php

<htmk>
    <form action "adiciona-palavras.php">
    palavra
    <input type=-"text" name="ingles"><br/>
    Significado:
    <input type="text" name="portugues"><br/>

    <input type="submit"     value="gravar".>
</form>

</htmk>

O formulário parece ter 3 pequenos problemas, falta um "igual" depois do action do form e tem um input type com "-" antes do tipo do campo. Também a tag HTML está sendo aberta com um "k" no final. O formulário com ajustes ficaria assim:

<html>
    <form action = "adiciona-palavras.php">
    palavra
    <input type="text" name="ingles"><br/>
    Significado:
    <input type="text" name="portugues"><br/>

    <input type="submit"     value="gravar".>
</form>

</html>

Para conferir se as variáveis estão vindo como GET ou POST, você pode fazer o seguinte teste:

<?php include("cabecalho.php");?>
<?php

print_r($_GET); //Printa valores recebidos por GET
print_r($_POST); //Printa valores recebidos por POST

//Preencher a variavel se tiver conteudo
$ingles = "";
$portugues = "";

if (isset($_GET['ingles'])){
    $ingles = $_GET['ingles'];
}
if (isset($_GET['portugues'])){
    $portugues = $_GET['portugues'];
}

$conexao = mysqli_connect('localhost', 'root', '', 'dicionario');

$query = "insert into palavras (ingles, portugues) values ('($ingles)', '($portugues)')";
?>

Obrigado Daniel.

Agora esta dando erro na linha 40 rodape, mas esse erro já tinha aparecido so outro sistema não é a linha 40 e sim dentro do código.

<?php include("cabecalho.php");?>
<?php

print_r($_GET);
print_r($_POST);


$ingles = $_GET["ingles"];
$portugues = $_GET["portugues"];

if(isset($_GET['ingles'])){
    $ingles = $_GET['ingles'];
}
if(isset($_GET['portugues'])){
    $portugues = $_GET['portugues'];
}

$conexao = mysqli_connect('localhost', 'root', '', 'dicionario');

$query = "insert into palavras (ingles, portugues) values ('($ingles)', '($portugues)')";

if(mysqli_query($conexao, $query)) { ?>
    <p class="alert-sucess">O cadastro foi realizado <?= $ingles?>, <?=$portugues?>com sucesso.</p>
<?php } else{ ?>}    
<p class="alert-danger">O cadastro não foi realizado.</p>
?>
<$php
}

mysqli_query($conexao, $query);

mysqi_close($conexao);



?>

<p class="alet-success">A palavra <?= $ingles ?> , <?= $portugues ?> foi adicionada.</p>

<?php include("rodape.php");?>

Max, sempre que tiver uma mensagem de erro, cole ela aqui pra gente saber exatamente do que se trata tá bem? A solução fica mais fácil quando a gente vê a mensagem.

solução!

Ok Wanderson, vou postar....

Mas esse problema eu selecionei era na conexão com o banco de dados era para eu colocar aspas duplas

$conexao = mysqli_connect("localhost", "root", "", "dicionario");

Obrigado por compartilhar aqui com a gente Max!

Como diz um amigo meu "vamos que vamos", "ta todo mundo junto!..."

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software