Ir ao conteúdo
  • Cadastre-se

syntax error


Posts recomendados


Parse error: syntax error, unexpected '$users' (T_VARIABLE) in /home/u513440501/public_html/comentarios/connection.php on line 6

 

<?php
    $localhost = "mysql.hostinger.com.br";
    $user = "u513440501_comen";
    $pass = "hqonline";
    $banco = "comentarios_tb";
    mysql_connect($host $users $pass) or die(mysql_error());
    mysql_select_db($banco) or die(mysql_error());
?>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Olá, seja bem vindo em nosso Clube do Hardware.

 

O seu erro é de digitação e sintaxe errada.

você tem a variável  $user mas usou $users no connect.

E faltou colocar virgulas separando as variáveis dentro de connect()

 

 A sintaxe correta é:

 mysql_connect("host", "usuario", "senha"). 

Em tempo, este método é obsoleto. Troque seu código por:

<?php
    $conexao = mysqli_connect("mysql.hostinger.com.br", "u513440501_comen","hqonline", "comentarios_tb");
    if(!$conexao):
       echo mysqli_error();
    endif;
?>

 

Link para o comentário
Compartilhar em outros sites

@DiF corrigi o que o senhor me falou e agr aconteceu isso.

 

 

Warning: mysqli_connect(): (28000/1045): Access denied for user 'u513440501_comen'@'10.1.2.38' (using password: YES) in /home/u513440501/public_html/comentarios/connection.php on line 2

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /home/u513440501/public_html/comentarios/connection.php on line 4

Nome: 
E-mail: 
Comentario: 



Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u513440501/public_html/comentarios/contato.php on line 14

Warning: mysql_query(): Access denied for user 'u513440501'@'10.1.2.38' (using password: NO) in /home/u513440501/public_html/comentarios/contato.php on line 14

Warning: mysql_query(): A link to the server could not be established in /home/u513440501/public_html/comentarios/contato.php on line 14

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/u513440501/public_html/comentarios/contato.php on line 15

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Sim houve um erro ai.

 

Vamos analisar:

 

27 minutos atrás, nerdoff disse:

Warning: mysqli_connect(): (28000/1045): Access denied for user 'u513440501_comen'@'10.1.2.38' (using password: YES) in /home/u513440501/public_html/comentarios/connection.php on line 2

Indica que não foi possível conectar por acesso negado para seu usuário. Verifique no seu host qual é o usuario e senha que será utilizado para conectar ao banco.

Ademais, poste o conteúdo do connection.php para ser analisado.

 

29 minutos atrás, nerdoff disse:

Warning: mysqli_error() expects exactly 1 parameter, 0 given

Indica que faltou parâmetros.. este é só para mostrar algum erro de conexao. 

 

30 minutos atrás, nerdoff disse:

Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u513440501/public_html/comentarios/contato.php on line 14

Indica que você usou a função mysql_query() para fazer as consultas. Ele é obsoleto então deve usar o mysqli ou o PDO. como não é orientação a objetos... use o mysqli mesmo.

 

mysqli_query()

 

O resto é semelhante.

 

Veja bem, você trocou de mysql para mysqli,  mas não trocou as funções..

 

então se usar o mysqli deve usar as funções dele!

mysqli_connect()

mysqli_query($conexao, "sua consulta aqui")

mysqli_fetch_array() ou mysqli_fetch_object()

mysqli_num_rows()   e por aí vai.

 

Sugiro postar seus códigos novamente caso tenha alterado algo.

Tanto do connection.php quanto o contato.php

Link para o comentário
Compartilhar em outros sites

<?php include "connection.php" ?>
<?php
$nome=$_POST['nome'];
$email=$_POST['nome'];
$comentario=$_POST['comentario'];
?>
<?php
	INSERT = "INSERT INTRO comentarios_tb(nome, email, comentario)";
	VALUES('$nome', '$email', '$comentarios');
	$query = mysql_query($insert);
	echo "<center></center>";
?>

Parse error: syntax error, unexpected '=' in /home/u513440501/public_html/comentarios/insertcomment.php on line 8

adicionado 1 minuto depois

@nerdoff @DiF

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Já vejo ali erros de sintaxe.

 

Tente assim:

<?php 

//inclui a conexão com seu banco de dados
include "connection.php";
  
//dados do formulário
$nome       = $_POST['nome'];
$email      = $_POST['nome'];
$comentario = $_POST['comentario'];

//armazena em uma variável a função mysqli_query() e a instrução de inserção no banco de dados
$inserir = mysqli_query($conexao, "INSERT INTRO comentarios_tb(nome, email, comentario)
                                     VALUES('$nome', '$email', '$comentarios')");

//testa o inserir.  se true, ele vai mostrar que foi inserido.
if($inserir):
    echo "Inserido";
endif;
?>

Basicamente o que eu vejo de errado no seu código é que você abriu e fechou as tags do php várias vezes dentro do mesmo arquivo php,  colocou a instrução SQL separada( insert e values) e usou a função mysql_query que eu já tinha alertado que deveria trocar para mysqli_query()

 

Você não postou o connection de novo então assumo o código do segundo  post do tópico onde mostro como conectar ao banco usando a nova extensão MYSQLI  com " i " no final

Link para o comentário
Compartilhar em outros sites

Citação

 

<?php 
include "connection.php";
$nome       = $_POST['nome'];
$email      = $_POST['nome'];
$comentario = $_POST['comentario'];
$inserir = mysqli_query($conexao, "INSERT INTRO comentarios_tb(nome, email, comentario) VALUES('$nome', '$email', '$comentarios')");
if($inserir):
    echo "Inserido";
endif;
?>

agora a página ficou totalmente branca

adicionado 0 minutos depois

quando eu coloco as informações nos formularios e aperto em ir, a página fica branca

adicionado 6 minutos depois

@dif

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Então... provavelmente você errou em algo...

 

Se ficou em branco é porque tem algo de errado OU na sua instrução SQL ou na conexao.

Mostraria o erro se colocar um ELSE no if do inserir.

 

Minha opinião é que o método de conexão pode estar dando o problema. recomendei que trocasse para mysqli.

Mas antes disso, veja no seu host se há a possibilidade configurar a conexão com o banco de dados. 

 

Digo isso, porque os dados que temos aqui é insuficiente.

Mas já expliquei o que deve ser feito. O jeito certo de fazer a conexão eu já postei no post #02.

 

Teste a sua instrução sql diretamente no phpmyadmin para ver se ele cadastra... se funcionar lá,  o erro é de código no php em algum lugar que precisa ser descoberto.

 

Vá por eliminação

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Você precisa ser mais claro... o banco de dados entra normalmente ou CADASTRA normalmente substituindo os valores?

 

Se ele cadastra normalmente com a instrução sql diretamente no phpmyadmin, podemos deduzir que o problema é no código php.

 

Você usa a hostinger certo?  A hostinger aceita a extensão MySQLI.

 

Você deve fazer exatamente como eu mostrei:

 

Cria um arquivo chamado conexao.php

Dentro dele coloque APENAS isto:

<?php
  $conexao = mysqli_connect("mysql.hostinger.com.br", "u513440501_comen","hqonline", "comentarios_tb");

Visto que o:

  • mysql.hostinger.com.br é o seu host da hostinger e é padrão não se deve alterar
  • u513440501_comen é o nome de usuário que você define
  • hqonline é a senha que você definiu
  • comentarios_tb é o nome do banco de dados que você criou.

Veja esta imagem onde mostra estes dados no seu hostinger:

Eu1DZ4S.png

 

Com isso você pode criar a conexão com o banco de dados.  Se tudo estiver certo vai funcionar. Eu sei porque uso a hostinger também.

Repare que eu não coloquei a tag de fechamento do php no conexão.php.  isso faz com que se há erros no código ele nem executa. permitindo descobrir o erro.

 

Agora que tens a conexão

 o código php de inserção:

<?php 
include "connection.php";

$nome       = $_POST['nome'];
$email      = $_POST['nome'];
$comentario = $_POST['comentario'];

$inserir = mysqli_query($conexao, "INSERT INTRO comentarios_tb(nome, email, comentario) VALUES('$nome', '$email', '$comentario')");
if($inserir):
    echo "Inserido";
else:
    echo "algo deu errado";
endif;
?>

Faça exatamente como postei aqui, só atente-se aos nomes corretos dos campos no banco de dados. Uma letra errada ou maiúscula já dá problema.. então precisa ser exatamente igual aos campos do banco

Também atente-se que o comentarios_tb é o nome da sua tabela, não é interessante que coloque o mesmo nome do banco de dados, pois isso só vai confundir você.

 

Além disso, perceba que no seu código você tem a variável $comentario.

Mas no insert, você colocou $comentarios   no plural... erro básico de iniciante, precisa prestar a atenção aos nomes das variáveis. Precisa ser iguais!

Outro erro é:  INSERT INTO,  e não "INTRO".  INTRO não existe.

 

Seguindo isso, é praticamente impossível de não funcionar.  Pois eu testei no meu servidor e funciona.

 

 

Link para o comentário
Compartilhar em outros sites

fiz passo a passo e:

 


Warning: mysqli_connect(): (28000/1045): Access denied for user 'u513440501_comen'@'10.1.2.38' (using password: YES) in /home/u513440501/public_html/comentarios/conexao.php on line 2

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /home/u513440501/public_html/comentarios/insertcomment.php on line 6

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Então... 

 

46 minutos atrás, nerdoff disse:

Warning: mysqli_connect(): (28000/1045): Access denied for user 'u513440501_comen'@'10.1.2.38' (using password: YES) in /home/u513440501/public_html/comentarios/conexao.php on line 2

Problema de conexão.  Acesso negado. Revise o usuário ou senha.. ou até mesmo o nome do  banco.

 

Vamos por eliminação coloque um teste de IF no arquivo de conexao  para testar  a conexão

desta forma:

if (mysqli_connect_errno()):
  echo "Falha na conexão MySQL: " . mysqli_connect_error();
endif;
   

Isso fará com que mostre exatamente qual o erro de conexão. Eu acho que é usuário e senha.

51 minutos atrás, nerdoff disse:

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /home/u513440501/public_html/comentarios/insertcomment.php on line 6

Este erro é característico de faltar um parâmetro.

 

o mysql_query() precisa obrigatoriamente ter 2 parâmetros.  O primeiro é SEMPRE a conexão, e o segundo é sempre a instrução SQL.

você usa a variável da conexão ali.

 

Se tudo isso não funcionar.. bem, aí é problema do seu host da hostinger eaí vai ter que abrir um chamado com eles para que resolvam.  É estranho porque eu uso o mesmo hostinger e é a versão gratuita e funciona sem problemas da mesma forma que lhe passei.

 

Link para o comentário
Compartilhar em outros sites

Pode ser que eu tenha feito algo errado, vou lhe enviar alguns prints que vai te dar um auxilio melhor.

host.1.png é a img dos dados do banco no hostinger.

amd.1.png são o comentario... no banco

off1.png são as paginas dentro da pasta

error1.png são todos os dados dentro das três pasta, só dei um enter para ficar melhor no print.

 

agora os códigos:

// conexao.php
<?php
  $conexao = mysqli_connect("mysql.hostinger.com.br", "	u513440501_off","hqonline", "comentarios_tb");
// contato.php
<?php include "conexao.php" ?>
<html>
	<head>
		<title>comentarios</title>
	</head>
	<body>
	<form name="commentform" method="post" action="insertcomment.php" >
	Nome: <input type="text" name="nome" /><br>
	E-mail: <input type="text" name="email" /><br>
	Comentario: <textarea name="comentario"></textarea><br>
	<input type="submit" name="submit" value="ir" />
	</form><br>
	<?php
	
	
	if ($row > 0) {
		while ($linha = mysql_fetch_array($sql)) {
			$nome = $linha['nome'];
			$email = $linha['email'];
			$comentario = $linha['comentario'];
			echo "<strong>Nome:</strong> $nome";
			echo "<br>";
			echo "<strong>Comentário:</strong> $comentario";
			echo "<hr><br><br>";
			}
	 }	
	?> 
	</body>
</html>	
	
// insertcomment.php
<?php 
include "conexao.php";
$nome       = $_POST['nome'];
$email      = $_POST['nome'];
$comentario = $_POST['comentario'];
$inserir = mysqli_query($conexao, "INSERT INTO comentarios_tb(nome, email, comentario) VALUES('$nome', '$email', '$comentario')");
if($inserir):
    echo "Inserido";
endif;
?>

PS: agora você têm tudo que eu tenho.

adm.1.png

error1.png

host.1.png

off1.png

adicionado 1 minuto depois

as imagens sairão fora de ordem mais estão todas ai @DiF

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Sim. Agora tem os dados necessários...   vamos lá.

Creio que eu tenha achado o erro... alias  dois erros:

 

1) O nome do seu banco de dados não é comentarios_tb  como você colocou na conexão, mas sim: u513440501_comen

 

Então altere o arquivo de conexao.php para:

 

// conexao.php
<?php
  $conexao = mysqli_connect("mysql.hostinger.com.br", "	u513440501_off","hqonline", "u513440501_comen");

 

2) No insertcomment.php   a variável $email  está recebendo o valor do nome.

Altere para:

$email      = $_POST['email'];

Basicamente é isso.  o seu erro de acesso negado era porque você estava colocando o nome da tabela onde deveria por o nome do banco de dados!

 

Tenho certeza que fazendo estas alterações, vai funcionar a conexão e a inserção.   Se houver problema aí é da parte deles.

 

PS: Este trecho:

if ($row > 0) {
		while ($linha = mysql_fetch_array($sql)) {
			$nome = $linha['nome'];
			$email = $linha['email'];
			$comentario = $linha['comentario'];
			echo "<strong>Nome:</strong> $nome";
			echo "<br>";
			echo "<strong>Comentário:</strong> $comentario";
			echo "<hr><br><br>";
			}
	 }	
	?> 

Você não está fazendo nenhuma consulta na tabela.. logo ele não mostrará estes dados. Além disso, está usando mysql,  onde deveria ser mysqli_fetch_array()

Link para o comentário
Compartilhar em outros sites

Warning: mysqli_connect(): (28000/1045): Access denied for user ' u513440501_off'@'10.1.2.38' (using password: YES) in /home/u513440501/public_html/comentarios/conexao.php on line 2

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /home/u513440501/public_html/comentarios/insertcomment.php on line 6

 

segui todas as instruções e vou contatar o suporte

adicionado 0 minutos depois

 

Aviso : mysqli_connect (): (28000/1045): Acesso negado para o usuário 'u513440501_off'@'10.1.2.38' (usando a senha: YES) em /home/u513440501/public_html/comentarios/conexao.php na linha 2

Nome: 
O email: 
Comentario: 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

<?php 
include "conexao.php";
$nome       = $_POST['nome'];
$email      = $_POST['email'];
$comentario = $_POST['comentario'];
$inserir = mysqli_query($conexao, "INSERT INTO comentarios_tb(nome, email, comentario) VALUES('$nome', '$email', '$comentario')");

/* if($inserir):
    echo "Inserido";
endif; */
header("Location: http://nerdoff.com.br/comentarios/contato.php");
?>

eu quero q o comentario seja imprimido na mesma pagina (igual esse sstema q a gente esta conversando)

adicionado 1 minuto depois

http://nerdoff.com.br/comentarios/contato.php  link quero q o comentario apareça em baixo, esta tudo certo e consta no banco de dados mas nao mostra na pg

adicionado 1 minuto depois

@dif

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Entendi.

 

O lance ali é que você está inserindo no banco de dados, mas não está fazendo a consulta na própria página de contato.

 

Basta fazer uma consulta ali e organizar do jeito que quiser. Você faz uma verificação de conteúdo, se houver registro ele mostra senão ele não mostra nada ou uma mensagem que não tem comentários ainda.

 

Tem duas formas de fazer isso, 

1) do jeito que está e só colocar a consulta

2) de forma assíncrona, onde você usa ajax e faz a requisição do arquivo de inserir os dados.. e insere  no lugar que quer.

 

Para começar, recomendo que faça de forma simples como a opção 1.

 

Na própria página de contato, crie o seguinte php:

 

<?php
  include 'conexao.php';

  $consulta = mysqli_query($conexao, 'SELECT nome, comentario FROM comentarios_tb');

  $registros = mysqli_num_rows($consulta);

  if($registros != 0):
     while($comment = mysqli_fetch_object($consulta)):
        echo "
               <div class='comentario-box'>
                  <p>Nome: $comment->nome</p>
                  <p>Comentário: $comment->comentario</p> 
                  </hr>
               </div>";
      endwhile; 

  else:
       "Não há comentários";
  endif;

 

Seria algo assim. Basicamente você está fazendo uma consulta na tabela que armazena os comentários.

SE o número de registros for diferente de zero, quer dizer que há um comentário na tabela.

 

O outro modo, é quase o mesmo, só que com requisição ajax com jQuery.  Esta requisição assíncrona é que dá a agilidade de fazer tudo sem atualizar a página.

Link para o comentário
Compartilhar em outros sites

não entendi como fia o código e onde coloca o que desculpe

adicionado 2 minutos depois

resolvi

mt obrigado dif =D

adicionado 4 minutos depois

só uma duvida como faço para inverter 

no caso esta os comentarios indo para baixo quero fazer o contrario, tipo o comentario mais recente no topo

Link para o comentário
Compartilhar em outros sites

  • Moderador

@nerdoff Como resolveu?   Só para deixar registrado aqui.. que vai servir para futuras consultas sobre o mesmo problema.

 

adicionado 3 minutos depois

@nerdoff

Testei ali e vou te dar uma dica.  na consulta, use o DESC para mostrar sempre o ultimo comentario adicionado no inicio da  página!

 

Ficando assim: 

SELECT nome, comentario FROM comentarios_tb ORDER by DESC

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

obrigado.

adicionado 43 minutos depois
<?php include "conexao.php" ?>
<html>
	<head>
		<title>comentarios</title>
	</head>
	<body>
		<form name="commentform" method="post" action="insertcomment.php" >
		Nome: <input type="text" name="nome" placeholder="Digite seu nome aqui..."/><br>
		Email: <input type="text" name="email" placeholder="Digite seu Email aqui..."/><br>
		Comentario: <textarea name="comentario" placeholder="Digite seu Comentario aqui..."></textarea><br>
		<input type="submit" name="submit" value="Enviar" />
		</form><br>
		<?php
$consulta = mysqli_query($conexao, 'SELECT nome, comentario FROM comentarios_tb'); 
$registros = mysqli_num_rows($consulta);
if($registros != 0):
     while($comment = mysqli_fetch_object($consulta)):
        echo " <hr>
               <div class='comentario-box'>
                  <p>Nome: $comment->nome</p>
                  <p>Comentario: $comment->comentario</p>  
               </div>";
      endwhile; 
  else:
       "Não há comentários";
  endif;
?> 
	</body>
</html>	
	
	

Onde eu encaixo o "ORDER by DESC"?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...