Jump to content
Sign in to follow this  
rjsma

Incrementar 1 valor na bd e esconder o botao

Recommended Posts

rjsma

Boas,

Estou tento problemas em mudar o name e o value de um submit. O meu objectivo é o utilizador da sessão clicar num botão e ao clicar no botao incrementar 1 valor ao valor do campo popular na bd.Cada utilizador só pode clicar 1 vez no botao em cada link. Depois de clicar 1 vez no botao o botao esconde-se. O que eu quero é +/- do genero ao curtir/gosto do facebook.

Já consegui incrementar o valor na bd, inserir na bd o id que o utilizador clicou agora estou a ter mesmo dificuldade é a esconder o botao do utilizador.


<input id='popular' type='submit' name=";?>
  <?php
  	if($numpopular==0) {
  		//esconde o butao ao utilizador
	}
	else{ 
		echo'popular';
		echo 'value=Popular';
		}
  ?> <?php echo "/>

Por sim por não fica aqui o codigo completo.


$busca = mysql_query("Select * from favoritos where id = '$id_url'");
$utilizador_online= $_SESSION["utilizador"];
$popular = mysql_query("Select * from popular where id = '$id_url' and utilizador_favorito='$utilizador_online'");
$numpopular= mysql_num_rows($popular);

while($detalhes=mysql_fetch_array($busca)){

  echo "
  <form name='popular' method='post' action='comentarios.php?link=$id_url'>
      <input id='popular' type='submit' name=";?>
  <?php
  	if($numpopular==0) {
  		//esconde o butao ao utilizador
	}
	else{ 
		echo'popular';
		echo 'value=Popular';
		}
  ?> <?php echo "/>
      </form>
  <table class='lista'>
  <tr>
  <td><br>".$detalhes['utilizador']."</td>
  </tr>
  <tr>
    <td><img src=".$detalhes['favicon']."/>  " .$detalhes['nome'] . " </td>
      <td rowspan=3 align=center valign=middle><a href=".$detalhes['url'] ." target='blank'/><input type='submit' name='submit' value='Abrir'/></a></td></tr>
  <tr>
    <td>Categoria: " . $detalhes['categoria'] . "</td>
      </tr>
  <tr>
    <td>Descrição: " . $detalhes['descricao'] . "<br><br><br></td>
      </tr>
   <tr>
    <td>Data: " . $detalhes['data'] . "<br><br><br></td>
      </tr>
      </table>";


}




// Verifica se o form foi submetido (se a pagina foi acessada em metodo post) ja que nao é possivel validar o valor que nao vem do form
if (isSet($_POST['popular'])){

$utilizador_online= $_SESSION["utilizador"];

   // SQL pra atualizar o valor do campo na tabela
     $SQL = mysql_query('UPDATE favoritos SET popular = popular + 1 WHERE id = '.$id_url);
				   
 $Inserir = mysql_query("Insert into popular(id, utilizador_favorito) Values ('$id_url','$utilizador_online')");		   

}				   
   
if (isSet($_POST['nao_popular'])){
   
    echo "Gostastes deste link.";
   
   }

?>

Cumprimentos

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Tens que verificar se o utilizador já votou nessa "foto" e consoante isso, mostrar ou não o botão.

Share this post


Link to post
Share on other sites
rjsma

Se veres bem no meu codigo já tenho isso. Só a parte de verificar e que esta a falhar.


<input id='popular' type='submit' name=";?>
          <?php
                if($numpopular==0) {
                       echo 'nao_popular';
		echo 'value=Não Popular';

                }
                else{
                        echo'popular';
                        echo 'value=Popular';
                        }
          ?> <?php echo "/>

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Desculpa, nem sequer tinha olhado para o código, respondi com base na tua dúvida.

Se já conseguiste incrementar o valor na BD, então o teu problema esta na consulta.

Share this post


Link to post
Share on other sites
rjsma

Penso que não porque o botão aparece enviar dados, deve ser um valor defeito caso não seja escrito um value no submit. Acho que é aqui:


<input id='popular' type='submit' name=";?>
          <?php
                if($numpopular==0) {
                       echo 'nao_popular';
                        echo 'value=Não Popular';
                
                }
                else{
                        echo'popular';
                        echo 'value=Popular';
                        }
          ?> <?php echo "/>

Consoante o name do submit executa o seguinte codigo:


if (isSet($_POST['popular'])){

$utilizador_online= $_SESSION["utilizador"];

   // SQL pra atualizar o valor do campo na tabela
     $SQL = mysql_query('UPDATE favoritos SET popular = popular + 1 WHERE id = '.$id_url);
                                           
         $Inserir = mysql_query("Insert into popular(id, utilizador_favorito) Values ('$id_url','$utilizador_online')");                   
        
        }                                  
   
if (isSet($_POST['nao_popular'])){
   
    echo "Gostastes deste link.";
   
   }
        
        ?>

A query está aqui mas penso que não é disso mas sim não estar a definir o name ao submit.


$utilizador_online= $_SESSION["utilizador"];
$popular = mysql_query("Select * from popular where id = '$id_url' and utilizador_favorito='$utilizador_online'");
$numpopular= mysql_num_rows($popular);

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Isso vai para ai uma trapalhada, nossa senhora de Fátima !

Sim, se não definires o valor "value" de um botão do tipo "submit", ele assume esse valor automaticamente.

Em vez do que tens devias ter algo como:

<?php

if ( ! $numpopular ) {

echo '<input id="popular" type="submit" name="popular" value="Popular !" />';

} else {

echo '<input id="popular" type="submit" name="nao_popular" value="Não popular !" />';

}

?>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.