manoaj 12 Denunciar post Postado Dezembro 12, 2012 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
Gabriel Heming 766 Denunciar post Postado Dezembro 12, 2012 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
manoaj 12 Denunciar post Postado Dezembro 12, 2012 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
Gabriel Heming 766 Denunciar post Postado Dezembro 12, 2012 mostre seu código. Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Dezembro 12, 2012 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
Gabriel Heming 766 Denunciar post Postado Dezembro 12, 2012 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
manoaj 12 Denunciar post Postado Dezembro 12, 2012 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
Gabriel Heming 766 Denunciar post Postado Dezembro 12, 2012 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
manoaj 12 Denunciar post Postado Dezembro 12, 2012 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
Gabriel Heming 766 Denunciar post Postado Dezembro 12, 2012 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
manoaj 12 Denunciar post Postado Dezembro 12, 2012 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
Gabriel Heming 766 Denunciar post Postado Dezembro 12, 2012 é 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
manoaj 12 Denunciar post Postado Dezembro 12, 2012 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
Dellacurtais 36 Denunciar post Postado Dezembro 12, 2012 Gosto de trabalhar com datas em formato timestamp em banco de dados. Compartilhar este post Link para o post Compartilhar em outros sites
angelorubin 142 Denunciar post Postado Dezembro 13, 2012 Boa noite, Talvez você já saiba disso, mas não custa salientar, o tipo DATE no MySQL é armazenado no seguinte formato AAAA-MM-DD. Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Dezembro 13, 2012 sim sim sei alias odeio o formato de data americano kkkkkkkkkkkkkkkk Compartilhar este post Link para o post Compartilhar em outros sites