[PHP] Een var weergeven, die later wordt berekend

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Dit zal best een newbie vraag zijn, maar ik kan er niets over vinden.


Ik wil een tabel weergeven, natuurlijk dmv mysql. Eerst maak ik de kopjes van de tabel, door een <table> te starten, wat rijen te maken, enz. Nu wil ik in die rij de som weergeven van een aantal getallen die daaronder worden weergegeven later, dmv een while functie.

In die while functie gaat het zo:
$prijs_totaal = $disp_tabel[prijs] + $prijs_totaal;

Dus uiteindelijk, na het afwerken van de rest in de while, is prijs_totaal de totale prijs. Maar aangezien ik deze variabele eerder laat echo-en, wordt deze niet weergegeven.

Iemand een idee hoe ik dit kan oplossen, buiten het idee om om het totaal onderaan weer te laten geven?

Het enige wat me zo tebinnen schiet is om al de output van de while (is een aardig lang stukje tekst voor de kolommen) steeds aan een variabele toe te voegen, en deze achteraf op te roepen, tegelijk met het bovenste stuk van de tabel.

Mijn dank is groot, net als altijd _/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

mogelijkheid 1:
eerst alle berekeningen uitvoeren, dan pas output genereren

mogelijkheid 2:
output bufferen, tussendoor berekenen, output buffere stoppen, uitkomst printen, output buffer printen

Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Dat bufferen gaat met variables waar ik alles in stop? Hoe doe ik dat het handigste? Gewoon ipv steeds een echo, het aan een variabele laten toevoegen op de een of andere manier (....)

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
pierre-oord schreef op 11 juni 2004 @ 23:27:
Dat bufferen gaat met variables waar ik alles in stop? Hoe doe ik dat het handigste? Gewoon ipv steeds een echo, het aan een variabele laten toevoegen op de een of andere manier (....)
Het kan door op de manier die jij nu zegt ;) ($output.=data).

Verder kun je ook gebruik maken van de outputbuffer van php. (Zoek maar op ob_start op php.net. Kom je wel wat tegen ;)).

Ergens vind ik de eerste manier (die jij ook al in de TS aangaf) het beste.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Leg eens uit waarom het is dat je niet onder je berekening pas echot? Ik zie het probleem niet? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

NMe84 schreef op 11 juni 2004 @ 23:40:
Leg eens uit waarom het is dat je niet onder je berekening pas echot? Ik zie het probleem niet? :?
Wat boeit dat in dit geval? Ik kan me best situaties voorstellen waarin je eerst ergens een totaalprijs noemt en pas later een overzicht laat zien.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 11 juni 2004 @ 23:43:
[...]

Wat boeit dat in dit geval? Ik kan me best situaties voorstellen waarin je eerst ergens een totaalprijs noemt en pas later een overzicht laat zien.
Hmm, had niet goed gelezen geloof ik. :)

Nog een andere optie zou trouwens zijn om templates te gebruiken voor je applicatie, maar ik kan me voorstellen dat dat wat veel werk is om in te bouwen als het er nog niet in zit. :Y)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 18-09 10:13

glashio

C64 > AMIGA > PC

PHP:
1
2
3
$disp_tabel = Array('1.55','2.35','3.35');

$prijs_totaal=array_sum($disp_tabel)

array_sum();
offtopic:
NMe84 Signature in het NL :
"Mijn richtlijn moet het zo eenvoudig maken dat iedereen in het gebouw het kan begrijpen. Ik hoop dat hij niet met inbegrip van het veiligheidspersoneel in die verklaring aangezien ik niet onze output van de laserprintersopbrengst in kleurpotlood denk."

Afbeeldingslocatie: http://us.i1.yimg.com/us.yimg.com/i/us/av/i/bf/fish-right.gif Babel Fish Translation

edit:
Correctie Comma vervangen met Punt

[ Voor 11% gewijzigd door glashio op 12-06-2004 00:46 . Reden: TYPO ]

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

glashio schreef op 12 juni 2004 @ 00:20:
PHP:
1
2
3
$disp_tabel = Array('1,55','2,35','3,35');

$prijs_totaal=array_sum($disp_tabel)

array_sum();
Wat wil je daarmee zeggen? Dat berekenen zal hoe dan ook voor het outputten moeten, en het outputten van de totalen gebeurt nu voordat de table getoond wordt/de array gecreëerd. Dus ik snap niet helemaal wat je toe probeert te voegen. ;)
glashio schreef op 12 juni 2004 @ 00:20:
offtopic:
NMe84 Signature in het NL :
"Mijn richtlijn moet het zo eenvoudig maken dat iedereen in het gebouw het kan begrijpen. Ik hoop dat hij niet met inbegrip van het veiligheidspersoneel in die verklaring aangezien ik niet onze output van de laserprintersopbrengst in kleurpotlood denk."

[afbeelding] Babel Fish Translation
offtopic:
Das een quote uit The Bastard Operator From Hell. (Pas op, verslavend!) Die quote betekent zoiets als "Ik moet het van mijn baas zo simpel maken dat iedereen in het bedrijf het begrijpt, maar dat kan nog wel eens een probleem worden als ie de afdeling beveiliging meetelt. De laserprinter kan volgens mij geen waskrijt outputten."

[ Voor 6% gewijzigd door NMe op 12-06-2004 00:34 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 15:15
hoewel niet mijn favo-oplossingen toch even naast mog. 1 & 2 zetten:

Mogelijkheid 3:
boven de tabel een (lege) div plaatsen en deze onder de tabel vullen m.b.v. javascript
-of-
onder de tabel een div plaatsen en deze boven de tabel positioneren

deze oplossing kan voor de webserver vriendelijker zijn, op de client zul je helaas merken dat het totaal later verschijnt

mogelijkheid 4:
een extra query naar de db sturen waarin je het totaal opvraagt. aan te raden bij een groot aantal records, of stel je voor dat je in je query paging wil inbouwen. dan kun je je totaal hiervan onafhankelijk maken


btw.. moet je prijs niet tussen quotes zetten in $disp_tabel[prijs]?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
nescafe schreef op 12 juni 2004 @ 09:44:
hoewel niet mijn favo-oplossingen toch even naast mog. 1 & 2 zetten:

Mogelijkheid 3:
boven de tabel een (lege) div plaatsen en deze onder de tabel vullen m.b.v. javascript
-of-
onder de tabel een div plaatsen en deze boven de tabel positioneren

deze oplossing kan voor de webserver vriendelijker zijn, op de client zul je helaas merken dat het totaal later verschijnt

mogelijkheid 4:
een extra query naar de db sturen waarin je het totaal opvraagt. aan te raden bij een groot aantal records, of stel je voor dat je in je query paging wil inbouwen. dan kun je je totaal hiervan onafhankelijk maken


btw.. moet je prijs niet tussen quotes zetten in $disp_tabel[prijs]?
Zonder quotes werkt het ook prima :)

Ok, ik wil geen javascript enzo gaan gebruiken, zo'n div zal ik eens naar kijken, maar eigenlijk is het een beetje tweaken aan de output. Is er nog een mogelijkheid om al de output van de rij-en die ik genereer in een variabele achter elkaar te stampen? Moet kunnen denk ik, even kijken hoe dat ging... :)

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Zonder quotes werkt het ook prima
Als je error reporting gewoon aan zet krijg je een notice wegens slecht programmeer gedrag. :)

Kun je niet eens een linkje geven waar we kunnen zien hoe en waarom je dit wilt toepassen? Misschien is er namelijk wel een hele andere denkwijze mogelijk.

Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Een stukje van m'n code wil ik wel laten zien:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Kopjes bovenaan tabel met links om te sorteren
    echo "<tr bgcolor=\"#DFDFFF\">
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=ID\">ID: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=servernummer\">Srv#: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=voornaam\">Naam: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=clannaam\">Clan naam: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=mail\">Mail: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=servertype\">Type: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=gametype\">Game: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=prijs\">Prijs: $prijs_totaal </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=accesslevel\">AL: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=datum_activatie\">B binnen: </a></strong></td>
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=betaald\">Betaald: </a></strong></td>
    <td><strong>Restart/Stop</strong></td>
    </tr>
    <tr bgcolor=\"#DFDFFF\">
    <td colspan=\"12\">&nbsp;</td>
    </tr>";
    
    
    // Nu alleen nog steeds die functie uitvoeren, en letten op het accesslevel         
    while($disp_tabel = mysql_fetch_array($query)){
                
            
        // Bepalen of alleen uitgeschakelde of juist alleen ingeschakelde gebruikers moeten worden weergegeven
        if(($_GET['disp'] == "uitgeschakeld")){
            if($disp_tabel[accesslevel] == 10) {
                echo "<tr bgcolor=\"".$achtergrond."\">     
                <td>$disp_tabel[ID]</td>
                <td>$disp_tabel[servernummer]</td>
                <td><a href=\"".$page_zelf."&actie=edit_id&id=$disp_tabel[ID]\">$disp_tabel[voornaam] $disp_tabel[achternaam]</a></td>
                <td><a href=\"$disp_tabel[clannsite]\">$disp_tabel[clannaam]</a></td>
                <td><a href=\"mailto:$disp_tabel[mail]\">[img]\"mail.gif\"[/img]</a></td>
                <td>$disp_tabel[servertype]</td>
                <td>$disp_tabel[gametype]</td>
                <td>$disp_tabel[prijs]</td>
                <td>$disp_tabel[accesslevel]</td>
                <td>$betaling_binnen</td>
                <td>-</td>              
                <td><a href=\"".$page_zelf."&actie=view_table&sorteer=voornaam&servernummer=".$disp_tabel[servernummer]."&server=restart&gametype=".$disp_tabel[gametype]."&gameid=".$disp_tabel[gameid]."\">[img]\"herstart_klein.GIF\"[/img]</a> 
                    <a href=\"".$page_zelf."&actie=view_table&sorteer=voornaam&servernummer=".$disp_tabel[servernummer]."&server=stop&gametype=".$disp_tabel[gametype]."&gameid=".$disp_tabel[gameid]."\">[img]\"off_klein.GIF\"[/img]</a></td>
                </tr>";
            }
        } else {
            if($disp_tabel[accesslevel] != 10) {
                
                // even spelen met totale prijs hieronder
                $prijs_totaal = $disp_tabel[prijs] + $prijs_totaal; 
                
                echo "<tr bgcolor=\"".$achtergrond."\">     
                <td>$disp_tabel[ID]</td>
                <td>$disp_tabel[servernummer]</td>
                <td><a href=\"".$page_zelf."&actie=edit_id&id=$disp_tabel[ID]\">$disp_tabel[voornaam] $disp_tabel[achternaam]</a></td>
                <td><a href=\"$disp_tabel[clannsite]\">$disp_tabel[clannaam]</a></td>
                <td><a href=\"mailto:$disp_tabel[mail]\">[img]\"mail.gif\"[/img]</a></td>
                <td>$disp_tabel[servertype]</td>
                <td>$disp_tabel[gametype]</td>
                <td>$disp_tabel[prijs]</td>
                <td>$disp_tabel[accesslevel]</td>
                <td>$betaling_binnen</td>
                <td>-</td>              
                <td><a href=\"".$page_zelf."&actie=view_table&sorteer=voornaam&servernummer=".$disp_tabel[servernummer]."&server=restart&gametype=".$disp_tabel[gametype]."&gameid=".$disp_tabel[gameid]."\">[img]\"herstart_klein.GIF\"[/img]</a> 
                    <a href=\"".$page_zelf."&actie=view_table&sorteer=voornaam&servernummer=".$disp_tabel[servernummer]."&server=stop&gametype=".$disp_tabel[gametype]."&gameid=".$disp_tabel[gameid]."\">[img]\"off_klein.GIF\"[/img]</a></td>
                </tr>";
            }
        }
    }
    echo "</table>"; 
    echo $prijs_totaal;
    mysql_close();


Dit is niet de complete code, er missen een hoop variabelen dus. Meer voor het idee!

Het gaat dus om $prijstotaal die ik graag in het kopje al wil weergeven :)

edit:

Ik ga straks even error reporting aanzetten. Ik zie fouten, dus dacht het zit wel goed.. :P

[ Voor 28% gewijzigd door pierre-oord op 12-06-2004 17:50 ]


Acties:
  • 0 Henk 'm!

  • slm
  • Registratie: Januari 2003
  • Laatst online: 12-11-2023

slm

Dan zet je aan het eind van het script pas de header rij:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
echo "<thead><tr bgcolor=\"#DFDFFF\"> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=ID\">ID: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=servernummer\">Srv#: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=voornaam\">Naam: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=clannaam\">Clan naam: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=mail\">Mail: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=servertype\">Type: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=gametype\">Game: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=prijs\">Prijs: $prijs_totaal </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=accesslevel\">AL: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=datum_activatie\">B binnen: </a></strong></td> 
    <td><strong><a href=\"".$page_zelf."&actie=view_table&sorteer=betaald\">Betaald: $prijstotaal </a></strong></td> 
    <td><strong>Restart/Stop</strong></td> 
    </tr> 
    <tr bgcolor=\"#DFDFFF\"> 
    <td colspan=\"12\">&nbsp;</td> 
    </tr></thead>";

[ Voor 34% gewijzigd door slm op 12-06-2004 17:55 ]

To study and not think is a waste. To think and not study is dangerous.


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
mm, die functie thead ken ik helemaal niet, ik ga er eens naar kijken, bedankt :D
Pagina: 1