• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kof20012

Erro de PHP (registo de utilizadores)

27 mensagens neste tópico

boas estou com um problemas de sql no php

a seguinte linha de codigo

$contaUsername = mysql_result(mysql_query("select count (*) as contaUsername from membros where username = '{$_POST['username']}'"),0);

e o seguinte erro

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\tfc\join.php on line 116

isto quer dizer o que?

outro problema que aparece é

Cannot instantiate non-existent class

na linha

$emailer = &new Email;

Aqui esta o codigo todo:

<?php

include $_SERVER['DOCUMENT_ROOT'].'/TFC/Layout.php';

switch ($_REQUEST['req'])
{
case "process":

	//validar todos os pontos

	if (!$_POST['primeiro_nome'] 
		|| !$_POST['ultimo_nome'] 
		|| !$_POST['telefone'] 
		|| !$_POST['email'] 
		|| !$_POST['email2'] 
		|| !$_POST['username'] 
		|| !$_POST['password'] 
		|| !$_POST['password2'] 
		|| !$_POST['bio'])

{	

$erro=true;
$erros .= "<strong><font color=\"red\">Erros:".
			"</strong>\n\n";

			if (!$_POST['primeiro_nome'] )
				{
				$erros.="Falta Primeiro Nome\n";
				}

			if (!$_POST['ultimo_nome'] )
				{
				$erros.="Falta Ultimo Nome\n";
				}

			if (!$_POST['email'] )
				{
				$erros.="Falta o Email\n";
				$email_error=true;
				}

			if (!$_POST['email2'] )
				{
				$erros.="Falta o Email de verificaçao\n";
				$email_error=true;
				}

			if (!$_POST['username'] )
				{
				$erros.="Falta username\n";
				}

			if (!$_POST['password'] )
				{
				$erros.="Falta a password\n";
				}

			if (!$_POST['password2'] )
				{
				$erros.="Falta a password \n";
				$password_error=true;
				}

			if (!$_POST['bio'] )
				{
				$erros.="Falta a biografia\n";
				}
		}

//se os 2 email's sao validos

			if ($email_error== false)
			{
				if($_POST['email'] != $_POST['email2'])
					{
				$erro=true;
				$erros.="Email nao coincidem um com o outro!!\n\n";
				$email_error=true;
					}
			}

//se as 2 passwords sao validas

			if ($password_error== false)
			{
				if($_POST['eassword'] != $_POST['eassword2'])
					{
				$erro=true;
				$erros.="Passwords nao coincidem uma com o outra!!\n\n";
				$password_error=true;
					}
			}

if($email_error == false)
	{
	//verifica se o email ja foi usado

		$contaEmail = mysql_result (msql_query("select count (*) as contaEmail from membros where email = '{$_POST['email']}'"),0);

	//se o email ja existir, mensagem de erro	

		if ($contaEmail > 0)
			{

			$erro = true;
			$erros .= "Email ja usado".
						"use outro";
			}

	}


	//verifica se o email ja foi usado

		$contaUsername = mysql_result(mysql_query("select count (*) as contaUsername from membros where username = '{$_POST['username']}'"),0);

	//se o username ja existir, mensagem de erro	

		if ($contaUsername > 0)
			{

			$erro = true;
			$erros .= "Username ja usado".
						"use outro";
			}

	//se o erro for TRUE, usa a pagina de registo com os erros encontrados

	if ($erro == true)
		{
		$erros = nl2br ($erros); //da a string com um Break

		include $_SERVER['DOCUMENT_ROOT']. '/TFC/registoUtilizadores.php';



		}

	$sql = @mysql_query ("INSERT INTO membros (primeiro_nome, ultimo_nome, email, bio, username, password) VALUES ('$_POST[primeiro_nome]', '$_POST[ultimo_nome]', '$_POST[email]', now(), '$_POST[bio]', '$_POST[username]', '".md5($_POST[password])."') ");

	$userid=mysql_insert_id();

	$verify_url="http://" .$_SERVER['SERVER_NAME']. "join.php?red=verify&id=$userid&vcode=".md5($_POST['primeiro_nome']);

	$emailer = &new Email;

	//email user

	$mailer->ToMail = $_POST['email'];
	$mailer->FromMail= "kof20012@hotmail.com";
	$mailer->FromName= "My PHP Site Administrator";
	$mailer->Subject="Your membership at my php site";
	$mailer->message="Caro $_POST[primeiro_nome],\n".
					"Obrigado por ter registado no nosso site\n ".
					"Em baixo via encontrar a informaçao sobre o login do website \n".
					"Primeiro precisa de verificar o teu email, carregando no seguinte link: \n".
					"Link: \n$verify_url\n\n".
					"======================================\n".
					"Username: $_POST[username]\n".
					"Password: $_POST[password]\n".
					"UserID: $userid\n".
					"Email: $_POST[email]\n\n".
					"Obrigado".
					"Administrador\n".
					"http://$_SERVER[sERVER_NAME]\n";

	if(!$sql)
		{
		echo "Error inserting your information into MySQL: ".mysql_error();

		corpo();

		exit();

		}

}		
?>

cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas

nisto:

$contaUsername = mysql_result(mysql_query("select count (*) as contaUsername from membros where username = '{$_POST['username']}'"),0);

penso que podes fazer assim

$contaUsername = mysql_result(mysql_query("select count (*) as contaUsername from membros where username = '" . $_POST['username'] . "'"),0);

quanto ao outro erro aquilo ta a atribuir a $emailer a class Email que não existe.

e penso que tens ai um erro no mail que mandas..

Em baixo via encontrar...
devia ser
Em baixo vai encontrar...

cumps andreb

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas

eu nunca verifico se ja existe emails assim mas qual é o erro que dá??

olha tava a ver o codigo a cima e vi la um erro:

$contaEmail = mysql_result (msql_query("select count (*) as contaEmail from membros where email = '{$_POST['email']}'"),0);

falta-t um y na função mysql_query o que tu tens é  msql_query

cumps andreb

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso ja foi resolvido a parte de faltarem as letras

o erro e o seguinte:

Parse error: parse error in c:\apache\htdocs\tfc\join.php on line 129

tou com uma duvidas

o contasUsername tem k estar também na base de dados? supostamente é uma variável certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso ja foi resolvido a parte de faltarem as letras

o erro e o seguinte:

Parse error: parse error in c:\apache\htdocs\tfc\join.php on line 129

tou com uma duvidas

o contasUsername tem k estar também na base de dados? supostamente é uma variável certo?

Recomendo-te a ler um pouco sobre os erros do php, http://pt.php.net/manual/hu/ref.errorfunc.php, lá para o fundo da página tens uma tabela que compara e descreve os tipos de erros.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

		

	//verifica se o username ja foi usado


		$ligacao=mysql_pconnect('localhost', 'ODBC', '') or die("Problemas de ligaçao");
		mysql_select_db("TFC", $ligacao);

		$contaUsername->contaUsername;

		$result=mysql_query("select count (*) as contaUsername from membros where username = '{$_POST['username']}'",$ligacao);
		$contaUsername=mysql_fetch_object($result);



	//se o username ja existir, mensagem de erro	

tens aqui o bloco todo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$contaUsername->contaUsername;

O erro está aí. O método contaUsername é uma função ou uma variável?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Variável...

Essa parte não esta ai a fazer nada, isso não faz diferença no código

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Variável...

Essa parte não esta ai a fazer nada, isso não faz diferença no código

Acho que faz. Se é uma variável não te estás a esquecer de nada?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta trocar esta linha:

$result=mysql_query("select count (*) as contaUsername from membros where username = '{$_POST['username']}'",$ligacao);

por esta:

$result=mysql_query("select count (*) as contaUsername from membros where username = '{".$_POST['username']."}'",$ligacao);

e comentar a linha do djthyrax.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ponto de situação: quais os erros que dão e as linhas respectivas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

n sao erros mas sim warning...

linha 130:Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\tfc\join.php on line 130

Erro a introduzir informacao para o MySQL: Column count doesn't match value count at row 1

$result=mysql_query("select count (*) as contaUsername from membros where username = '{$_POST['username']}'",$ligacao);
		$contaUsername=mysql_fetch_object($result);

eu ja pensei que o problema sera da base de dados

vou por aqui o codigo da BD e o screenshot:

create table membros
( id MEDIUMINT(25) not null auto_increment primary key,
primeiro_nome VARCHAR(50) not null DEFAULT '',
ultimo_nome VARCHAR(50) not null DEFAULT '',
email VARCHAR(50) not null DEFAULT '',
data_registo DATETIME   not null DEFAULT '0000-00-00 00:00:00',
verified ENUM ('0','1')  not null DEFAULT '0',
ultimo_login DATETIME   not null DEFAULT '0000-00-00 00:00:00',
bio TINYTEXT   not null DEFAULT '',
acesso_admin ENUM ('0','1')  not null DEFAULT '0',
username VARCHAR(25) not null DEFAULT '',
password VARCHAR(100) not null DEFAULT ''
); 

semttulovk0.jpg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não entendo bem o que pretendes obter com esse query, mas tenta assim:

$result=mysql_query("SELECT COUNT(id) FROM membros WHERE username = '$_POST[username]' ",$ligacao);
$row=mysql_fetch_assoc($result);
echo $row['COUNT(id)'];

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu pretendo é que ele verifique ou conte os utilizadores para ver se o utilizador já existe na base de dados, caso ele exista ele diz o erro.

É o mesmo exemplo que se encontram no fóruns quando se regista.

a tua linha de código deu o valor 0

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao mas para isso poes o campo dos utilizadores como unico e problema resolvido.

quando estas a programar em php e mysql são tão importantes os conhecimentos de php como de mysql.

qualquer das formas corre essa query no phpmyadmin e vê se funciona assim por alto parece-me que tens erro na sintaxe sql.

tenta assim

$result=mysql_query('select count (*) as contaUsername from membros where username = \''.$_POST['username'].'\';',$ligacao);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O zero-cool já te deu a solução, mas esqueceu-se das chavetas:

$result=mysql_query("SELECT COUNT(id) FROM membros WHERE username = '{$_POST[username]}' ",$ligacao);
$row=mysql_fetch_assoc($result);
echo $row['COUNT(id)'];

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao mas para isso poes o campo dos utilizadores como unico e problema resolvido.

quando estas a programar em php e mysql são tão importantes os conhecimentos de php como de mysql.

qualquer das formas corre essa query no phpmyadmin e vê se funciona assim por alto parece-me que tens erro na sintaxe sql.

tenta assim

$result=mysql_query('select count (*) as contaUsername from membros where username = \''.$_POST['username'].'\';',$ligacao);

eu n tenho o phpmyadim, tou a usar o PHPTriad que tem ja tudo incluido com a excepçao disso

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora