Jump to content


Photo

Parse Error: Syntax Error, Unexpected T_constant_encapsed_string


  • Faça o login para participar
11 replies to this topic

#1 Magic Angel

Magic Angel

    Turista

  • Usuários
  • 59 posts
  • Sexo:Feminino

Posted 27/06/2008, 18:02

Erro:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /URL/posting.php on line 1505

a linha 1505:

$sql1 = “SELECT * FROM '.ALUNOS_TABLE.' WHERE disciplina_id = $linha['id'] AND user_id = $user->data['user_id'] â€;
primeira ocorrência no código abaixo, em anexo

Entendo bulhufas de phpBB, rebolei um monte pra adaptar minha lógica nesse sistema, e agora simplesmente dá esse erro que, teóricamente, deveria ser simples de resolver.. alguma aspa fora do lugar, um apóstrofe, um ; sei lá.. mas tentei de várias formas e em nada serve.
Alguém poderia me dar uma luz, por favor?

Obrigada desde já.

Abaixo segue parte do código:


$nota = 0;
$conceito = 'Péssimo';
$professor = 0;
$mes = date('M');
$ano = date('Y');

$sql2 = mysql_query("SELECT * FROM '.DISCIPLINAS_TABLE.' WHERE escola_id = $user->data['user_escola_id']");

while ($linha=mysql_fetch_array($sql2))
{

switch ($mode)
{
	case 'post':
		$sql1 = “SELECT * FROM '.ALUNOS_TABLE.' WHERE disciplina_id = $linha['id'] AND user_id = $user->data['user_id'] â€;

	break;

	case 'bump':
	case 'reply':
		if (!$topic_id)
		{
			trigger_error('NO_TOPIC');
		}

		$sql1 = “SELECT * FROM '.ALUNOS_TABLE.' WHERE disciplina_id = $linha['id'] AND user_id = $user->data['user_id'] â€;
	break;

	case 'quote':
	case 'edit':
	case 'delete':
	case 'smilies':
	case 'popup':
	default:
		$sql1 = '';
	break;
}

$result = $db->sql_query($sql1);
$post_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if (!$sql1)
{
		$sql = "INSERT INTO '.ALUNOS_TABLE.' (
		disciplina_id,
		professor_id,
		user_id,
		post_id,
		topic_id,
		forum_id,
		escola_id,
		casa_id,
		serie,
		nota,
		conceito,
		mes,
		ano
		) VALUES (
		'$linha['id'],
		'$professor',
		'$user->data['user_id']',
		'$post_id',
		'$topic_id',
		'$forum_id',
		'$user->data['user_escola_id']',
		'$user->data['user_casa_id']',
		'$user->data['user_level']',
		'$nota',
		'$conceito',
		'$mes',
		'$ano'
		)";

		mysql_query($sql)OR DIE(mysql_error());
}

}

Edição feita por: Magic Angel, 27/06/2008, 18:03.

O mundo é grande, O mundo é grande e cabe,
nesta janela sobre o mar, o mar é grande e cabe,
Na cama e no colchão de amar, o amor é grande e cabe,
no breve espaço de beijar.

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/06/2008, 18:21

Estes caracteres estranhos ai foi erro na postagem ou está no código mesmo? :ponder: Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 Magic Angel

Magic Angel

    Turista

  • Usuários
  • 59 posts
  • Sexo:Feminino

Posted 27/06/2008, 19:01

esquisito, não? Foi o que o post transformou..
ambos códigos esquisitos são aspas..
eu postei como aspas, mas na hora de enviar deve ter ocorrido algum bug..

obs q tlvz seja importante: ao invés das aspas (as desses códigos esquisitos), coloquei apóstrofes.. o erro passa a ser T_STRING, ao invés de T_CONSTANT_ENCAPSED_STRING. Logicamente, utilizar apóstrofes parece o correto nesse caso..



PARTE EDITADA:

Só para responder a mim mesma.. (isso sempre acontece ._.)

aquela linha, corretamente, é escrita da seguinte forma:
$sql1 = 'SELECT * FROM ALUNOS_TABLE WHERE disciplina_id = '.$linha['id'].' AND user_id = '.$user->data['user_id'].' ';
embora eu creia que o último apóstrofe é inútil

Comentário sem fundamento: Não entendo porque o phpBB tem um código que renomeia todas as tabelas do banco para tirarem o prefixo original e pôr um posfixo _TABLE na hora de fazer a conexão do PHP u.ú Fora que todas as tabelas do mysql nessas conexões estão entre apóstrofes... enfim...

agora estou com um problema diferente =}
vamos ver se eu mesma me respondo de novo XD

erro:


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /URL/posting.php on line 1549

a linha 1549:

$linha['id'],

o código de novo:
$nota = 0;
$conceito = 'Péssimo';
$professor = 0;
$mes = date('M');
$ano = date('Y');

$sql2 = mysql_query("SELECT * FROM '.DISCIPLINAS_TABLE.' WHERE escola_id = $user->data['user_escola_id']");

while ($linha=mysql_fetch_array($sql2))
{

switch ($mode)
{
	case 'post':
		$sql1 = 'SELECT * FROM ALUNOS_TABLE WHERE disciplina_id = '.$linha['id'].' AND user_id = '.$user->data['user_id'].' ';

	break;

	case 'bump':
	case 'reply':
		if (!$topic_id)
		{
			trigger_error('NO_TOPIC');
		}

		$sql1 = 'SELECT * FROM ALUNOS_TABLE WHERE disciplina_id = '.$linha['id'].' AND user_id = '.$user->data['user_id'].' ';
	break;

	case 'quote':
	case 'edit':
	case 'delete':
	case 'smilies':
	case 'popup':
	default:
		$sql1 = '';
	break;
}

$result = $db->sql_query($sql1);
$post_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if (!$sql1)
{
		$sql = "INSERT INTO '.ALUNOS_TABLE.' (
		disciplina_id,
		professor_id,
		user_id,
		post_id,
		topic_id,
		forum_id,
		escola_id,
		casa_id,
		serie,
		nota,
		conceito,
		mes,
		ano
		) VALUES (
		$linha['id'],
		$professor,
		$user->data['user_id'],
		$post_id,
		$topic_id,
		$forum_id,
		$user->data['user_escola_id'],
		$user->data['user_casa_id'],
		$user->data['user_level'],
		$nota,
		'$conceito',
		$mes,
		$ano
		)";

		mysql_query($sql)OR DIE(mysql_error());
}

}

Edição feita por: Magic Angel, 27/06/2008, 19:02.

O mundo é grande, O mundo é grande e cabe,
nesta janela sobre o mar, o mar é grande e cabe,
Na cama e no colchão de amar, o amor é grande e cabe,
no breve espaço de beijar.

#4 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/06/2008, 19:05

Ok, acho que independente disto, está tendo uma confusão entre aspas e apóstrofos, teste assim:

$sql2 = mysql_query("SELECT * FROM " . DISCIPLINAS_TABLE . " WHERE escola_id = " . $user->data['user_escola_id']);

Perceba que a idéia foi retirar as constantes e variáveis de dentro das strings e concatenar.

Tente fazer da mesma forma nas outras queries. (y)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#5 Magic Angel

Magic Angel

    Turista

  • Usuários
  • 59 posts
  • Sexo:Feminino

Posted 27/06/2008, 19:24

Elementar, meu caro.. solucionamos o caso =D

fiz o mesmo na query de inserção.. porém.. não enviou os dados q eu qria pro banco.. aliás.. não enviou nada..

droga.. de volta à prancheta -.-

EDIT:

Pergunta: Está correta a minha lógica? Eu tenho um loop rodando todas as disciplinas cadastradas na tabela disciplina.. O programa seleciona da tabela alunos um id q seja igual ao do usuário q tah acessando a página, e também cadastrado na mesma disciplina em q o loop tah.. Caso essa seleção não retorne nenhum registro ( usei: if(!$sql) ) ele pode gravar na tabela alunos os dados..
Mas está errado, não é? o if(!$sql) não me diz se a seleção q eu fiz retornou registros ou não.. ela apenas me diz se a seleção está correta, né?
E o que posso usar para saber se retorna registros ou não so query de seleção?

Edição feita por: Magic Angel, 27/06/2008, 19:34.

O mundo é grande, O mundo é grande e cabe,
nesta janela sobre o mar, o mar é grande e cabe,
Na cama e no colchão de amar, o amor é grande e cabe,
no breve espaço de beijar.

#6 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/06/2008, 19:39

Na verdade, as variáveis não são tão necessárias quanto as constantes, mas é sempre bom.

Tente apenas separar a constante que indica a tabela:

if (!$sql1)
{
		$sql = "INSERT INTO " . ALUNOS_TABLE . " (
		disciplina_id,
		professor_id,
		user_id,
		post_id,
		topic_id,
		forum_id,
		escola_id,
		casa_id,
		serie,
		nota,
		conceito,
		mes,
		ano
		) VALUES (
		$linha['id'],
		$professor,
		$user->data['user_id'],
		$post_id,
		$topic_id,
		$forum_id,
		$user->data['user_escola_id'],
		$user->data['user_casa_id'],
		$user->data['user_level'],
		$nota,
		'$conceito',
		$mes,
		$ano
		)";

		mysql_query($sql)OR DIE(mysql_error());
}

Respondendo a sua pergunta: realmente não tinha reparado neste ponto.

No caso, $sql1 sempre será verdadeiro, já que a query será executada com sucesso. O que você deve avaliar é se a query retornará ou não algum resultado:

if( mysql_num_rows($sql1) == 0 )
Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#7 Magic Angel

Magic Angel

    Turista

  • Usuários
  • 59 posts
  • Sexo:Feminino

Posted 27/06/2008, 19:48

hihihi.. lembrei disso! do mysql_num_rows()
E tirei algumas coisas do code, dispensáveis..

Só que permanece sem gravar.. céus ._.

$db1 = mysql_query($sql1);
$total = mysql_num_rows($db1);

if ($total == 0)
{
		$sql3 = "INSERT INTO ".ALUNOS_TABLE." (
		disciplina_id,
		professor_id,
		user_id,
		post_id,
		topic_id,
		forum_id,
		escola_id,
		casa_id,
		serie,
		nota,
		conceito,
		mes,
		ano
		) VALUES (
		".$linha['id']."',
		".$professor.",
		".$user->data['user_id'].",
		".$post_id.",
		".$topic_id.",
		".$forum_id.",
		".$user->data['user_escola_id'].",
		".$user->data['user_casa_id'].",
		".$user->data['user_level'].",
		".$nota.",
		'".$conceito."',
		".$mes.",
		".$ano."
		)";

		mysql_query($sql3);
}

O mundo é grande, O mundo é grande e cabe,
nesta janela sobre o mar, o mar é grande e cabe,
Na cama e no colchão de amar, o amor é grande e cabe,
no breve espaço de beijar.

#8 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/06/2008, 19:51

Coloque um echo com qualquer coisa dentro deste if() para ver se ao menos ele está entrando. :ponder:

Imprima também $sql1 para ver se a query está sendo gerada corretamente, se possível teste-a direto em seu banco de dados para ver se o resultado é o esperado. :)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#9 Magic Angel

Magic Angel

    Turista

  • Usuários
  • 59 posts
  • Sexo:Feminino

Posted 27/06/2008, 20:08

no banco aparece corretamente.. nenhum registro (na verdade, toda a tabela está sem registros).. e a página corre tão rápida que nem aparece as mensagens pra verificar se passa o if ou não.. coloquei inclusive um else, com outra mensagem.. mas não chego a ver nada.. estou lidando com a porcaria do phpBB u.ú

ai saco -.-
O mundo é grande, O mundo é grande e cabe,
nesta janela sobre o mar, o mar é grande e cabe,
Na cama e no colchão de amar, o amor é grande e cabe,
no breve espaço de beijar.

#10 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/06/2008, 20:13

Junto do echo que vai auxiliar, coloque um exit para parar a execução do script:

if( $total == 0 )
{
	echo "entrou no if";
	exit;
}
Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#11 marciovmartins

marciovmartins

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 27/06/2008, 20:20

eu não conheço o phpBB, coloca o seguinte:

mysql_query($sql3) or die( echo mysql_error() );

esse "or die" faz o script parar, e o echo mysql_error vai fazer escrever o erro.

neste caso, se houver erro vai ser exibido e parado a execução do script.

#12 Magic Angel

Magic Angel

    Turista

  • Usuários
  • 59 posts
  • Sexo:Feminino

Posted 27/06/2008, 20:47

Fiz todos os testes sugeridos, enchi o mod de teste, e constatei que o script na página não acessa nenhum deles o_o

Estou começando a crer que o problema está deste lado do computador, sentada numa cadeira, diante do monitor ._.

O script em si está certo.. deve ser imcompatibilidade do phpBB.. vai ver ele me exije q especifique alguma coisa antes de implantar o script.. sei lah..

Mas muito obrigada pela ajuda, Paulo.. foi deveras prestativo!
Obrigada também, Marcio.

Se obtiver resultados, volto a comunicar-me.
Um abraço,
Sara.
O mundo é grande, O mundo é grande e cabe,
nesta janela sobre o mar, o mar é grande e cabe,
Na cama e no colchão de amar, o amor é grande e cabe,
no breve espaço de beijar.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq