Vinnaren i pepparkakshustävlingen!
2020-06-20, 12:28
  #1
Medlem
Hej, jag håller på att pilla med en personlig ekonomisida, bara för att det är kul och för att lära mig lite.

Men har en fundering. Om ni kollar på denna bilden så ser ni vad jag har nu och vil fortsätta ha:
https://i.imgur.com/ur7xdXs.png

Varje stapel visar Utgifter/spar/kvar.

Så här ser min mysqldatabas ut:
https://i.imgur.com/BGrxmlO.png

Står det en 1a på en månad så betyder det att den räkningen kommer den månaden. Kom på efteråt att man kanske helt enkelt skulle ha skrivit i summa för varje räkning på respektive månad, då hade man kunnat ha olika summor på samma räkning beroende på månad, men men.

Hur som helst, när jag ska skapa det stapeldiagramet som syns på bild 1 så använder jag mig av liknande kod för VARJE månad:

Kod:
<?
                $sparmanaddec 
0;
                
$query611 "SELECT * FROM RAKNINGAR WHERE DECEMBER = 1 AND SPAR = 1";   //Hämta spar för specifik månad

                
$result611 $conn->query($query611);

                while(
$row611 $result611->fetch_assoc())

                {

                    
$spardec $row611["SUMMA"];

                    
$sparmanaddec $sparmanaddec $spardec;

                    
$spar $sparmanaddec $efterskatt;

                    
$sparpro $spar 100;

                    
$sparpro round($sparpro0);

                }

                
$query61 "SELECT * FROM RAKNINGAR WHERE DECEMBER = '1' AND SPAR = 0";   //Hämta total för en specifik månad

                
$result61 $conn->query($query61);

                while(
$row61 $result61->fetch_assoc())

                {

                    
$summadec $row61['SUMMA'];

                    
$totaldec $totaldec $summadec;

                    
$prodec $totaldec $efterskatt;

                    
$prodec $prodec 100;

                    
$prodec round($prodec2);

                    
$kvardec $efterskatt $totaldec;

                    
$kvardec $kvardec $sparmanaddec;

                    
$kvardec round($kvardec0);

                    
$prokvardec $kvardec $efterskatt;

                    
$prokvardec $prokvardec 100;

                    
$prokvardec round($prokvardec2);




                }

                echo 
"<div class='manadkvar' style='height:$prokvardec%;'>$kvardec</div>";
                echo 
"<div class='manadspar' style='height:$sparpro%;'>$sparmanaddec</div>";
                echo 
"<div class='manadut' style='height:$prodec%;'>$totaldec</div>";

            
?>

Det känns som det blir onödigt många sökningar i databasen. Bör jag inte kunna lösa detta med en for each loop? Kollade på lite guider på nätet inatt men blev inte riktigt klok ändå.

Detta har jag skrivit än så länge:

Kod:
<?php

$dsn 
'mysql:hosy=*;dbname=*';
$username '*';
$password '*';

try{
    
// connect to mysql
    
$con = new PDO($dsn,$username,$password);
    
$con->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
} catch (
Exception $ex) {
    echo 
'Not Connected '.$ex->getMessage();
}
// mysql select query
$stmt $con->prepare('SELECT * FROM RAKNINGAR WHERE NOVEMBER = 1 AND SPAR = 0');
$stmt->execute();
$users $stmt->fetchAll();
$total 0;
foreach (
$users as $user)
{
    
$total += $user['SUMMA'];
}
echo 
$total;
?>

Med denna kod får jag fram totala utgifter för november. Men hur fasiken går jag tillväga för att kolla varje månad med en kod? Det ska väl inte behövas en sådanhär kod för varje månad? Är det kanske i mysqlqueryn som man löser detta?

Tacksam för svar om det så bara är till en relevant guide.
Citera
2020-06-20, 13:17
  #2
Medlem
Callebiltes avatar
Hej,
är du säker på att du har rätt databasstruktur?

Ser lite knepigt ut med massa månader där du bara har 1 eller ofylld som data?

Kanske bättre att göra en typ

månad värde transaktion

databas och använda tex månad som index

När den fylls i blir det t ex
månad värde transaktion
Jan 500 spar
Jan 1400 Uttag
Feb 700 insättning
Jan 200 Spar
Mar 344 Uttag
Jan 976 Insättning


Typ något sådant. Sen kan du ta fram data where månad = Jan & transaktion = spar

typ något sådant?

edit: https://www.devnetwork.net/ mkt bra php forum
__________________
Senast redigerad av Callebilte 2020-06-20 kl. 13:20.
Citera
2020-06-20, 13:29
  #3
Medlem
Citat:
Ursprungligen postat av Callebilte
Hej,
är du säker på att du har rätt databasstruktur?

Ser lite knepigt ut med massa månader där du bara har 1 eller ofylld som data?

Kanske bättre att göra en typ

månad värde transaktion

databas och använda tex månad som index

När den fylls i blir det t ex
månad värde transaktion
Jan 500 spar
Jan 1400 Uttag
Feb 700 insättning
Jan 200 Spar
Mar 344 Uttag
Jan 976 Insättning


Typ något sådant. Sen kan du ta fram data where månad = Jan & transaktion = spar

typ något sådant?

edit: https://www.devnetwork.net/ mkt bra php forum

Ja som jag skrev så har jag kommit fram till att databasen inte är optimalt utformad. Tanken var bara att jag skulle få lit eöverblick över vart våra pengar gick, typ en tom sida med lite text på bara. men det utvecklade sig och nu vill jag lägga till mer funktioner :P

Tack för länken!
Citera
2020-07-10, 11:17
  #4
Medlem
"Detta har jag skrivit sålänge"

Du menar du kopierat och klistrat lite utan att förstå en enda rad av det? Sen så står det "hosy" istället för "host".

Din kod har så många fel och onödiga komplikationer så jag vet inte ens var jag ska börja någonstans. Hur mycket av koden har du skrivit själv egentligen?

Är ändå förvånad att du lyckats hitta en PDO-query. Men du fullständigt skiter i att prepare:a dina statements? Jag tror det bästa för dig är att sätta dig ner och förstå koden istället. Du är inte klar när du får det att funka. Du är klar när det är rätt.

Att ge dig färdig kod här kommer inte hjälpa dig förstå någonting.
__________________
Senast redigerad av Hampost 2020-07-10 kl. 11:22.
Citera
2020-07-10, 13:12
  #5
Medlem
NaZdravis avatar
Citat:
Ursprungligen postat av Hampost
"Detta har jag skrivit sålänge"

Du menar du kopierat och klistrat lite utan att förstå en enda rad av det? Sen så står det "hosy" istället för "host".

Din kod har så många fel och onödiga komplikationer så jag vet inte ens var jag ska börja någonstans. Hur mycket av koden har du skrivit själv egentligen?

Är ändå förvånad att du lyckats hitta en PDO-query. Men du fullständigt skiter i att prepare:a dina statements? Jag tror det bästa för dig är att sätta dig ner och förstå koden istället. Du är inte klar när du får det att funka. Du är klar när det är rätt.

Att ge dig färdig kod här kommer inte hjälpa dig förstå någonting.
Påminner om när jag var typ 11-12 bast och försökte bygga ett community med ASP/MS Access
Ställde konstant frågor på ett asp-forum och de tröttnade såklart fort.

Har insett att det viktigaste är att förstå kod snarare än att memorera hur man skriver den, i alla fall som nybörjare.
Jag gillar PHP men kan förstå att många ogillar det lite, men det är nog mest för att det är så svagt typat och tillåtande så de flesta klarar att sätta ihop ett script, dock ser det ofta för jävligt ut och alltid procedural.

Väldigt stor skillnad när man lärt sig skriva OOP-style.

Att hämta en specifik månad gör man ju genom att se till så att query'n helt enkelt hämtar den månad som avses, kan hämtas via GET t ex.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback