Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

09-10-2008 16:30

Boa tarde.
Na minha tabela de usuario eu tenho a seguinte coluna :
`nivel` enum('0','1','2','3','4','5') NOT NULL default '0',
Esta é para colocar o nível do usuario ao fazer o cadastro.
O usuario ao logar o seu nivel fica guardado em session :
$_SESSION['nivel'] = $conta[nivel];

Eu preciso é definir o número máximo de cadastro que o usuario pode fazer , exemplo :
nivel 0 = 1 cadastro
nivel 1 = 10 cadastros
nivel 2 = 30 cadastros
nivel 3 = 60 cadastros
nivel 4 = 90 cadastros
nivel 5 = 120 cadastros

Dessa forma eu obtenho quantos cadastros do usuario eu tenho :
$link = mysql_connect($dbhost, $dbuser, $dbpass); $query = "SELECT COUNT(*) FROM $dbvin WHERE agencia='".$_SESSION['agencia']."'"; $result = mysql_db_query($dbname, $query, $link); $result = mysql_fetch_array($result); $count = $result[0];

eu poderia me basear em :
se nivel = 0 , $count <=1 ou 'erro' ----> certo ?
caso positivo poderia colocar desta forma ?
$niv = $_SESSION['nivel']
if( $niv == 0 ){
$count > 1
echo " erro ";
}

é dessa forma mesmo ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Limitar quantidade de cadastro do usuario

09-10-2008 17:00

Acho que a melhor verificação é direta no bd. Essa que fez contando o número de linhas, e quando for <= que 1, dá um aviso e exit
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

09-10-2008 17:44

ok, mas como defino os valores dos níveis com relação a quantidade ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Limitar quantidade de cadastro do usuario

09-10-2008 17:56

Como você já tem o usuário em mãos, poderia fazer tipo o seguinte:

SELECT usuario FROM suatabela WHERE usuario='valor da session'

Com isso iria retornar o número de linhas que o usuário já tem, como o nível é relacionado ao número de cadastro / linhas, só verificando o total de linhas já iria impedir mais um cadastro.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

09-10-2008 23:19

WEB , boa noite, a dificuldade é que eu não estou sabendo relacionar o nivel ao número de linhas que o usuario pode ter.
exemplo :
nivel 1 pode ter 10 linhas
nivel 2 pode ter 20 linhas

conseguindo fazer essa relação , acredito que se eu fizer count > nivel echo erro, entendeu a minha dificuldade ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Limitar quantidade de cadastro do usuario

09-10-2008 23:40

Imaginei assim, o total de linhas é global, pode ser usado em todo lugar.

Ai, você faz o select pegando somente o nivel do usuário

SELECT nome, nivel FROM tabela WHERE nome='...'

Dentro do while você pega o nível e joga em array
$nivel[] = "campo do nível";

Fora do while você pega o nivel assim: $nivel[0]

Ai, você vai ter que fazer a troca de nível por quantidade de cadastros

$nivel[0] = str_replace(1, 10, $nivel[0]);
$nivel[0] = str_replace(2, 20, $nivel[0]);
etc...

Ai comparar o $nivel[0] com a quantidade de linhas da consulta.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

10-10-2008 15:09

Desculpa, não estou conseguindo ...

$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];
$nivel = $_SESSION['nivel'] ;
while($nivel = mysql_fetch_array($count)) {
$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>";
}
?>

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/bolana/public_html/contando.php on line 11
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Limitar quantidade de cadastro do usuario

10-10-2008 16:35

Nesse seu script no while

while($nivel = mysql_fetch_array($count)) {

Deveria estar referente a query

while($nivel = mysql_fetch_array($result)) {
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

10-10-2008 17:24

Esse erro eu ja tinha reparado , porém continua o mesmo erro ...

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

$count = $result[0]; while($nivel = mysql_fetch_array($query)) { $nivel = $_SESSION['nivel'];


$count = $result[0]; $nivel = $_SESSION['nivel']; while($nivel = mysql_fetch_array($query)) {

0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

10-10-2008 17:26

perdão é $result e não $query

copiei errado
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

10-10-2008 17:29

mesma situação nos dois exemplos acima , continua o erro ...
$count = $result[0]; while($nivel = mysql_fetch_array($result)) { $nivel = $_SESSION['nivel'];

Uma dúvida a mais ... este forum , não tem como editar um post ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Limitar quantidade de cadastro do usuario

10-10-2008 17:35

Não, no caso do teu script tem algum lance errado aí, talvez com a estrutura do mysql

Vou te passar um exemplo simples de conexão com a consulta, usa como base

<?php $conexao = mysql_connect("localhost", "login", "senha") or die(mysql_error()); $db = mysql_select_db("bd"); $selec = "SELECT ..."; $exec = mysql_query($selec, $conexao) or die(mysql_error()); $total = mysql_num_rows($exec); while($campos=mysql_fetch_array($exec)) { extract($campos); echo "$campotal"; } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

11-10-2008 09:53

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.
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

11-10-2008 11:49

web , fiz um teste aqui com relação as sessions ...
No alerta inclui ...
echo "<script language='JavaScript'> alert('".$_SESSION['username']." da agencia ".$_SESSION['agencia']." voce ja atingiu o numero maximo de cadastro. Seu nivel e ".$_SESSION['nivel']."'); location.href='controle2.php'; </script>";

Este me retornou o usuario e a agencia , porém o nivel não !
Será este o problema ?
Pq o nivel não gravou na session ...

onde confoirmo o login e faço as sessions ...

$sql = mysql_query("SELECT AgentID, username, password, agencia, nivel FROM $dbusu WHERE username='$username' AND password='$password' ", $db); $conta = mysql_num_rows($sql); if ( $conta > 0 ) { while($conta = mysql_fetch_array($sql)){ $_SESSION['AgentID'] = $conta[AgentID]; $_SESSION['username'] = $conta[username]; $_SESSION['agencia'] = $conta[agencia]; $_SESSION['nivel'] = $conta[nivel]; header("Location:controle2.php");

0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

11-10-2008 12:51

Web, fiz uma pequena modificação para verificar a session do nivel ...
Esta modificação eu fiz na página de controle ..
Imagem

<? echo "Bem vindo <strong>". $_SESSION['username'] ." da Agencia ". $_SESSION['agencia'] ."</strong>! <br /> Você est&aacute; acessando &aacute;rea restrita para usu&aacute;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&iacute;culo' onClick="window.location='adicionar2.php';"> &nbsp; &nbsp; <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 de cadastro
} 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 ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Limitar quantidade de cadastro do usuario

11-10-2008 14:28

Acho que sim, no caso vai trabalhar com as duas condições ao mesmo tempo

if($_SESSION['nivel']==1 && $count>=10) {
// dá um aviso, alert ou redireciona
exit; // trava tudo abaixo
}

Ai você pode trabalhar com else if, explicado no link abaixo para várias condições ao mesmo tempo

http://www.codigosnaweb.com/forum/viewtopic.php?t=116
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Limitar quantidade de cadastro do usuario

11-10-2008 15:44

Perfeito ...

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 ...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Limitar quantidade de cadastro do usuario

11-10-2008 17:17

:smile
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado