Ir para conteúdo

Arquivado

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

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.


Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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,

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites
só está listando agora o primeiro cliente

 

 

Deve haver alguma coisa no WHERE

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
WHERE id_aluno=$coluna[id_aluno] 

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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

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.