Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

08-05-2014 19:36

PessoALL,

Estou desenvolvendo uma aplicação pessoal de finanças escrita em PHP, fiquei preso no cadastro de saldos referente a conta corrente, conta poupança. Seguinte, utilizei uma lista de opções, voce digita o valor, e em seguida escolhe se aquele valor é pra conta corrente ou poupança, se escolher a conta poupança por exemplo, o valor vai para o banco tranquilo, o problema é que junto dele vai o valor da conta corrente também e acaba que o antigo valor da conta corrente fica zerado, já que utilizo um comando só para dar um update no banco. Como eu poderia tratar essa exceção no PHP?, para que em caso de uma variavel para conta corrente estiver NULL, esse valor nao seja gravado no banco junto com a variavel da conta poupança e vice-versa?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Tratamento de exceções no PHP

08-05-2014 21:29

Seu banco de dados tem uma coluna tipo e outra valor?

tipo = poupança ou conta-corrente
valor = ....
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

08-05-2014 21:34

A Tabela está deste jeito.

mysql> select * from bancos;
+----+-----------+---------+---------+---------+
| id | nome | saldoCP | saldoCR | saldoCC |
+----+-----------+---------+---------+---------+
| 1 | banco1 | 66.08 | 0 | 334 |
| 4 | banco2 | 66.08 | 0 | 334 |
+----+-----------+---------+---------+---------+
2 rows in set (0.04 sec)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Tratamento de exceções no PHP

08-05-2014 21:44

O INSERT como está?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

08-05-2014 21:51

O insert ainda não fiz, por que primeiro testei a consulta de valores ja existente no banco. Então levando em conta que já existem valores, comecei pelo UPDATE.
0
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

08-05-2014 21:56

O UPDATE está assim:

mysql_query("UPDATE bancos SET saldoCC='$saldoCC',saldoCP='$saldoCP',saldoCR='$saldoCR' WHERE nome='$banco")

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Tratamento de exceções no PHP

08-05-2014 22:13

Está faltando uma aspa simples após $banco

mysql_query("UPDATE bancos SET saldoCC='$saldoCC',saldoCP='$saldoCP',saldoCR='$saldoCR' WHERE nome='$banco'");

Suponho que você passa os dados para serem gravados por POST. Mas testa esse exemplo com GET para entender.

Cria um arquivo chamado teste.php, coloca o conteúdo abaixo, depois chama ele assim:

teste.php?saldoCC=200&saldoCP=100

$v = Array(); if(isset($_GET['saldoCC'])!="") { $v[] = "saldoCC='".$_GET['saldoCC']."'"; } if(isset($_GET['saldoCP'])!="") { $v[] = "saldoCP='".$_GET['saldoCP']."'"; } $valores = implode(",", $v); echo "UPDATE bancos SET $valores WHERE nome='banco tal'"; mysql_query("UPDATE bancos SET $valores WHERE nome='banco tal'");

Você vai observar, que quando a variável é passada "definida no if", o valor é adicionado para a consulta.

Depois de testar, é só mudar o $_GET por $_POST se é o que você está usando. Tirar o echo, e deixar somente o mysql_query.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

08-05-2014 22:27

Trocar todos os $_GET por $_POST ou especificos?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Tratamento de exceções no PHP

08-05-2014 22:31

Se você envia os dados do formulário pelo method POST, troca por $_POST.

Esse exemplo funciona da seguinte forma, vamos supor que você tenha esse input

<input type="text" name="saldoCC" value="">

Se você enviar esse campo vazio, não vai entrar em

if(isset($_POST['saldoCC'])!="") { $v[] = "saldoCC='".$_POST['saldoCC']."'"; } 

Consequentemente essa coluna não terá seu valor atualizado.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

08-05-2014 23:15

Ahh, nunca tinha entendido direito como funcionava o metodo GET, agora esse exemplo "clareou" a mente. Pra funcionar adaptei ele assim:

//Desabilitei as quatro variaveis abaixo para que seu script funcionasse //    $nome = $_POST["nome"]; //    $saldoCC = $_POST["saldoCC"]; //    $saldoCP = $_POST["saldoCP"]; //    $saldoCR = $_POST["saldoCR"];          $valor = Array(); //Criei um novo array chamado instituição para que o nome do banco fosse junto com a consulta no mysql_query     $instituicao = Array();          if(isset($_POST['saldoCC'])!="") {     $valor[] = "saldoCC='".$_POST['saldoCC']."'";     }          if(isset($_POST['saldoCP'])!="") {     $valor[] = "saldoCP='".$_POST['saldoCP']."'";     }          if(isset($_POST['saldoCR'])!="") {     $valor[] = "saldoCR='".$_POST['saldoCR']."'";     } //vendo como funciona o seu script, criei um novo IF para o nome da instituiçao         if(isset($_POST['nome'])!="") {     $instituicao[] = "nome='".$_POST['nome']."'";     }          $valores = implode(",", $valor);     $instituicao = implode("", $instituicao);     echo "UPDATE bancos SET $valores WHERE $instituicao";

O retorno do ECHO é este:
UPDATE bancos SET saldoCC='22',saldoCP='13',saldoCR='13' WHERE nome='banco1'


Valeu pela ajuda, Kleber. Agora me "desprendi" deste empecilho
:rock:
0
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

08-05-2014 23:38

Cara, esqueci de testar com somente um valor para saldoCR e BANG!!. Os outros dois zeraram no banco. kkk

Removi o mysql_query e troquei pelo comando echo e o retorno vem:
UPDATE bancos SET saldoCC='',saldoCP='',saldoCR='5' WHERE nome='banco1'

, ou seja saldoCC e saldoCP foram junto vazios e assim ficaram no banco:

+----+-----------+---------+---------+---------+
| id | nome | saldoCP | saldoCR | saldoCC |
+----+-----------+---------+---------+---------+
| 1 | banco1 | 0 | 5 | 0 |
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Tratamento de exceções no PHP

09-05-2014 08:16

Realmente. Se passar um campo vazio saldoCC='' vai ficar zerado no bd.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

09-05-2014 14:36

Resolvi. Na verdade é uma gambiarra, mas funcionou. Durante as verificações de condição(se foi inserido números e não letras, se o nome do banco existe no BD) eu pego no banco os valores que foram deixados em branco pelo usuario, e atualizo o bd com os mesmos valores(reutilizando as variaveis em desuso), se um dos campos tiver digito do usuario, todos os campos são atualizados.

if (empty($saldoCC)) {         $saldo="SELECT saldoCC from bancos where nome='$nome'";         $resultadoSaldo=mysql_query($saldo);         $saldo=mysql_fetch_array($resultadoSaldo);         $saldoCC=$saldo['saldoCC'];     }      if (empty($saldoCP)){     $saldo="SELECT saldoCP from bancos where nome='$nome'";         $resultadoSaldo=mysql_query($saldo);         $saldo=mysql_fetch_array($resultadoSaldo);         $saldoCP=$saldo['saldoCP'];     }          if (empty($saldoCR)){         $saldo="SELECT saldoCR from bancos where nome='$nome'";         $resultadoSaldo=mysql_query($saldo);         $saldo=mysql_fetch_array($resultadoSaldo);         $saldoCR=$saldo['saldoCR'];     }

E ai faço o
mysql_query("UPDATE bancos SET saldoCC='$saldoCC', saldoCP='$saldoCP', saldoCR='$saldoCR' where nome='$nome'");

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Tratamento de exceções no PHP

09-05-2014 16:42

Boa.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 166
Nome: Bruno Bandeira
Sexo: Masculino
Contato:

Tratamento de exceções no PHP

09-05-2014 18:03

Tente ao máximo otimizar seu código. Tem algumas replicações ai!
Mas se conseguiu por hora resolver, ta tudo certo ;)
0
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

09-05-2014 18:10

Voce se refere ao uso da mesma variavel $saldo, em cada condição?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Tratamento de exceções no PHP

09-05-2014 20:07

Creio que o brunoban está falando de repetir as mesmas linhas. Se você observar seu código, vai ver que repete o mesmo bloco praticamente 3 vezes, só mudando o nome da coluna. Se você fizer o seguinte:

$tabela = ""; if (empty($saldoCC)) { $tabela = "saldoCC";     }     if (empty($saldoCP)){ $tabela = "saldoCP";     }     if (empty($saldoCR)){ $tabela = "saldoCR";     }

Você tem uma variável que irá mudar de acordo com o campo vazio.

Seguindo essa mesma lógica, você pode ter uma consulta assim

$cons1 = mysql_query("SELECT $tabela, nome from bancos where nome='$nome'"); echo mysql_result($cons1 , 0, "$tabela");

Essa consulta acima é baseada no valor de $tabela, que será gerado acima, e irá retornar a primeira linha da consulta através do echo.

Deve-se sempre procurar otimizar o código.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 10
Sexo: Masculino

Tratamento de exceções no PHP

09-05-2014 20:52

Entendi, mas isso funcionaria pra um UPDATE sem anular no BD os campos que foram deixados vazios pelo usuário?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Tratamento de exceções no PHP

09-05-2014 21:01

O ideal seria você seguir aquele exemplo que eu passei, onde vai adicionando as colunas de acordo com a necessidade.

UPDATE bancos SET saldoCC='22',saldoCP='13',saldoCR='13' WHERE nome='banco1' 

No caso do UPDATE, dependendo da lógica do código você pode definir o nome da coluna e valor do UPDATE.

Se esse exemplo que postei acima funcionou ai, vai seguir quase a mesma regra. Só que no caso, você vai alimentar a tabela e valor do UPDATE. Exemplo:

$coluna = ""; $valor = ""; if (empty($saldoCC)) { $coluna = "saldoCC"; $valor = "1";     }     if (empty($saldoCP)){ $coluna = "saldoCP"; $valor = "2";     }     if (empty($saldoCR)){ $coluna = "saldoCR"; $valor = "3";     }      mysql_query("UPDATE bancos SET $coluna='$valor' WHERE nome='banco1'"); 

É só um exemplo mostrando como pode fazer o código ficar mais dinâmico.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 166
Nome: Bruno Bandeira
Sexo: Masculino
Contato:

Tratamento de exceções no PHP

12-05-2014 09:54

É isso mesmo WEB ;)
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado