Ir para conteúdo

POWERED BY:

Arquivado

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

manoaj

problema com registros 0 no banco

Recommended Posts

galera eu fiz um codigo pra verificar no banco de dados se o usuario que esta logado votou em outro usuario no dia em questão , mas o problema é que se o usuario que for votar ainda não tiver nenhum registro de voto no banco de dados a variavel que verifica data na tabela fica como indefinida pq não tem nenhum registro , só que não entendi o pq que essa variavel fica indefinida e as outras não , sendo que todas estão sem valores . e também quando não tem registro nenhum no banco o codigo deveria só exibir a mensagem Você ainda não efetuou nenhum voto mas ele continua.

<?php
//essa função verifica s eo usuário já votou hoje caso contraio éxibido o sistema de votos
$username_user_log = $exibir['username'];
$dataatual   = date("d/m/Y");

$sql_login = mysql_query("SELECT * FROM users_voto WHERE username_voto='$username_user_log'")
or die(mysql_error());

if(@mysql_num_rows($sql_login) == '0'){
echo "<div class=\"alert_info \">Você ainda não efetuou nenhum voto!</div>";
}else{

while($res_user = mysql_fetch_array($sql_login)){

	$id              = $res_user[0];
	$username_voto   = $res_user[1];
	$data_voto       = $res_user[2];
	$id_user_voto = $res_user[3];

}
}
?>
<?php
if($data_voto == $dataatual){
		echo "<div class=\"alert_warning  \">Você já votou hoje, então não podera avaliar mais usuários!</div>";	
	}else{


?>
<!-------------------->
<!--Fução de votação-->
<?php include('functions/vot_artist.php'); ?>
<!-- FIM Fução de votação-->
<!-------------------->
<?php
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito depende do tipo da consulta que você for fazer.

 

Por exemplo, se eu quiser retornar se existe um voto em meu nome no sistema e utilizar assim:

"SELECT * FROM votos WHERE usuario = 'gabrielheming'";

 

Irá funcionar perfeitamente se houver resultados. Se não houver votos algum, não retornará nada, pois você está apenas consultando e não quantificando.

 

O método quantificativo count() deve ser empregado quando você deseja retornar em números. No exemplo acima, utilizando o count, ficaria assim:

"SELECT count(*) FROM votos WHERE usuario = 'gabrielheming'";

 

E então, a saída, será um número de 0 a N. Sempre haverá retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

poise mas no caso é consultado um nome de usuario na tabela também então não posso usar esse metodo quantificativo :/ o que eu faço

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostre seu código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

msoteri ali em sima kkkkkkkk ou num ta aparecendo ? :/

<?php
//essa função verifica s eo usuário já votou hoje caso contraio éxibido o sistema de votos
$username_user_log = $exibir['username'];
$dataatual   = date("d/m/Y");

$sql_login = mysql_query("SELECT * FROM users_voto WHERE username_voto='$username_user_log'")
or die(mysql_error());

if(@mysql_num_rows($sql_login) == '0'){
       echo "<div class=\"alert_info \">Você ainda não efetuou nenhum voto!</div>";
}else{

       while($res_user = mysql_fetch_array($sql_login)){

               $id              = $res_user[0];
               $username_voto   = $res_user[1];
               $data_voto       = $res_user[2];
               $id_user_voto = $res_user[3];

       }
       }
?>
<?php
if($data_voto == $dataatual){
                       echo "<div class=\"alert_warning  \">Você já votou hoje, então não podera avaliar mais usuários!</div>";        
               }else{


?>
<!-------------------->
<!--Fução de votação-->
<?php include('functions/vot_artist.php'); ?>
<!-- FIM Fução de votação-->
<!-------------------->
<?php
}
?>


Compartilhar este post


Link para o post
Compartilhar em outros sites

LOL, quando eu postei, não tinha visto seu código, até estranhei ele agora.

 

Notei que, você não está verificando o dia, apenas está buscando pelo usuário

 

Tente substituir seu código por este:

//como eu não sei o nome do campo data e nem o formato, coloquei no modo "default"
$sql = "
  SELECT 
     count(*) AS votou
  FROM 
     users_voto 
  WHERE 
     username_voto = '$username_user_log'
     AND data_atual = ".date('Y-m-d');

$sql_login = mysql_query($sql) or die(mysql_error());
$query = mysql_fetch_array($sql_login);
$votou = (boolean)$query['votou'];

//é basicamente uma pergunta, "Já votou?", caso falso, indica que ele não votou
if($votou === false) {
   /** código da votação do dia atual **/
} else {
   /** código que já votou hoje **/
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza vo testa e já volto pra falar com você , to demorando pra responder um poco , pq to escrevendo outras paginas ai ate esqueço daqi kkkk

 

bom eu testei lá e ate a parte de votar e exibir o codigo pra votar funciono o problema é que depois que eu voto ele continua exibindo o codigo de votação ao invez de exibir a mensagem dizendo que o usuario já votou

 

<?php
$username_user_log = $exibir['username'];
//como eu não sei o nome do campo data e nem o formato, coloquei no modo "default"
$sql = " SELECT count(*) AS votou FROM users_voto WHERE username_voto = '$username_user_log' AND data_voto = ".date('Y-m-d');

$sql_login = mysql_query($sql) or die(mysql_error());
$query = mysql_fetch_array($sql_login);
$votou = (boolean)$query['votou'];

//é basicamente uma pergunta, "Já votou?", caso falso, indica que ele não votou
if($votou === false) {
   /** código da votação do dia atual **/
   include('functions/vot_artist.php');
} else {
   /** código que já votou hoje **/
echo "<div class=\"alert_info \">Você já votou hoje!</div>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Insira este var_dump, e me dia o resultado.

$query = mysql_fetch_array($sql_login);
var_dump($query);

Compartilhar este post


Link para o post
Compartilhar em outros sites

array (size=2)

0 => string '0' (length=1)

'votou' => string '0' (length=1)

 

esse ai foi o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual é o valor do campo "data_voto"? Acredito que o problema seja com ele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

12/12/2012 a data de hoje ,a e eu mudei ali em sima o formato da data do select pra bater coma a data atual d/m/Y ou teria que serd e outro jeito

 

ele é inserido no banco atravez desta variavel e neste formato acredito que ta certo com codigo novo que você me passou ja que mudei pro mesmo formato

 

$dataatual = date("d/m/Y"); inserido assim e lido pelo select assim AND data_voto = ".date('d/m/Y');

Compartilhar este post


Link para o post
Compartilhar em outros sites

é um tanto complicado trabalhar com formatos de data em string (varchar) no SGBD. Utilize um formato de data específico, como Date

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso então eu mudo campo de vanchar para date , ai ele já iria inserir a data automaticamente sema necessidade de que eu o faça na hora do insert né , mas o no caso o que mudaria em relação a esse codigo de agora? nem precisa falar kkkkkkkkkkkkkkkkk eu testei aqui com cmapo date e a data que é inserida no banco é no ano mes e dia e o que é vrificado é dia mes e ano e mesmo assim funciona kkkkkkkkkk

 

o que não intendi foi isso a data que é inserida é no formato Y/m/d e a data do select que verifica é d/m/Y e se eu colocar as duas iguias não fucnionam só funciona se estiver assim kkkkk ao contrario , trosso mais doido kkkkk

 

mas vlw pela ajuda mano resolveu meu problema muito obrigado obrigado mesmo :D :D :D :D s2 kkkkk :clap:

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.