Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Kohler

[Resolvido] mysql_result Como devo usar

Recommended Posts

Boa Tarde,

 

Estou com problemas para usar a função mysql_result() eu coloco os parametros e da este erro segue abaixo o codigo e o erro.

mysql_result() expects parameter 2 to be long

 

$resultado = mysql_query("SELECT count(nome) FROM tb_colaborador WHERE nome = 'ANDRÉ'");

if(mysql_result($resultado, 'nome') > 0)
{
	echo "
		<div id='dialog-modal' title='Colaborador já Existe'>
			<p>Este Colaborador já existe.</p>
		</div>";
}
else
{
  //Insere o registro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para essa função você deve passar 3 parâmetros

 

mysql_result(RESULTADO, INDICE, CAMPO );

ou seja, no seu caso + ou - assim:

 

mysql_result($resultado,0, 'nome'); //repare que acrescentei o "0" que representa o primeiro resultado.

At+

Compartilhar este post


Link para o post
Compartilhar em outros sites

não faz sentido oque você fez.

 

outra função 'relativa' ao mysql_result, seria a familia mysql_fetch_ assoc|object|array()

 

para oque você fez, seria melhor assim:

$resultado = mysql_query("SELECT count(nome) AS qnt FROM tb_colaborador WHERE nome = 'ANDRÉ'");

if( mysql_num_rows( $resultado ) )
{
   $dados = mysql_fetch_object( $resultado );
   echo 'Existem '.$dados->qnt.' colaborador(es) com esse nome!';
}

rode essa query que você postou diretamente no campo, e preste atenção nas colunas que te retornão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o que você falou mais ainda, agora não da erro mas não evita a insercao do dado,

$resultado = mysql_query("SELECT count(nome) as qnt FROM tb_colaborador WHERE nome = 'André'");
			
		
							
			if(mysql_result($resultado,0,'qnt') > 0)
			{		
					echo "
					<div id='dialog-modal' title='Colaborador já Existe'>
						<p>Este Colaborador já existe.</p>
					</div>";
				}
				else
				{ //insere o dado

Como faço para evitar a insercao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, esse código apenas está lendo os valores do banco.

Para evitar a inserção de dois nomes iguais (se foi isso que entendi que você estava tentando), primeiramente na tabela você deve declarar o campo como Unique, dai ele não vai aceitar valores iguais.

Partindo dai você trabalha para mostrar ao usuario que ele não pode inserir um nome que já esteja cadastrado no banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo faz uma verificação de quantas linhas retornaram da consulta:

 


$resultado = mysql_query(....

$linha = mysql_num_rows($resultado);

if($linha > 0) {
  echo .....
} else {
   restante do código
}

At+

Compartilhar este post


Link para o post
Compartilhar em outros sites

André

A melhor solução é a que o William Bruno tinha postado.

Mas se você não quer que ele inclua valores iguais, você precisa fazer a checagem primeiro. Depois avisar o usuario que o nome escolhido já existe no sistema. E lembrando que o indicado é deixar o campo da tabela como unique.

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo explique melhor o seu problema, o que espera que a consulta te retorne:

 

$resultado = mysql_query("SELECT count(nome) as qnt FROM tb_colaborador WHERE nome = 'André'");                        

??

 

at+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não misture o trecho de um código com o trecho de outro sem entender oque você está fazendo.

 

leia novamente o meu post em #2

 

se você quiser testar 'se existe' apenas com o _num_rows(), você precisa modificar a string SQL, removendo o COUNT()

 

estude.

na verdade, respondendo ao titulo do tópico, 'o melhor seria', nem usar o mysql_result() em hipótese nenhuma.

http://www.php.net/mysql_result

When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than mysql_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo explique melhor o seu problema, o que espera que a consulta te retorne:

 

$resultado = mysql_query("SELECT count(nome) as qnt FROM tb_colaborador WHERE nome = 'André'");                        

??

 

at+

 

Eu gostaria que o retorno fosse a quantidade de registros que tivessem aquele nome, para eu fazer a condicao do if($resultado > 0){ nao insere}else{ insere}

Entendeu?

 

Obrigado pela atencao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo para saber se já existe um registro com esse nome basta fazer assim:

 


$resultado = mysql_query("SELECT nome FROM tb_colaborador WHERE nome = 'André'");
$linha = mysql_num_rows($resultado);

if($linha >0) {
   echo "erro";
} else {
   codigo ...
}

At+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Graças a paciência do Quelipe eu consegui, valeu mesmo, a seguir o codigo completo:


Action:
<?php
	
    class Cadastrar{
    	function execute()
		{
			Conexao::conectar();
				
			$nome = $_POST['nome'];
    		
    		$DAO = new ColaboradorDAO();
						
			$resultado = $DAO->Verificar($nome);
						
			$linha = mysql_num_rows($resultado);
			
			if($linha > 0) 
			{
  		 		echo "
					<div id='dialog-modal' title='Colabrador já Existe'>
						<p>Este Colaborador já Existe.</p>
					</div>";
			}
			else
			{
			
					$o = new Colaborador();
									
					$o->setNome($_POST['nome']);
					$o->setRg($_POST['rg']);
					$o->setCpf($_POST['cpf']);
					$o->setFormacao($_POST['formacao']);
					$o->setEmail($_POST['email']);
					
					$o->setAssinatura($_FILES['assinatura']['name']);
					
					$o->setCargo($_POST['cargo']);
					$o->setEmpresa($_POST['selEmpresa']);
					$o->setTelefone1($_POST['telefone1']);
									
					$colaboradorDAO = new ColaboradorDAO();
					$resposta = $colaboradorDAO->Cadastrar($o);
					
					Conexao::desconectar();
				
					
					if($resposta)
					{
						$_REQUEST['mensagem'] = "Cadastrado com sucesso";
						return "Cadastro";
					}
					else
					{
						$_REQUEST['mensagem'] = "Erro no cadastro";
						return "ERRO";
					}
				}		
			
			return "Cadastro";
		}
    }
?>
DAO:
<?php
class ColaboradorDAO
{	
	public function Verificar($var)
	{
		return $sql = mysql_query("SELECT nome FROM tb_colaborador WHERE nome = '$var'");
	}
}
?>

Muito obrigado pela ajuda Quelipe.

 

At++

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.