joaocasta Posted October 18, 2012 at 05:44 PM Report #479649 Posted October 18, 2012 at 05:44 PM (edited) Boas tardes, vi-me forçado a abrir o tópico pois não consegui resolver o problema sozinho. isto nao ta a resultar como devia pois o resultado que faz update ou insere na bd é o ultimo que eu coloco. <?php include "config.php"; session_start(); if (empty($_SESSION['username'])) { // não existe sessão iniciada // neste caso, levamos o utilizador para a página de login header('Location: login.php'); exit(); } error_reporting (E_ALL ^ E_NOTICE); $error = null; if (!empty($_POST['nova_entrada']) && $_SERVER['REQUEST_METHOD'] == 'POST') { // caso // - exista valores em receita // - não exista valores em despesa // - um referente escolhido if (!empty($_POST['receita']) && empty($_POST['despesa']) && (int)$_POST['referente'] > 0) { // nova receita //guarda os dados em variáveis $receita = ($_POST['receita']); $id_referente = (int)($_POST['referente']); $id_utilizador = (int)$_SESSION['id']; $data = date("Y-m-d H:i:s"); $sql = mysql_query("INSERT INTO receitas_valores (id_utilizador, `receita`, `data`, `id_referente_receita` ) VALUES('$id_utilizador', '$receita', '$data', '$id_referente')") or die(mysql_error()); } // caso // - não exista valores em receita // - exista valores em despesa // - um referente escolhido else if (empty($_POST['receita']) && (!empty($_POST['despesa']))) { // nova despesa //guarda os dados em variáveis $despesa = ($_POST['despesa']); $id_referente = (int)($_POST['selector']); $id_utilizador = (int)$_SESSION['id']; $data = date("Y-m-d H:i:s"); $sql = mysql_query("INSERT INTO despesas_valores (id_utilizador, `despesa`, `data`, `id_referente_despesa` ) VALUES('$id_utilizador', '$despesa', '$data', '$id_referente')") or die(mysql_error()); } else { $error = "ABRE OS OLHOS !!!"; } Header ('Location: contas.php'); } echo $saldoactual = $receita - $despesa; $id_utilizador = (int)$_SESSION['id']; $result = mysql_query("update contas_total set saldo_actual='$saldoactual', data_=now() where id_utilizador='$id_utilizador'"); if (mysql_affected_rows()==0) { $result = mysql_query("insert into contas_total (id_utilizador, saldo_actual, data_) values ('$id_utilizador', '$saldoactual', now());"); } ?> echo $saldoactual = $receita - $despesa; $id_utilizador = (int)$_SESSION['id']; $result = mysql_query("update contas_total set saldo_actual='$saldoactual', data_=now() where id_utilizador='$id_utilizador'"); if (mysql_affected_rows()==0) { $result = mysql_query("insert into contas_total (id_utilizador, saldo_actual, data_) values ('$id_utilizador', '$saldoactual', now());"); } Edited October 18, 2012 at 05:45 PM by joaocasta
brunoais Posted October 25, 2012 at 03:31 PM Report #480425 Posted October 25, 2012 at 03:31 PM Já está resolvido? "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
joaocasta Posted October 25, 2012 at 03:31 PM Author Report #480426 Posted October 25, 2012 at 03:31 PM (edited) Nao, nao está... o valor enviado nao é o correcto.... envia para a bd o ultimo valor que escrevi no form... $query2 = " SELECT SUM(receita) AS receita FROM receitas_valores where id_utilizador ='".$_SESSION['id']."'"; $result2 = mysql_query($query2); while($row = mysql_fetch_array($result2) ) { echo "<tr>"; echo "<td>" .$saldototal = $row['receita']."</td>"; echo "</tr>"; echo "</table>"; } $result = mysql_query("update contas_total set saldo_actual='$saldototal', data_=now() where id_utilizador='$id_utilizador'"); if (mysql_affected_rows()==0) { $result = mysql_query("insert into contas_total (id_utilizador, saldo_actual, data_) values ('$id_utilizador', '$saldototal', now());"); } Edited October 25, 2012 at 03:34 PM by joaocasta
brunoais Posted October 25, 2012 at 03:35 PM Report #480429 Posted October 25, 2012 at 03:35 PM Não faças isso dessa maneira. Uma dica: repara que estás a sobrepor o $saldototal a cada ciclo do while. Como achas que se resolve isso? "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
joaocasta Posted October 25, 2012 at 03:37 PM Author Report #480430 Posted October 25, 2012 at 03:37 PM tirando $saldototal do ciclo?
brunoais Posted October 25, 2012 at 03:48 PM Report #480432 Posted October 25, 2012 at 03:48 PM tirando $saldototal do ciclo? Nope.Pensa melhor. Tu queres fazer o calculo, por isso, o $saldototal não pode ser substituído ou ser decrementado só pode ser incrementado. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
joaocasta Posted October 25, 2012 at 03:55 PM Author Report #480433 Posted October 25, 2012 at 03:55 PM Estás a dizer que nao posso mudar o valor de $saldototal?
pikax Posted October 25, 2012 at 03:57 PM Report #480434 Posted October 25, 2012 at 03:57 PM Estás a dizer que nao posso mudar o valor de $saldototal? podes, mas acho o que queres e' fazer um calculo, que devera' ser saldototal + receita Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
joaocasta Posted October 25, 2012 at 04:02 PM Author Report #480436 Posted October 25, 2012 at 04:02 PM (edited) $query = " SELECT saldo_actual FROM contas_total WHERE id_utilizador = '".$_SESSION['id']."'"; $query2 = " SELECT SUM(receita) AS receita FROM receitas_valores where id_utilizador ='".$_SESSION['id']."'"; $result = mysql_query($query); $result2 = mysql_query($query2); while ($row = mysql_fetch_array($result) ) { while($row = mysql_fetch_array($result2) ) { echo "<tr>"; echo "<td>" . $saldototal = $row['saldo_actual'] + $row['receita']."</td>"; echo "</tr>"; echo "</table>"; } } $result = mysql_query("update contas_total set saldo_actual='$saldototal', data_=now() where id_utilizador='$id_utilizador'"); if (mysql_affected_rows()==0) { $result = mysql_query("insert into contas_total (id_utilizador, saldo_actual, data_) values ('$id_utilizador', '$saldototal', now());"); } assim? ja tive o codigo assim e nao deu. Edited October 25, 2012 at 04:04 PM by joaocasta
pikax Posted October 25, 2012 at 04:16 PM Report #480440 Posted October 25, 2012 at 04:16 PM saldototal = saldototal + receita !!! Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
joaocasta Posted October 25, 2012 at 04:27 PM Author Report #480443 Posted October 25, 2012 at 04:27 PM acho que ja estou a conseguir mas tinha uma cena a mais por baixo que nao tinha visto e tava a lixar o resto do codigo. Mas ainda assim acho que devia colocar um if/else... como faço para se nao houver linhas/dados, como faço isso no if?
taviroquai Posted October 25, 2012 at 04:42 PM Report #480446 Posted October 25, 2012 at 04:42 PM (edited) @joao Só interessa isto: while ($row = mysql_fetch_array($result) ) { $saldototal = $row['saldo_actual'] + $row['receita']; } Por vezes misturar apresentação com a lógica faz aparecer mais problemas de coisas simples! Primeiro fazes os cálculos, depois metes na apresentação misturando com HTML. Edited October 25, 2012 at 04:43 PM by taviroquai
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now