Jump to content

Archived

This topic is now archived and is closed to further replies.

liviasam

Valor decimal

Recommended Posts

Pessoal, me ajudem aqui que já tentei de tudo e não consegui



No meu MySQL tem um campo com casa decimal para digitar um valor



`nota` decimal(4,2) NOT NULL,



Se eu não gravar nada nele, beleza, o campo fica vazio, porém se por exemplo eu no cadastro digitar qualquer valor e depois vier a limpar esse valor, ele grava 0,00



Qual a forma de quando eu limpar o campo, deixar em branco, ele não gravar valor algum, não quero que ele fique gravando o 0,00.



Já tentei `nota` decimal(4,2) DEFAULT NOT NULL, OU `nota` decimal(4,2) DEFAULT NULL, ou ainda `nota` decimal(4,2) DEFAULT, mas sem resultados.


Share this post


Link to post
Share on other sites

Conforme post #2, pode fazer direto no SQL:

 

ALTER TABLE NomeDaTabela CHANGE nomeDoCampo nomeDoCampo DECIMAL(4,2) NULL;

 

Isso ajustará a coluna da tabela para aceitar valor nulo.

Share this post


Link to post
Share on other sites

Vamos lá,

 

O exemplo do Roberto não resultou em nada, continua gravando o 0.00

 

Já o seu hinom, só não assimilei como implementar na tabela. Ela está como abaixo no exemplo.

 

CREATE TABLE IF NOT EXISTS `notas` (
`id` int(10) NOT NULL,
`nota` decimal(4,2) NOT NULL,

Share this post


Link to post
Share on other sites

''(vazio) não é um valor correto para decimal, provavelmente gerará um erro...

 

Uma solução, se não gosta do 0,00 seria você setar ele para null => preço = null, do contrário, é isso.

Share this post


Link to post
Share on other sites

Bom dia Roger, também não entendi como implementar isso aonde você fala para null => preço = null

 

Ali é um campo de nota, então não seria eu gostar, pois eu posso atribuir uma nota 0.00 a quem a mereceu, porém a quem eu não atribuí nenhuma nota vai ser dado 0.00 também, ficando como essa pessoa tivesse recebido nota zero também. Então não tem critério. Se a pessoa não recebeu uma avaliação, o campo deveria receber o resultado null,

 

No caso se eu não lançar nenhum valor, ele fica padrão null, porém se eu lançar por acidente e depois apagar, ele grava o 0.00, fazendo se entender que foi atribuído uma nota 0.00 como valor.

 

No caso tenho de avaliar esse campo como possíveis lançamentos por acidente ou mesmo caso eu queira retirar uma nota e deixar o campo como vazio. se deixar 0.00 fica como se eu tivesse dado nota zero

Share this post


Link to post
Share on other sites

É como falei, o banco ajusta para 0.00 pois '' não é um valor válido para o campo...

Sempre que você precisar manipular esse campo e deixá-lo "vazio", set ele para null, como falei... Ex.:

UPDATE tabela SET preco = NULL...

*É importante que na criação do campo você tenha configurado para que ele aceite valores nulo

Share this post


Link to post
Share on other sites

É como falei, o banco ajusta para 0.00 pois '' não é um valor válido para o campo...

 

Sempre que você precisar manipular esse campo e deixá-lo "vazio", set ele para null, como falei... Ex.:

UPDATE tabela SET preco = NULL...

*É importante que na criação do campo você tenha configurado para que ele aceite valores nulo

 

Exatamente o que eu falei...

Share this post


Link to post
Share on other sites

bom meninos, vou tentar por aqui a dica de vocês.

 

Pegando carona, sabem como eu consigo somar 4 notas, dividir por 4 e gerar o resultado pelo mysql?

 

Estou projetando um sistema de notas, e quando gero um boletim eu já consegui fazer essa matemática, porém para quem lança visualizar é complicado, pois ele apenas tem os campos do input, então não consegue ver o resultado final, tendo que fazer as contas por fora.

Share this post


Link to post
Share on other sites

"Pegando carona" o quê?

 

Evite estender o tópico com multiplos assuntos pois isso aqui não é suporte técnico, valeu?

 

nada pessoal..

 

Se ainda não entendeu, isso é caracterizado como "tópico camaleão":

 

origem do termo (inglês)

http://meta.stackoverflow.com/questions/43478/exit-strategies-for-chameleon-questions

 

discussão em português:

http://meta.pt.stackoverflow.com/questions/1115/sera-que-esta-e-uma-pergunta-camaleao

Share this post


Link to post
Share on other sites

bom meninos, vou tentar por aqui a dica de vocês.

 

Pegando carona, sabem como eu consigo somar 4 notas, dividir por 4 e gerar o resultado pelo mysql?

 

Estou projetando um sistema de notas, e quando gero um boletim eu já consegui fazer essa matemática, porém para quem lança visualizar é complicado, pois ele apenas tem os campos do input, então não consegue ver o resultado final, tendo que fazer as contas por fora.

Algo assim ...

 

Select aluno,avg(nota) media

From notas

Group by aluno

Share this post


Link to post
Share on other sites

Desculpe hinom, não foi minha intenção.

 

Oi Motta, obrigada, tentei algo assim, até deu certo, mas ele só está listando agora o primeiro cliente. Vou verificar o erro que pode ser. Não vou estender aqui para não haver problemas

Share this post


Link to post
Share on other sites
só está listando agora o primeiro cliente

 

 

Deve haver alguma coisa no WHERE

Share this post


Link to post
Share on other sites

Então mota, eu usei essa lógica

 

<?php

 

$sql = "SELECT * FROM notas WHERE id_aluno=$coluna[id_aluno] AND id_periodo=$col_periodo[id_periodo] AND id_serie=$_SESSION[id_serie] AND id_materia=$_SESSION[id_materia]";

$media = mysql_query($sql);

while($linha=mysql_fetch_array($media))

{

$media = ($linha["n1"] + $linha["n2"] + $linha["n3"] + $linha["n4"])/4;

echo $media;

}

?>

 

Usei essa lógica acima, mas nesse caso por exemplo ele só trás o primeiro aluno da lista. A média está sendo inserida certinha no campo destinado.

Share this post


Link to post
Share on other sites
WHERE id_aluno=$coluna[id_aluno] 

faz com que só pegue o id passado em $coluna[id_aluno]

Share this post


Link to post
Share on other sites

Tá, só tinha esquecido de postar o que traz o valor do banco.

 

<?=@mysql_result(mysql_query("SELECT n1 FROM notas WHERE id_aluno=$coluna[id_aluno] AND id_periodo=$col_periodo[id_periodo] AND id_serie=$_SESSION[id_serie] AND id_materia=$_SESSION[id_materia]"),0,n1)?>

 

No caso o da média não traz valor de banco, por isso não sei o que pode ser

 

Tentei passar só o ID do aluno, mas só volta o resultado de um

 

 

Tentei de tudo mas ele só retorna o resultado de um aluno, se eu retirar a operação para resultado da média volta ao normal e lista todos

Share this post


Link to post
Share on other sites

<?=@mysql_result(mysql_query("SELECT n1 FROM notas WHERE id_periodo=$col_periodo[id_periodo] AND id_serie=$_SESSION[id_serie] AND id_materia=$_SESSION[id_materia]"),0,n1)?>

 

 

Tente

Mas esta sql nao trata a media

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.