Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tava a fazer criação de um formulario para colocação de comentarios , mas encontro varios erros e acabo por não descobrir como resolve-los... procuro ajuda para os identificar ...
P.S: Sou amador em programação de páginas
Erro: Parse error: syntax error, unexpected '$nome' (T_VARIABLE) in C:\xampp\htdocs\PAP\pages\insertcomment.php on line 9
Codigo
**<?php include "connection.php"; **
** $nome=$_POST['nome'];
$email=$_POST['email'];
$comentario=$_POST['comentario'];**
** $insert = "INSERT INTO comentarios_tb (Nome,Email,Comentario); VALUES ("$nome","$email", "$comentario")";
$query = mysql_query($insert);
echo "<center><h1> Obrigado o seu comentário foi enviado </h1> </center>";
?>**ola. seja bem vindo.
1. em principio, essas variaveis deveriam ser envoltas em aspas simples:
>
Citar
("$nome","$email", "$comentario")";
2. mas esse código está obsoleto; além de ser inseguro as funções mysql* foram removidas. pesquise sobre **mysqli** ou **PDO**.
3. aqui tem outras dicas boas:
https://forum.imasters.com.br/topic/542539-atenção-orientações-e-regras-do-fórum-de-php/@Nicolas Sousa
Primeiro (Parse Error)
Aí diz que a variável não existe e você quer usar algo que não exite.
Para que essas variáveis existam a array super-global POST tem que ter esses índices para preencher assim como que você fez.
Se o arquivo não recebeu os dados post vai sempre acabar nesse erro. É aconselhável verificar se o(s) valor(es) existe(m) antes de atribuí-lo(s).
Sobre o mysql já disseram. Então o que posso mais ajudar é sugerindo que leia isso:
Boa tarde e obrigado.
Como já tinha dito sou um completo amador no que se trata desta linguagem e estou a aprender por casa visto que a escola não me fornece essa aprendizagem... Preciso de a aprender com urgência pelo menos o básico para criar um formulário de comentários e de reservas ate dia 10 de Julho para conseguir finalizar a PAP (Prova de Aptidão Profissional) e assim sendo terminar o 12º ano (ano final em Portugal).
Não precisa de ser segura , apenas de funcionar... pretendo aprender a linguagem mais a fundo mas, só após ingressar a universidade.
Segui os dois primeiros conselhos mas ainda apareceram mais erros não sei se é normal...
>
13 horas atrás, Omar~ disse:
@Nicolas Sousa
Primeiro (Parse Error)
Aí diz que a variável não existe e você quer usar algo que não exite.
Para que essas variáveis existam a array super-global POST tem que ter esses índices para preencher assim como que você fez.
Se o arquivo não recebeu os dados post vai sempre acabar nesse erro. É aconselhável verificar se o(s) valor(es) existe(m) antes de atribuí-lo(s).
Sobre o mysql já disseram. Então o que posso mais ajudar é sugerindo que leia isso:
Também tou a seguir o seu concelho mas não estou a perceber muito bem este tutorial , as minhas variaveis foram todas colocadas em cima :
$nome=$_POST['nome'];
$email=$_POST['email'];
$comentario=$_POST['comentario'];
mas mesmo assim ele diz que não identifica a variavel...
fiz a alteração que vi no tutorial
$insert = ('INSERT INTO comentarios_tb (Nome,Email,Comentario); VALUES (:nome, :email, :comentario)');
E aparece me o seguinte :
**Notice**: Undefined index: nome in **C:\xampp\htdocs\PAP\pages\insertcomment.php** on line **4****Notice**: Undefined index: email in **C:\xampp\htdocs\PAP\pages\insertcomment.php** on line **5****Notice**: Undefined index: comentario in **C:\xampp\htdocs\PAP\pages\insertcomment.php** on line **6****Fatal error**: Uncaught Error: Call to undefined function mysql_query() in C:\xampp\htdocs\PAP\pages\insertcomment.php:10 Stack trace: #0 {main} thrown in **C:\xampp\htdocs\PAP\pages\insertcomment.php** on line **10**
**PS: Preciso mesmo muito do vosso apoio para conseguir terminar o meu projeto...**>
13 horas atrás, Nicolas Sousa disse:
**Fatal error**: Uncaught Error: Call to undefined function mysql_query() in C:\xampp\htdocs\PAP\pages\insertcomment.php:10 Stack trace: #0 {main} thrown in **C:\xampp\htdocs\PAP\pages\insertcomment.php** on line **10**
Mais importante: **Não use msql_query** como já lhe informaram, isso não exite mais no php, foi removido a muito... muito tempo devido a inumeros problemas, principalmente falha de segurança, além de que isso era lento demais.
Restrinja-se a usar mysqli_* ou PDO que é muito mais eficiente em todos aspectos.
Observe isso:
Spoiler
Arquivo do formulário
<form method="POST" action="registrar.php">
<input type="text" name="nome" />
<input type="text" name="email" />
<textarea name="comentario"></textarea>
</form>
Arquivo registrar.php
<?php
if (!isset($_POST['nome']) || empty($_POST['nome'])) {
echo "O \"nome\" não existe ou não foi digitado";
} else if (!isset($_POST['email']) || empty($_POST['email'])) {
echo "O \"email\" não existe ou não foi digitado";
} else if (!isset($_POST['comentario']) || empty($_POST['comentario'])) {
echo "O \"comentario\" não existe ou não foi digitado";
} else {
echo "Todos dados necessários foram recebidos<br />"
. "Instanciar a conexão e inserir os dados nesse laço<hr />"
. "Os dados recebidos estão assim:"
. "<pre>";
var_dump($_POST);
echo "</pre>";
}
O exemplo do guia:
$insert->execute([
'indice' => 'valor'
]);
'**indice**' é o nome da coluna na tabela que conectou
'**valor**' é o resultado do input_POST que queira salvar na coluna.Copiei esse codigo que voce me colocou como exemplo , com esse codigo vai funcionar a colocação de comentarios na base de dados?
$insert->execute([
'indice' => 'valor'
]);
Codigo:
Spoiler
$insert->execute([
'Nome' => 'nome'
'Email' => 'email'
'Comentario' => 'comentario'
])
ele da me este erro:
Spoiler
**Parse error**: syntax error, unexpected ''Email'' (T_CONSTANT_ENCAPSED_STRING), expecting ']' in **C:\xampp\htdocs\PAP\pages\inseertcomment.php** on line **18**
fiz as alterações que no erro diz , mas se o fizer acontece mais ... PHP é mesmo um bicho de 7 cabeças...Sabe o que é ARRAY ou como usar/definir/escrever ?
É sem dúvida uma das se não a mais importante coisa na linguagem, alguém que domina isso vai ter um vasta quantidade de recursos a mão.
Isso aqui é uma array
[
'indice1' => 'valor1',
'indice2' => 'valor2',
];
Isso aqui é uma array na forma mais grotesca, porém é importante conhecer pois raramente é necessário.
array(
'indice1' => 'valor1',
'indice2' => 'valor2',
);
Ambas arrays são singular e associativa, porque não possuem sub-índices e possuem um índice para cada cada valor na entrada.
Exemplo de array multi-dimensional não associativa e associativa ao mesmo tempo. (Não é o caso aqui, é só para mostrar mesmo)
Spoiler
[
'entrada' => [
'sub-valor1',
'sub-valor2',
'sub-valor3' => [
'def' => 'def-value' => [
'defv1',
'defv2',
],
],
],
'entrada2',
'entrada3'
];
Enfim é: entrada > chave **virgula** | entrada > chave **virgula | **entrada > chave **virgula** | entrada > chave **virgula ** etc.....
cada entrada deve ser terminada com uma virgula, e toda instrução deve ser terminado em ponto-e-virgula.
Duvido muito que o nome das suas colunas no banco comecem com letras em caixa alta. Reveja isso aí lembre-se:
>
11 horas atrás, Omar~ disse:
'indice' é o nome da coluna na tabela que conectou
'valor' é o resultado do input_POST que queira salvar na coluna.
>
47 minutos atrás, Nicolas Sousa disse:
PHP é mesmo um bicho de 7 cabeças...
A diferença de um programador experiente para o não experiente é que o experiente já passou por muitos erros e os solucionou.
A diferença do bom programador para o mal programador é que o bom pensa de forma prática e eficaz, bastando olhar e analisar para saber o que fazer.
Sim tem toda a razão ... o meu estudo foi baseado em vídeos de youtube já muito antigos e poucos explícitos..
As únicas linguagens em que fui leccionado foram HTML , Visual Basic , Assembley e linguagens de introdução como o tradicional Pascal e Portugol...
Sei que tou a ser um chato mas é por pura inocência não quero de modo nenhum ser um incomodo..
Novamente sou muito grato pela a ajuda que me esta a fornecer
>
56 minutos atrás, Nicolas Sousa disse:
Novamente sou muito grato pela a ajuda que me esta a fornecer
Mostre seu formulário que está a enviar os dados, talvez o erro esteja lá
Formulario :
Spoiler
<form name="commentform" action="inseertcomment.php" method="post" >
<div class="one_third first">
Nome: <input type="text" name="nome" id="nome" value="" size="22" required>
</div>
<div class="one_third">
Email: <input type="email" name="email" id="email" value="" size="22" required>
</div>
<div class="block clear">
Comentário: <textarea name="comentario" id="comentario" cols="106" rows="10"></textarea>
</div>
<div>
<input type="submit" name="submit" value="Enviar Comentário">
<input type="reset" name="reset" value="Reset">
</div>
</form>
condigo php:
Spoiler
<?php
if (!isset($_POST['nome']) || empty($_POST['nome'])) {
echo "O \"nome\" não existe ou não foi digitado";
} else if (!isset($_POST['email']) || empty($_POST['email'])) {
echo "O \"email\" não existe ou não foi digitado";
} else if (!isset($_POST['comentario']) || empty($_POST['comentario'])) {
echo "O \"comentario\" não existe ou não foi digitado";
} else {
echo "Todos dados necessários foram recebidos<br />"
. "Instanciar a conexão e inserir os dados nesse laço<hr />"
. "Os dados recebidos estão assim:"
. "<pre>";
var_dump($_POST);
echo "</pre>";
$insert->execute([
'nome' => 'nome',
'email' => 'email',
'comentario' => 'comentario',
]);
}
erro:
Spoiler
**Notice**: Undefined variable: insert in **C:\xampp\htdocs\PAP\pages\inseertcomment.php** on line **16****Fatal error**: Uncaught Error: Call to a member function execute() on null in C:\xampp\htdocs\PAP\pages\inseertcomment.php:16 Stack trace: #0 {main} thrown in **C:\xampp\htdocs\PAP\pages\inseertcomment.php** on line **16**>
4 horas atrás, Nicolas Sousa disse:
**Notice**: Undefined variable: insert in **C:\xampp\htdocs\PAP\pages\inseertcomment.php** on line **16****Fatal error**: Uncaught Error: Call to a member function execute() on null in C:\xampp\htdocs\PAP\pages\inseertcomment.php:16 Stack trace: #0 {main} thrown in **C:\xampp\htdocs\PAP\pages\inseertcomment.php** on line **16**
Você não leu o guia que apresentei, e pelo visto nenhum tipo de guia a respeito...
Fica a dica, tem que estudar meu filho. E quanto mais saber ainda será pouco e nunca terá o conhecimento suficiente. Há muitos anos eu programo em PHP e até hoje estudo, e mesmo que sei de muita coisa "vira-e-se-revira" me pego sem saber o que fazer.
O problema é que se você deve criar algo antes de querer utilizar, esse foi seu erro inicial e continua cometendo ele.
Spoiler
<?php
if (!isset($_POST['nome']) || empty($_POST['nome'])) {
echo "O \"nome\" não existe ou não foi digitado";
} else if (!isset($_POST['email']) || empty($_POST['email'])) {
echo "O \"email\" não existe ou não foi digitado";
} else if (!isset($_POST['comentario']) || empty($_POST['comentario'])) {
echo "O \"comentario\" não existe ou não foi digitado";
} else {
$host = '127.0.0.1'; // endereço do banco de dados
$db = 'seu_database'; // nome do tabase que está a tabela
$usuario = 'root'; // login de acesso ao banco de dados
$senha = ''; // senha de acesso ao banco de dados
try {
$dsn = "mysql:host={$host}; dbname={$db}";
$options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];
// $con => é o objeto da instancia da PDO
$con = new PDO($dsn, $usuario, $senha, $options);
} catch (PDOException $erro) {
echo ('Erro na conexão: ' . $erro->getMessage());
}
$tabela = 'nome_da_tabela'; // nome da tabela em que os dados devem ser salvos
// variável $insert armazena o método do objeto da pdo
// aqui tem que indicar a tabela depois as colunas isso se chama "preparar" depois o statements
$insert = $con->prepare("INSERT INTO {$tabela} (nome, email, comentario) VALUES (:nome, :email, :comentario)");
// Executar por array passando os valores do statements como índices e os valores são os dados do post
$insert->execute([
'nome' => $_POST['nome'],
'email' => $_POST['email'],
'comentario' => $_POST['comentario'],
]);
if ($insert->rowCount()) {
echo ('Dados Registrados');
} else {
echo ('Nenhum registro inserido');
}
}
**NOTA* O que mostrei é só um exemplo, não vá coloca isso online, pois não há tratamento algum de dados.**
Não vá querer um sql_inject em seu database que só lhe tará dor de cabeça no futuro, ou mesmo um corromper seu sistema sql para ter que reinstalar tudo e perder todos os dados.
Então mesmo que local cuidado com o que você vai digitar e salvar nas áreas dos posts. PDO com statements já trás alguma segurança, mas não faz milagre.
Olá, tente assim
>
19 minutos atrás, Nicolas Sousa disse:
comentarios_tb (nome, email, comentario) VALUES( '$nome', '$email', '$comentario')";