Ir para conteúdo

Arquivado

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

gersonab

[Resolvido] Relacionar nivel de usuario

Recommended Posts

Galera, boa tarde.

Estou com um probleminha.

Como faço para relacionar o nivel de um usuário com a quantidade máxima que ele pode cadastrar ?

Exemplo

nivel 0 pode cadastrar 1 item

nivel 1 pode cadastrar 10 itens

nivel 2 pode cadastrar 30 itens

 

Tenho seis níveis , e o mesmo é gravado na SESSION do usuario quando ele loga , no momento meu script esta assim ...

$link = mysql_connect($dbhost, $dbuser, $dbpass);
	$db = mysql_select_db($dbname); 
	$query = "SELECT username, nivel FROM $dbusu WHERE username='".$_SESSION['username']."'";
	$result = mysql_query($query, $link) or die(mysql_error()); 
	$result = mysql_num_rows($result); 
	$count = $result[0];
	while($nivel = mysql_fetch_array($result)) {
	$nivel = $_SESSION['nivel'];
	$nivel[0] = str_replace ( 0 , 1 , $nivel[0] );
	$nivel[0] = str_replace ( 1 , 10 , $nivel[0] );
	$nivel[0] = str_replace ( 2 , 5 , $nivel[0] );
	$nivel[0] = str_replace ( 3 , 60 , $nivel[0] );
	$nivel[0] = str_replace ( 4 , 90 , $nivel[0] );
	$nivel[0] = str_replace ( 5 , 120 , $nivel[0] );
	}
	if ( $count > $nivel[0] ) {
			echo "<script language='JavaScript'> alert('Voce ja atingiu o numero maximo de cadastro.'); </script>";
	}	
			?>

E ta dando este erro ...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/bolana/public_html/contando.php on line 10

 

Além de não bloquear o cadastro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que seu erro está aqui neste trecho, veja:

$result = mysql_query($query, $link) or die(mysql_error());
	$result = mysql_num_rows($result);
	// Você sobrescreve a variável $result! Procure utilizar outro nome para
	// a variável que conta o número de linhas retornadas. Por exemplo:

	// $numeroLinhas = mysql_num_rows($result);
O restante do código nem analisei, porque eu não tinha como testar, e eu basicamente só consigo ajudar o pessoal aqui do fórum de PHP quando eu posso executar os scripts.

 

Mas o erro retornado se refere a um erro na consulta ao MySQL, como disse, acredito que a utilização do mesmo nome de variável pode sre o problema...

 

Teste, e veja se é isso mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dessa forma , eu tenho o aterta em todas as ocasiões, mesmo com o numero abaixo.

 

<?
require 'config/config.php';

	$link = mysql_connect($dbhost, $dbuser, $dbpass);
	$db = mysql_select_db($dbname); 
	$query = "SELECT username, nivel FROM $dbusu WHERE username='".$_SESSION['username']."'";
	$result = mysql_query($query, $link) or die(mysql_error()); 
	$count = mysql_num_rows($result); 
	while($nivel = mysql_fetch_array($result)) {
	$nivel = $_SESSION['nivel'];
	$nivel[0] = str_replace ( 0 , 1 , $nivel[0] );
	$nivel[0] = str_replace ( 1 , 10 , $nivel[0] );
	$nivel[0] = str_replace ( 2 , 5 , $nivel[0] );
	$nivel[0] = str_replace ( 3 , 60 , $nivel[0] );
	$nivel[0] = str_replace ( 4 , 90 , $nivel[0] );
	$nivel[0] = str_replace ( 5 , 120 , $nivel[0] );
	}
	if ( $count > $nivel[0] ) {
			echo "<script language='JavaScript'> alert('Voce ja atingiu o numero maximo de cadastro.'); location.href='controle2.php'; </script>";
	}	
			?>

Lembro que esta esta sendo requerida na pagina onde faz o cadastro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para um melhor entendimento do que estou querendo fazer ...

 

Eu preciso fazer uma relação de nivel de usuario com a quantidade máxima de cadastro que este usuario pode fazer.

Tenho a tabela do usuario e a tabela de itens , na tabela usuario o usuario, agencia e o nivel estão em sessiom , sei que o usuario de nivel 2 pode fazer até 5 cadastros ( exemplo ) , na tabela de itens tenho uma coluna chamada agencia tambem, onde tenho a relação de itens daquele usuario.

 

exemplo:

o usuario gerson tem nivel 2 e pode cadastrar até 5 itens , ao tentar cadastrar mais itens ha um alerta e retorna o mesmo a sua pagina de controle, não deixando cadastrar acima disso.

 

Como são varios usuários e varios níveis ( de 0 a 5 ), eu não estou conseguindo fazer essa relação do nivel com o número maximo de cadastro.

 

Da forma descrita acima o alerta aparece o tempo todo, independente de ter 1, 3 ou 5 cadastros .

 

A parte de listagem com relação ao usuario , onde ele ve somente o que é dele e a quantidade de itens que ele tem cadastrado esta ok, falta fazer esta relação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se, ao invés de alertá-lo que ele já efetuou o número máximo de cadastros, você simplesmente não permite mais cadastros? Tipo, o botão desativa, ou o link some, não sei como é isso exatamente no seu sistema, mas, no meu ponto de vista, em termos de usabilidade, é melhor você avisar o usuário antes de um erro acontecer (nesse caso, o "erro" seria a tentativa de cadastro de itens acima do limite).

 

Compreende? Sei que foge até um pouco da questão do seu problema em si, mas muitas vezes por causa de alguns problemas, outros acabam surgindo...

 

Ah! Qual é a linha 10 do seu script? Porque no erro retornado ele aponta para esta linha...

 

E não tem como disponibilizar uma prévia da tela do seu sistema? http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif (É porque às vezes o sistema é "supersecreto", e não podemos divulgar nada...). Se puder, acho que me facilita a enxergar o problema por um todo...

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho este problema de secreto .. rs ... o importante é ajudar e ser ajudado ...

E este forum é muito bom nisso ...

 

Com relação a bloquear o cadastro , fica da mesma situação, como fazer a relação de nível com a quantidade de cadastro, entendeu ?

 

como que eu vou relacionar o usuario com a quantidade máxima de cadastro que ele pode fazer ....

No momento esta desconfigurado o layout pois esta em teste ...

 

Imagem Postada

 

Veja que o usuario " carlos " da agencia " master " tem " 5 " veículos cadastrados ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo, fiz uma pequena modificação para verificar a session do nivel ...

 

<? 
echo "Bem vindo <strong>". $_SESSION['username'] ." da Agencia ". $_SESSION['agencia'] ."</strong>! <br />
Você está acessando área restrita para usuários cadastrados!<br /><br />";
	?>
Existem até agora <font class='texto2'><b><?=$count?></b></font> veículos cadastrados. E seu nível é <?=$_SESSION['nivel'] ?> <br>
</td>
<td align='right'>
<input class='texto2' type=button value='Adicionar veículo' onClick="window.location='adicionar2.php';">
 
 
<input class='texto2' type=button value='Sair' onClick="window.location='sair.php?logout=true';">

A session do nivel ta passando , pois onde mostra quantos veículos , agora mostra tb o nível do usuario, entendeu ?

 

não seria colocar algo assim ...

if($_SESSION['nivel'] = 2 ) {

if ( $count > 30 )

bloqueia o botão

} else {

 

mais ai eu teria de fazer toda a relação , e como fazer ?

 

if($_SESSION['nivel'] = 1 ) {

if ( $count > 10 )

bloqueia o botão

} else {

if($_SESSION['nivel'] = 2 ) {

if ( $count > 30 )

bloqueia o botão

} else {

if($_SESSION['nivel'] = 3 ) {

if ( $count > 60 )

bloqueia o botão

} else {

 

 

entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, estava de saída e vi sua resposta. Não tive condições de analisar mais profundamente, porém, em uma análise superficial, vi a sua última questão. Bom, naquele caso, o mais recomendável é que se use um switch, ao invés do if, pois, se for de nível 3, ele terá, obrigatoriamente, que passar pela verificação dos outros níveis, e se for com switch, ele vai direto, manja?

 

Mas quanto a conseguir o que precisa, depois eu (ou alguém) analisa melhor... Ok? Um abraço! Bom fim de semana!

 

Ah! Só mais uma coisa: a imagem está muito pequena! Não dá para enxergar direito... E uma coisa que vi ali e achei estranho é: "Seu nível é 2". O usuário sabe quais são os níveis existentes? Ele sabe o que isso significa? :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito ...

Na pagina de cadastro ...

 

if($_SESSION['nivel']==0 && $count2>=1) {
echo "<script language='JavaScript'> alert('".$_SESSION['username']." da agencia ".$_SESSION['agencia']." voce ja atingiu o numero maximo de cadastro.'); location.href='controle2.php'; </script>"; 
exit;
}
if($_SESSION['nivel']==1 && $count2>=10) {
echo "<script language='JavaScript'> alert('".$_SESSION['username']." da agencia ".$_SESSION['agencia']." voce ja atingiu o numero maximo de cadastro.'); location.href='controle2.php'; </script>"; 
exit;
}
.......
} else {
.....

Valeu .. muito obrigado ...

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.