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

Acho que fiz certo mas da erro

Olá amigos Sou novo aqui talvez seja ridícula a pergunta mas novato é novato. Então peço ajuda de vocês para solucionar esse erro.

Não sei se trata de um erro que aparentemente não é pois fiz tudo como manda o exemplo ou se esta relacionado com a versao do php que no meu caso aqui é o php7.

isso ai não roda aparece um erro bem estranho. Esse abaixo é o erro apresentado. Alguém sabe do que se trata ?

"produto Notice: Array to string conversion in C:\xampp\htdocs\loja\adiciona-produto.php on line 11 Array , Notice: Array to string conversion in C:\xampp\htdocs\loja\adiciona-produto.php on line 11 Array adicionaldo com sucesso !"

<html>

<?php
$nome= $_GET=["nome"];
$preco=$_GET=["preco"];

?>
produto <?php echo $nome ?> ,<?php echo $preco ?>  adicionaldo com sucesso !

</html>
9 respostas

Regis, é que você colocou um sinal de igual onde não tem. Você deve receber os dados passados por GET sem o operador de atribuição, ou seja, sem o sinal de igual =.

Dessa forma:

$nome = $_GET["nome"];
$preco = $_GET["preco"];

Testa aí, pra ver se funciona.

Esse igual foi um erro na hora de colocar o codigo aqui, mas mesmo sem ele como o código abaixo mostra da um erro

<?php include("cabecalho.php"); ?>
<?php
$nome = $_GET["nome"];
$preco = $_GET["preco"];

$conexao = mysqli_connect('localhost', 'root', '', 'loja');
if (mysqli_query($conexao, $query)){
  $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

}
else {
   echo "Erro ao tentar Insert no banco de dados";
};

mysqli_close($conexao);
?>

Produto <?= $nome; ?>, <?= $preco; ?> adicionado com sucesso!

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

Erro o navegador exibe isso !!

Notice: Undefined index: nome in C:\xampp\htdocs\loja\adiciona-produto.php on line 3

Notice: Undefined index: preco in C:\xampp\htdocs\loja\adiciona-produto.php on line 4

Notice: Undefined variable: query in C:\xampp\htdocs\loja\adiciona-produto.php on line 7

Warning: mysqli_query(): Empty query in C:\xampp\htdocs\loja\adiciona-produto.php on line 7 Erro ao tentar Insert no banco de dados Produto , adicionado com sucesso!

Oi Regis, as duas primeiras mensagens de erro que estão dizendo:

Notice: Undefined index: nome in C:\xampp\htdocs\loja\adiciona-produto.php on line 3

Notice: Undefined index: preco in C:\xampp\htdocs\loja\adiciona-produto.php on line 4

Significa que dentro do array $_GET ele não conseguiu encontrar as posições nome e preco Esse array é preenchido com os parâmetros que você passa na url, por exemplo:

localhost:8080/nome-da-pagina.php?nome=teste&preco=10

o segundo erro:

Notice: Undefined variable: query in C:\xampp\htdocs\loja\adiciona-produto.php on line 7

está dizendo que ele não encontrou a variável query, isso porque você está chamando mysqli_query($conexao, $query) antes de definir o que é a variável $query repara que vc está definindo ela somente dentro do if.

A solução nesse caso seria:

$conexao = mysqli_connect('localhost', 'root', '', 'loja');
$query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

if (mysqli_query($conexao, $query)){
    // aqui dentro vai o código que deve ser executado em caso a query deu certo
}
else {
   echo "Erro ao tentar Insert no banco de dados";
};

Vamos tentar do zero, abaixo o codigo do formulario adiciona-produtos.php

<html>

<h1>Formulário de cadastro</h1>
<form action="adiciona-produto.php" method="post">


    Nome:<input type="text" name="nome" /><br />
      Preço: <input type="number" name="preco" /><br />
      <input type="submit" value="Cadastrar" />


</form>

</html>

Agora o o código do formulário que deveria receber os paramentos corretamente e dar o insert no banco

<html>
<?php

$nome= $_GET=["nome"];
$preco=$_GET=["preco"];

$conexao = mysqli_connect('localhost', 'root', '', 'loja');
$query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

if (mysqli_query($conexao, $query)){
    echo "Insert realizado com sucesso!";
}
else {
   echo "Erro ao tentar Insert no banco de dados";
};



?>




</html>

CONTINUA COM ERROS

Notice: Array to string conversion in C:\xampp\htdocs\loja\adiciona-produto.php on line 8

Notice: Array to string conversion in C:\xampp\htdocs\loja\adiciona-produto.php on line 8 Erro ao tentar Insert no banco de dados

O que fiz de errado ?

No formulário, você colocou que a forma de enviar os dados e por POST

<form action="adiciona-produto.php" method="post">


    Nome:<input type="text" name="nome" /><br />
      Preço: <input type="number" name="preco" /><br />
      <input type="submit" value="Cadastrar" />


</form>

A página que vai receber os dados deste formulário (adiciona-produto.php), deve ler os campos desta forma:

<?php

$nome = "";
$preco = 0;

if (isset( $_POST["nome"])){
$nome= $_POST["nome"];
}
if (isset( $_POST["preco"])){
$preco=$_POST["preco"];
}

$conexao = mysqli_connect('localhost', 'root', '', 'loja');
$query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";

if (mysqli_query($conexao, $query)){
    echo "Insert realizado com sucesso!";
}
else {
   echo "Erro ao tentar Insert no banco de dados";
};



?>

Neste exemplo, a leitura dos campos do formulário é feita por $_POST Eu criei duas variáveis, e utilizo o isset() para preencher com o campo do formulário, caso ele tenha sido postado.

Perceba que eu defini o campo preco como zero.

Se a página for executada sem postar dados vai inserir registros vazios. Isso pode ser evitado fazendo IFs para validar se o conteúdo foi recebido antes de tentar gravar.

Regis, o valor atributo method da tag form deve ser igual ao tipo que você declara no recebimento.

Se você fizer:

<form action="adiciona-produto.php" method="get">
    <input type="text" name="nome" />
</form>

Na página php de recebimento você deve utilizar get também.

$nome= $_GET["nome"];

Já se você usar post:

<form action="adiciona-produto.php" method="post">
    <input type="text" name="nome" />
</form>

Deve receber por post também:

$nome= $_POST["nome"];

De todo jeito que eu faço da erro. E não posso passar de lição sem entender o que ha de errado aqui. Agradeço pela ajuda


<html>
<h1>Formulário de cadastro</h1>
<form action="adiciona-produto.php" method="get">
    Nome:<input type="text" name="nome"/><br />
      Preço: <input type="number" name="preco"/><br />
      <input type="submit" value="Cadastrar"/>
</form>
</html>

<html>
<?php

$nome= $_GET=["nome"];
$preco=$_GET=["preco"];

$conexao = mysqli_connect('localhost', 'root', '', 'loja');
$query = "insert into produtos (nome,preco) values ('{$nome}'',{$preco})";

if (mysqli_query($conexao, $query)){
    echo "Insert realizado com sucesso!";
}
else {
   echo "Erro ao tentar Insert no banco de dados";
};
?>

</html>



Notice: Array to string conversion in C:\xampp\htdocs\loja\adiciona-produto.php on line 8

Notice: Array to string conversion in C:\xampp\htdocs\loja\adiciona-produto.php on line 8
Erro ao tentar Insert no banco de dados
solução!

Oi regis, um dos erros agora é que tem um problema nessa linha:

$query = "insert into produtos (nome,preco) values ('{$nome}'',{$preco})";

a , está no lugar errado no final do comando, o correto seria assim:

$query = "insert into produtos (nome,preco) values ('{$nome}','{$preco})";

Obrigado!