Ir para conteúdo

POWERED BY:

Arquivado

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

Bernaz

Só inserir dados em uma tabela se não tiver inserido ainda

Recommended Posts

Eu estou terminando um site e preciso de uma ajuda:

 

1- Tenho um site de um jogo de apostas.

2- Se você quiser jogar precisa ser cadastrado.

3- Para enviar sua aposta para o site, você cria sua conta e envia.

4- Se você enviar sua aposta para uma rodada, terá de esperar a próxima rodada para enviar outra aposta.

 

--------------------

É no passo nº 4 que não estou sabendo fazer.

 

Eu fiz assim:

 

(tem uma tabela chamada "apostas")

$confere = Confere se na tabela "apostas" da atual rodada já tem seu nick;
se $confere estiver vazio
{
Pode enviar;
}
se não
{
"Você já enviou suas apostas"
}

Mas isso não está dando certo,

 

COMO EU FAÇO PARA O MYSQL SÓ ENVIAR DADOS A UMA TABELA, SE O JOGADOR QUE ESTÁ ENVIANDO, AINDA NÃO ENVIOU ?

 

Deu pra entender o que eu estou dizendo?

Se quiserem eu envio o código.

 

OBRIGADO

Compartilhar este post


Link para o post
Compartilhar em outros sites

você faz o select e verifica o numero de linhas

se for 0 você insere

 

sql = "select * from tabela";
$exe = mysql_query($sql);

$num_linhas = mysql_num_rows($exe);

if($exe == 0)
{

   // INSERT

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

$exe = mysql_query("select * from tabela");
$num_linhas = mysql_num_rows($exe);
if($exe == 0){
   // INSERT
}

Dee nem dá certo fazer isso no meu caso, por que quando termina uma rodada e começa outra, a tabela não é resetada, os dados da rodada anterior continuam nela, pra mais tarde poder fazermos buscas de rodadas anteriores, entende.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que por uma condição no WHERE para resolver isso.

 

Já botei o WHERE...

 

OLHA COMO ESTÁ:

 

 

	$sql=mysql_query("SELECT player FROM apostas WHERE player=\"".$player."\" AND rodada=".$rodada.";");
	if (!$sql)
	{
		// INSERT
	}
	else
	{
		echo "Você já enviou suas apostas para esta rodada.";
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a tabela de aposta for algo assim

 

aposta

------

cod_aposta n(6) pk

cod_usuario n(6) pk

data_aposta

....

 

O Usuário só poderá fazer uma aposta por vez caso contrário dará

um erro de DUPLICATE KEY.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela é assim:

 

 

+--------+--------+-------+------------+-------+-------+-------+-------+
| player | rodada | hora  | dia        | time1 | time2 | time3 | time4 |
+--------+--------+-------+------------+-------+-------+-------+-------+
| Joao   |      1 | 12:49 | 04/10/2009 |    16 |     4 |     7 |     0 |
+--------+--------+-------+------------+-------+-------+-------+-------+
| Bernaz |      2 | 15:11 | 05/10/2009 |     3 |     0 |    10 |     7 |
+--------+--------+-------+------------+-------+-------+-------+-------+
| Jose   |      2 | 17:36 | 05/10/2009 |     5 |     1 |     9 |     5 |
+--------+--------+-------+------------+-------+-------+-------+-------+

SE NÓS AINDA ESTIVERMOS NA SEGUNDA RODADA, NEM O BERNAZ NEM O JOSE PODERÃO ENVIAR SUAS APOSTAS, POIS ELES JÁ ENVIARAM, MAS O JOAO PODE, PORQUE NA RODADA 2 ELE AINDA NÃO ENVIOU, ENTENDERAM ?

 

$sql=mysql_query("SELECT player FROM apostas WHERE player=\"".$player."\" AND rodada=".$rodada.";");
        if (!$sql)
        {
                // INSERT
        }
        else
        {
                echo "Você já enviou suas apostas para esta rodada.";
        }

Mas esse código acima não dá certo, acho que é ero de sintaxe.

Alguém tem alguma sugestão ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela é assim:

 

 

+--------+--------+-------+------------+-------+-------+-------+-------+
| player | rodada | hora  | dia        | time1 | time2 | time3 | time4 |
+--------+--------+-------+------------+-------+-------+-------+-------+
| Joao   |      1 | 12:49 | 04/10/2009 |    16 |     4 |     7 |     0 |
+--------+--------+-------+------------+-------+-------+-------+-------+
| Bernaz |      2 | 15:11 | 05/10/2009 |     3 |     0 |    10 |     7 |
+--------+--------+-------+------------+-------+-------+-------+-------+
| Jose   |      2 | 17:36 | 05/10/2009 |     5 |     1 |     9 |     5 |
+--------+--------+-------+------------+-------+-------+-------+-------+

SE NÓS AINDA ESTIVERMOS NA SEGUNDA RODADA, NEM O BERNAZ NEM O JOSE PODERÃO ENVIAR SUAS APOSTAS, POIS ELES JÁ ENVIARAM, MAS O JOAO PODE, PORQUE NA RODADA 2 ELE AINDA NÃO ENVIOU, ENTENDERAM ?

 

$sql=mysql_query("SELECT player FROM apostas WHERE player=\"".$player."\" AND rodada=".$rodada.";");
        if (!$sql)
        {
                // INSERT
        }
        else
        {
                echo "Você já enviou suas apostas para esta rodada.";
        }

Mas esse código acima não dá certo, acho que é ero de sintaxe.

Alguém tem alguma sugestão ?

 

Essa não é a maneira apropriada para verificar se houveram ou não registros obtidos com a query. Está apenas checando se houve erro ao executar a mysql_query().

 

Use http://www.php.net/mysql_num_rows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque isto

      $sql=mysql_query("SELECT player FROM apostas WHERE player=\"".$player."\" AND rodada=".$rodada.";");
        if (!$sql)
        {
                // INSERT
        }
        else
        {
                echo "Você já enviou suas apostas para esta rodada.";
        }

por isto.

 

$sql = "SELECT player FROM apostas WHERE player= '$player' AND rodada= '$rodada'";
$exe = mysql_query($sql);
$linhas = mysql_num_rows($exe);
		
if($linhas == 0)
{
   // Faz o Insert
}
else
{
   // Ja possui
}

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.